OpenGL 4.0+ ABuffer V2.0: Linked lists of fragment pages

The main problem with my first ABuffer implementation (cf. my previous post) was that a fixed maximum number of fragments per pixel has to be allocated at initialization time. With this approach, the size of the ABuffer can quickly become very large when the screen resolution and depth complexity of the scene increase.



(continue reading…)


Fast and Accurate Single-Pass A-Buffer using OpenGL 4.0+

One of the first thing I wanted do try on the GF100 was the new NVIDIA extensions that allows random access read/write and atomic operations into global memory and textures, to implement a fast A-Buffer !

It worked pretty well since it provides something like a 1.5x speedup over the fastest previous approach (at least I know about !), with zero artifact and supporting arbitrary number of layers with a single geometry pass. 



(continue reading…)


The Froggy FragSniffer

For today GPU generation, we know a lot more about the hardware mechanism than for previous GPU generation, in particular thanks to the window open on this hardware by Cuda. But many hardware details are still hidden to the programmer, in particular mechanisms used for primitives rasterisation and fragments shading. As understanding how fragments are scheduled among the G80 processing units is a critical points for the research we do with Fabrice Neyret as part of my PhD, I wrote a small program allowing to investigate this point.

The probing tool I wrote is called The Froggy FragSniffer and can be downloaded here (see Readme for details):http://www.icare3d.org/FragSniffer/FragSniffer_0.2.zip

We also wrote a document that presents our motivations for this work, the experiments we made yet and the results and answers we get: http://www.icare3d.org/GPU/CN08

We hope this document will give you useful informations. We don’t want it to be closed and we want to make it evolve through new experiments and also thanks to exterior comments you can leave at the bottom of this page.


Real-time GPU Ray-Tracer

CornellJungle2

This is the final version of a RayTracer project developed in 2007 with Adeline Pihuit during our master thesis. It is composed of a fast real-time GPU raytracer developed using OpenGL and Cg that can run on a GeForce 6 (NV40, SM3.0) class GPU, and an off-line CPU recursive raytracer that can be used to compute reference images.

The application load scenes described in XML files and allows manipulating light sources and debugging individual rays.

Keys:

  • Load a scene (.scn) file : ‘l’
  • Manipulate light source : ’3′ to select the light to manipulate, then CTRL+RIGHT-CLICK to move the light
  • Display helpers (lights, cameras, paths…): ’7′
  • Render static image with CPU ray-tracer: ‘d’
  • For other keys, display the help window: ‘h’

(continue reading…)


OpenGL Geometry Shader Marching Cubes

geomshadertut1

Two months ago was introduced the G80 and the set of OpenGL extensions allowing access to all of its new functionalities (cf. my posts on G80 architecture and OpenGL extensions, it is in French but can be translated with the British flag button on top left. You can also refer to http://www.g-truc.net/ that also provides a good analysis on G80 OpenGL extensions in french). Among them are GPU Shaders model 4 and the new Geometry Shader they introduce.

For the first time, on-GPU dynamic generation of geometric primitives becomes possible.  But till now, very few examples and tutorials on theses functionalities are available. The only tutorial I have been able to find is the one from

, it’s a good start but unfortunately its source code is unavailable.

This simple example will show how to use GLSL Geometry Shaders (EXT_geometry_shader4 and EXT_gpu_shader4) and the new integer texture formats (EXT_texture_integer) extensions to implement the Marching Cubes algorithm entirely on the GPU. The implementation I will present is probably not the most efficient but I think it is a good example, showing the usage of the new shader stage, new texture formats and binary operations within shader.

(continue reading…)


Automates Cellulaires

shot_wincdlmqt
C’est un projet réalisé en fin de première année d’IUT sur lequel je suis retombé récemment. Il s’agissait à la base d’implémenter une série d’automates cellulaires en C++ et QT. J’avais en fait développé tout un framework de simulation et d’interfaces graphiques génériques et multi-plateforme que j’avais utilisé pour implémenter 4 automates cellulaires différents dont une simulation d’écho-système Herbe/ Lapins/ Renards assez intéressante.

 

 

(continue reading…)


Raytracer GPU

gpurt5
Projet de moteur de rendu par lancer de rayons totalement GPU que je suis en train de développer. L’ensemble de la simulation est effectuée dans un programme de traitement de fragments.

Voici un exemple de rendu obtenu sur une scene composée de 4 sphères à une vitesse de presque 100 FPS avec 3 niveaux de récursivités pour le calcul des réflections, un calcul d’ombres et un éclairage de Phong.

Cette démo nécessite une GeForce 6 minimum.

(continue reading…)


Tri Parallele FlowVR

capturepsfvr1
Petite application éducative réalisée pour le LIFO à l’occasion de la fête de la science 2006. Il s’agissait de montrer aux plus jeunes l’intéret de la distribution de calculs sur une grappe de PC pour d’une application 3D interactive. La mise en oeuvre d’un tri parallèle est illustrée au travers du classement de composants chimiques présents dans une solution.

L’application a été réalisée en collaboration avec Sylvain Jubertie et utilise la bibliothèque FlowVR développée par le LIFO et le laboratoire ID de l’IMAG (INRIA)

Package source de l’application (nécessite FlowVR, CG 1.5 et glew):


Rendu de Fractales 3D

volfract1Démo de calcul et de visualisation de fractales 3D générées à partir de Quaternions. Cette démo utilise un moteur de rendu volumique temps réel que j’ai développé. Elle nécessite une carte 3D compatible avec les shaders 1.3 (GeForce 3).

Executable:

zip fractal3d 10/09/2006,15:49 706.78 Kb

Code source (Under GPL license):

zip VolRenderFractal.zip

 

 


Rendu de pelage

Démo OpenGL + Cg d’une méthode temps réel de rendu de pelage.
lapin

Le principe de cette méthode est de simuler l’interaction du pelage avec la lumière sur une succession de couches accumulées autour de l’objet à habiller. Les couches sont générées par projection du maillage à habiller le long de ses normales dans un vertex program.

Le pelage est créé de manière procédurale sur une texture 2D représentant un champ de hauteur (points aléatoires denses + lissage). Cette texture est ensuite utilisée pour chaque couche dans un fragment program afin déterminer ou non la présence d’un poil en fonction de la hauteur (distance au modèle) de la couche courante.  Le couleur finale de chaque fragment est ainsi générée à partir de la couleur globale du pelage.

La démo effectue également l’animation par key-frames d’un modèle MD3 avec interpolation des mouvements dans le vertex program.

(continue reading…)


Simulation de fluides

fluid6.jpg
Simulation de fluides "physically based" (équations de Navier-Stockes) basée sur le travail de Jos Stam réalisée en collaboration avec Sylvain Jubertie. Visualisation OpenGL basée sur des point sprites.

Démo:

Fluid.zip Fluid.zip (270.76 KB) 


Copyright © 2006-2012 Icare3D. All rights reserved.
Icare3D 2.0 theme, based on Jarrah theme by Templates Next | Powered by WordPress