(continue reading…)
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.
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):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: Understanding G80 behavior
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.
Here is a simple personal redesign of the OpenGL logo I have made for fun. It can be used as a wallpaper for OpenGL fans (who said the most seriously affected ones ?).
If you have suggestions to complete it don’t hesitate đ
NOTE: OpenGLÂź and the oval logo are trademarks or registered trademarks of Silicon Graphics, Inc.
Petite animation que j’ai rĂ©alisĂ© pour les journĂ©es nationales des IUP MIAGE qui se dĂ©roulent cette annĂ©e Ă OrlĂ©ans. L’idĂ©e Ă©tait de crĂ©er un jingle animĂ© un peu Ă la façon des transitions de pubs. Un petit coup de main Ă mes amis du LIFO đ
Plus d’infos sur les JNM 2007 ici.
VidĂ©o (DivX 6, 800×600) :
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:
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 Xie Yongming, 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.
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.
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.
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):
 parallelsortfvr5 15/10/2006,11:13 681.00 Kb
J’ai effectuĂ© mon stage de fin d’Ă©tudes d’ingĂ©nieur Ă Dassault Systemes, dans le service recherche et innovation sur un sujet mĂȘlant simulation et visualisation 3D temps rĂ©el. Je ne peux malheureusement pas donnĂ© plus de dĂ©tail ni mettre ici des images pour des raisons de politique interne de l’entreprise. Sachez en tout cas que ca a Ă©tĂ© une trĂšs bonne expĂ©rience et que j’y ai fait des choses bien sympa dans le domaine de l’animation de phĂ©nomĂšnes fluides đ
Le laboratoire SeT (SystĂšmes et Transports) de lâUTBM dispose dâune plateforme de rĂ©alitĂ© virtuelle composĂ©e dâun Ă©cran pour la vision stĂ©rĂ©oscopique ainsi que dâun systĂšme de pĂ©riphĂ©riques de tracking pour le dĂ©placement et les interactions dans lâenvironnement. Cette plate forme est utilisĂ©e comme outil dâaide Ă la dĂ©cision, dâamĂ©nagement du territoire ou encore de simulation de systĂšmes de transport ou de flux dâindividus. Ces applications sont actuellement dĂ©veloppĂ©es et mises en oeuvre sur la plateforme Ă lâaide de Virtools.
J’ai effectuĂ© mon stage de deuxiĂšme annĂ©e d”ingĂ©nieur (ST40 dans le jargon UTBM) au CEA-DAM de Bruyeres le chatel sur un sujet de visualisation scientifique et de parallĂ©lisme.
« Rendu volumique accéléré matériellement en environnement parallÚle à mémoire distribuée ».
Nous avons menĂ© ce projet dans le cadre des UV IA54 (SystĂšmes multi-agents) et IN54 (Reconnaissance de formes) de l’UTBM. Il sâinscrit dans l’optique de ces cours et des recherches menĂ©es dans le laboratoire SeT de l’Ă©cole concernant la dĂ©tection dâobstacles Ă lâavant dâun vĂ©hicule intelligent par vision stĂ©rĂ©oscopique. Notre travail sâest focalisĂ© plus particuliĂšrement sur lâalgorithme de mise en correspondance au coeur de la vision stĂ©rĂ©oscopique permettant de reconstituer la profondeur dâune scĂšne observĂ©e. En liaison avec le cours dâIA54, notre travail a consistĂ© Ă concevoir, dĂ©velopper et expĂ©rimenter une approche nouvelle de ce problĂšme basĂ©e sur une mĂ©thode multi-agents couplĂ©e Ă un pipeline de traitement d’images GPU.
Dans le cadre de l’obtention du DUT Informatique, les Ă©tudiants doivent effectuer un stage d’une durĂ©e de 9 semaines afin de mettre en pratique les compĂ©tences acquises au cours des deux ans de formation Ă l’IUT. J’ai effectuĂ© ce stage au LIFO, le Laboratoire d’Informatique Fondamentale d’OrlĂ©ans, oĂč j’ai intĂ©grĂ© l’Ă©quipe de recherche sur la RĂ©alitĂ© Virtuelle.
« DĂ©veloppement d’un dĂ©monstrateur de RĂ©alitĂ© Virtuelle sur cluster de PC ».
Lâobjectif global de ce projet Ă©tait de mettre en oeuvre une visualisation de terrains dĂ©finis Ă partir de cartes de hauteur (height map). Il sâagit en effet du moyen le plus courant pour dĂ©finir un terrain gĂ©ographique. Le but Ă©tait de pouvoir rĂ©aliser cette visualisation en temps rĂ©el sur de vastes Ă©tendues de terrain extrĂȘmement dĂ©taillĂ©es.
La technique que nous avons adoptĂ©e et mise en oeuvre dans ce projet sâappelle “Geometrical Mipmapping” et a Ă©tĂ© introduite en 2000 par Willem H. Boer [DeBoer00]. Nous avons adaptĂ© cette technique pour en rĂ©aliser une mise en oeuvre optimale et totalement accĂ©lĂ©rĂ©e sur matĂ©riel graphique. Nous avons Ă©galement dĂ©veloppĂ© un mĂ©canisme efficace de partitionnement de l’espace et de chargement dynamique de donnĂ©es et avons Ă©galement Ă©tendu l’algorithme avec un mĂ©canisme de GĂ©omorphing matĂ©riel.
Il sâagit du projet dâapplication dâune UV de 2iĂšme annĂ©e sur les systĂšmes embarquĂ©s et temps rĂ©els. Le but Ă©tait de rĂ©aliser un jeu du Tic Tac Toe (morpion) sur plateforme mobile J2ME permettant Ă 2 joueurs de sâafronter via une communication Bluetooth. Nous avons fait le choix avec BĂ©atrice Frey de le faire en 3D via lâAPI mobile 3D.
Rapport de projet:
 Rapport LO52 Frey Crassin.pdf (527.20 KB)
