Ensembles de Julia calculés en temps réel par GPU

Retrouvé par hasard un travail très intéressant de Keenan Crane (dont on a déjà parlé ici) datant de 2005 sur cette page et dans cet article. Il s’agit d’un véritable tutoriel sur le ray-tracing en temps réel d’un objet mathématique particulier, l’ensemble de Julia, le tout calculé sur un GPU. Comme le dit Keenan, il y a deux problèmes avec l’ensemble de Julia:

  1. il prend des siècles à calculer
  2. il est totalement inutile

mais il est très beau, comme on le voit sur ces captures :

En fait, l’ensemble de Julia est un objet à 4 dimensions que l’on visualise par « tranche en 3 dimensions ». En coupant une tranche en 2 dimensions dans une direction particulière, on obtient d’ailleurs l’ensemble de Mandelbrot plus connu, que Demoniak3D calcule sur GPU de façon spectaculaire.

Un exécutable avec son code source sont disponible sur la page « Ray Tracing Quaternion Julia Sets on the GPU » de Keenan Crane. Il utilise

Le problème, c’est que ce dernier code n’a plus l’air de fonctionner avec le tout récent Cg 2.0… Avant que je m’attaque à porter tout ceci en GLSL + LUa sur Demoniak 3D, est-ce que quelqu’un qui connait le Cg pourrait me dire ce qui cloche, voire corriger la version actuelle ?

Publicités

Caustiques en temps réel

A peine avais-je terminé le post précédent qui présentait des textures de caustiques que je suis tombé sur un post de Level of Detail intitulé « Caustics Mapping: An Image-space Technique for Real-time Caustics » qui présente une nouvelle méthode permettant de calculer des caustiques en temps réel sur un GPU dur à Musawir A. Shah et Sumanta Pattanaik, de l’University of Central Florida.

La page Caustics Mapping: An Image-space Technique for Real-time Caustics présente leurs résultats, qui sont impressionnants car leur méthode permet même de tenir compte de la réfraction de la lumière avec un framerate très acceptable sur une vieille GeForce 6800 :

Je n’ai pas encore lu en détail leur article, mais l’idée de base est de calculer la texture de la caustique sur un principe simulaire au « shadow mapping », en déterminant le point d’arrivée sur la texture d’un rayon passant par chaque vertex du modèle. L’utilisation d’un algorithme itératif de Newton-Raphson permet d’éviter de faire du véritable « ray-tracing », opération peu adaptée au GPU, et d’atteindre des résultats qualitativement très acceptables en temps réel.

Bien envie de m’attaquer à ça avec Demoniak 3D …

Calendrier CGArena

CGArena offre des fond d’écran + calendrier 2008 d’images virtuelles magnifiques.

J’ai choisi celle-ci pour janvier (février, mars …)

 

elfe.png

Non, non, ce n’est pas une vraie femme… C’est une oeuvre de Soa Lee (www.soanala.com) , une artiste coréenne qui fait des personnages féminins magnifiques, à mon humble avis. Pas vraiment le même style que JeGX donc, mais merci pour le link 😉

Jos Stam : Physique, Maya Nucleus et Caustiques

Dans « The Software That Will Take Digital F/X to the Next Level of Awesome » Michael Behar de Wired dresse le portrait de Jos Stam, chercheur formé à l’Université de Genève et développeur de modules de physique Maya chez Alias/Autodesk.

Son module nCloth est le premier basé sur le framework Nucleus et permet de calculer les mouvements réalistes de textiles dans Maya 8.5 comme dans ce joli exemple:

Comme Ron Fedkiv dont j’ai parlé ici, Jos s’intéresse aussi à la simulation de fluides et parvient à des résultats très encourageants:

Malheureusement, Jos ne maintient pas trop sa page perso, ce qui fait qu’on trouve beaucoup moins de matériel sur son travail que sur celui de Ron Fedkiv.

caus1.gifSa page sur les caustiques est par contre bien détaillée et très utile à ceux qui veulent simuler une surface d’eau vite fait bien fait car elle offre 8 ensembles de 32 textures périodiques 512×512 permettant de réaliser des caustiques animées comme ci-contre

A part ça, je me retrouve bien dans cette phrase de Jos Stam: « I started coding just for the beauty of it. »

Hyperion 3D devient Demoniak 3D

demoniak3d_300x300.jpg Suite à une sombre histoire, Hyperion3D s’appelle dorénavant Demoniak 3D.

JegX nous a pondu à la vitesse de la lumière une version 1.17 en renommant tout sur son passage.

En passant, bravo à Steph3D pour le logo.

 

 

La Recherche en Simulation Physique

Ron Fedkiw est chercheur et professeur à Stanford et sa page regorge de vidéos extraordinaires sur ses sujets de recherche en simulation physique et 3D, qui donnent une petite idée de ce qui sera possible de faire en temps réel dans quelques années (ou mois).

Une de ses spécialités est l’interaction de solides, de fluides et de gaz, comme par exemple dans sa « réaction chimique » :

Il y a également plusieurs exemples spectaculaires de mécanique des fluides, comme le phare :

Une impressionnante liste de publications au format .pdf ou .ps est disponible au bas de la page pour tous les détails mathématiques …

Crysis : le top !

Crysis est la nouvelle référence des jeux PC genre « FPS ». Outre un scénario haletant à la Half-life, y compris passage dans un monde parallèle digne d’Alien, Crysis est un chef-d’œuvre graphique exploitant au maximum les possibilités des cartes graphiques modernes.

JeGX montre tout cela sur 50 Screenshots magnifiques dont ceux-ci:

admirez le paysage. Les plantes ondulent doucement dans le vent …

ça donne envie de piquer une tête, non ?

le souci du détail est omniprésent

Evidemment, pour profiter à 80% de cette qualité graphique, il faut un PC haut de gamme récent. En fait si on a une bécane de 3 ans ou plus, Crysis est peut-être une bonne raison d’en changer …

Portal, le jeu hyperspécial

Noël approche, et les jeux qui:

 

  1. ne sont pas trop idiots
  2. ne demandent pas des PC flambant neufs avec cartes graphiques d’enfer

ne seront pas légion. J’en ai déjà trouvé un : Portal

 

 

Portal est un jeu de plates-formes en 3D, ou plutôt un jeu de casse-tête en 4 dimensions basé sur une idée toute bête : à l’aide d’un engin futuriste, on peut percer des trous dans l’hyper-espace, en créant un portail entre deux lieux distincts du décor.

 

Ca permet évidemment de passer certains obstacles directement, mais aussi de faire plein de choses amusantes permettant de passer chacun des 19 tableaux.

Le moyen le plus simple, le plus rapide et le (presque) moins cher de vous le procurer est d’utiliser la plateforme Steam.

La montée en puissance des GPUs

Dans les ordinateurs vendus depuis 2003 environ, le microprocesseur (CPU) fourni par Intel ou AMD n’est plus le composant le plus puissant, et souvent plus le plus couteux non plus. Désormais c’est le GPU, le Graphics Processing Unit, qui détermine largement la puissance d’un PC. Strictement limités au graphisme il y a peu, ces processeurs sont désormais capables d’effectuer certains calculs nettement plus vite que les processeurs classiques. Actuellement, la puissance de calcul du G80 de nVidia est 5 à 6 fois supérieure à celle du Core 2 Duo d’Intel, voire plus (1, 2).

img0019319.jpg
puissance de calcul des GPU et CPU (source : BeHardware)

Conséquence immédiate :

Si vous achetez un ordinateur pour y faire fonctionner les applications les plus exigeantes, c’est-à-dire les jeux vidéo, il faut faire plus attention au choix du GPU qu’au CPU. Vous ne gagnerez que quelques pourcents de performance avec un CPU plus rapide qui vous coûtera quelques centaines de francs, alors que la même somme investie dans une carte graphique basée sur un GPU plus récent ou puissant peut doubler le nombre d’images / seconde (fps) de vos applications favorites.

Un peu d’architecture des processeurs

Read more »

Flower Power Demo

C’est un peu long à expliquer pourquoi, mais Thierry a suggéré de faire pousser des tulipes avec Hyperion… Je me suis attaqué à une petite démo en partant du code sample 84 qui fait bouger de l’herbe avec un shader GLSL, le but étant de faire balancer les tulipes dans le vent virtuel aussi plus tard.

Voilà où ça en est pour l’instant:

L’idée de base pour faire pousser une fleur est de manipuler l’échelle d’un modèle 3D de la tulipe en temps réel. Dans une première phase on fait pousser la fleur en hauteur avec

HYP_Object.SetScale(tulip,h/3,h,h/3)

puis on fait éclore la tulipe en agissant sur les facteurs d’échelle x et z. Le paragraphe suivant présente une manière élégante de faire ceci tout en traitant le cas de nombreuses fleurs.

En effet, la difficulté essentielle consiste à faire pousser les fleurs « presque » en même temps, « presque » à la même vitesse, « presque » à la même hauteur et « presque » verticalement, puis à les faire « presque » éclore en même temps.

Pour faire ceci, j’ai développé une petite librairie d’animation en LUA dont je suis très fier, car elle permet de faire de très nombreuses autres choses, pour ne pas dire tout ! (et encore, je suis modeste…)

Animate

Read more »