Package contenant les sources du projet:
Les TX sont des UVs spĂ©ciales Ă l’UTBM, elles consistent en la rĂ©alisation d’un projet d’envergure au sein d’un laboratoire de recherche de l’Ă©cole. Cette TX s’inscrivait dans un vaste projet de simulation de transport hurbain destinĂ© Ă permetre la visualisation et l’estimation de l’impact de l’implantation d’un transport en commun en site propre dans la rĂ©gion de MontbĂ©liard. Ce travail a Ă©tĂ© rĂ©alisĂ© avec Sylvain Juge au sein du laboratoire SeT et nous avons mis en oeuvre une simulation de flux de vĂ©hicules destinĂ©e Ă ĂȘtre intĂ©grĂ©e dans une simulation 3D temps rĂ©el.
Rapport de projet:
Le but de ce projet Ă©tait de mettre en application le cours dâoptimisation et de recherche opĂ©rationnelle en crĂ©ant un programme permettant la rĂ©solution du problĂšme de pavage du plan, en utilisant un algorithme gĂ©nĂ©tique (ou Ă©volutionniste).
Projet réalisé avec deux autres étudiants : Sylvain Juge et Régis Vogel.
Rapport de projet:
Lâobjectif de ce projet Ă©tait de simuler le comportement dâun ensemble de fourmis dans un contexte compĂ©titif sur un terrain parsemĂ© de nourriture et dâobstacles. Le but principal Ă©tait de concevoir une architecture objet propre et suffisament abstraite pour ĂȘtre rĂ©utilisable dans des projets futurs. Il a Ă©tĂ© rĂ©alisĂ© en Java avec affichage 3D OpenGL via lâAPI GL4JAVA.
Projet réalisé avec Béatrice Frey.
Rapport de projet:
Projet dâapplication dâune UV sur les structures de donnĂ©es et TDA. Le but Ă©tait de mettre en oeuvre un algorithme de recherche de chemin optimal dans un labyrinthe en 3D. Il a Ă©tĂ© rĂ©alisĂ© en Java avec reprĂ©sentation graphique en Java 3D.
Ce projet a Ă©tĂ© menĂ© avec BĂ©atrice Frey, une autre Ă©tudiante de lâUTBM.
Rapport de projet:
Il sâagit du projet dâapplication du cours de LISP de lâUV dâIntelligence artificielle de 1ere annĂ©e. Le but Ă©tait de montrer lâusage et les interets de lâutilisation des Quaternions dans un programme en langage LISP. Nous avons fait le choix de montrer les principales applications en infographie pour la manipulation de rotations dans lâespace en couplant LISP et C++ dans 2 programmes utilisant OpenGL pour le rendu graphique.
Le 1er programme permet de comparer lâutilisation des quaternions et des angles dâEuler pour la manipulation dâobjets dans lâespace (Ă©limination du gimbal lock) et le second montre lâavantage des quaternions dans les interpolations de rotation.
Les deux programmes écris en C++ font appel à un noyau de calcul sur les quaternions écrit en LISP via une interface FFI (Foreign Function Interface) proposé par le Common LISP.
Ce projet a Ă©tĂ© rĂ©alisĂ© avec BĂ©atrice Frey une autre Ă©tudiante de lâUTBM.
Rapport de projet:
DĂ©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:
 fractal3d 10/09/2006,15:49 706.78 Kb
Code source (Under GPL license):
DĂ©mo OpenGL + Cg d’une mĂ©thode temps rĂ©el de rendu de pelage.
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.
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: