Effets atmosphériques dans le Cry engine.

C'est un court rapport de la présentation que Crytek a fait au Siggraph 2006 à Boston. Elle était concentrée sur les effets atmosphériques utilisés dans le Cry engine 2. Plus de détails après la coupure.

Effets atmostphériques


Le cours s'est concentré sur les effets atmosphériques et pas du tout sur le reste (physique, motion blur, depth of field, éclairage, ombres, etc, n'ont pas du tout été approchés).

Sont inclus dans les effets atmosphériques, le modèle du ciel, le brouillard global, le brouillard local (volumétrique), les nuages, les effets de fumée, les effets de lumière volumétrique, et les cours d'eau (rivières).


Depth pass


Quasiment tous ces effets reposent sur une prépasse qui remplit un buffer avec les valeurs de la distance au far plane. Ce n'est pas exactement le z-buffer, tout d'abord parce que l'échelle n'est pas la même, et ensuite parce que le format de stockage du zbuffer est opaque et n'est le plus souvent plus difficilement exploitable directement par le pixel shader. Cette prépasse n'inclut que les objets opaques, les objets translucides sont problématiques et seront traités à part. Le format de stockage est soit un format 32 bits flottant (R32F), soit un format ARGB avec codage/décodage dans le pixel shader.


Rendu du ciel


Contrairement à Far Cry où le ciel est peint dans une skybox, le ciel dans le prochain cry engine est calculé en temps réel. Plutot que de tout calculer avec grande précision, les valeurs sont calculès dans une mesh faible rèsolution et interpolèe (au format HDR), le calcul a lieu sur le CPU pour avoir une plus grande flexibilité sur les plateformes qui ne supportent pas des shaders avancés (la plateforme minimum du prochain Cry engine possède une carte graphique avec shader model 2.0). La version D3D10 sera probablement calculée sur le GPU (les GPUs ne devraient avoir aucun problème avec les maths du modèle atmosphérique).

Crysis - rendu atmosphérique et rendu du ciel avec god rays (lumières divines)

Le modèle en question est une version très simplifièe de Nishita et Al. Les simplifications consistent à considérer que le ciel est à l'infini et que l'observateur est coincé au sol. De plus le brouillard et les nuages sont calculés à part, le modéle de scattering original étant beaucoup trop complexe pour un résultat en temps réel.

Le soleil n'est également pas inclu dans le modèle. L'un des problèmes est la faible résolution du mesh du ciel qui provoquerait des artefacts à proximité du soleil. Il est beaucoup plus facile d'ajouter le disque solaire et les effets de flares à part.


Brouillard global


Plutôt que de calculer le brouillard avec le brouillard hardware (qui de toute façon disparait avec le shader model 3), le brouillard dans le prochain cry engine est ajouté dans une passe à part avec un quad étiré sur tout l'écran. La source du pixel shader est la profondeur calculée dans la prépasse. Avec les coordonnées X et Y sur l'écran et de la profondeur retrouvée depuis la texture intermédiaire il est donc possible de retrouver les coordonnées du point courant.

Une formule relativement simple tenant compte de la profondeur et de la hauteur permet donc d'avoir un brouillard proche de ce qui existe dans la nature.

Les cours d'eau comme les rivières bénéficient d'un effet d'attenuation qui utilise une technique similaire à celle du brouillard global.


Brouillard volumétrique local


Des passes ultérieures permettent d'ajouter un nombre arbitraire de volumes de brouillard. Pour des raisons de simplicité du calcul de collision, les seules primitives supportées dans le pixel shader sont des boites et des ellipses. Cela devrait suffire pour un certain nombre d'effets volumétriques.


Nuages


La lumière du soleil qui traverse le nuage génère un petit peu de subsurface scattering. Plutot que de simuler cela ce qui serait prohibitif une méthode visuelle avec une carte d'épaisseur est utilisée (la référence citée étant les nuages de Fligh Simulator 2004 par Niniane Wang).


Soft particles


Les effets de fumées et les nuages sont des billboards comme d'habitude, mais avec un trick pour éviter le problème de l'intersection "dure" avec les objets du décor. En réutilisant la source de la prépasse de profondeur il est possible d'évaluer la distance à la surface et donc d'utiliser un "soft clipping" en utilisant un facteur d'attenuation qui approche de zéro plus on approche de la surface.


Problèmes


Comme on dit chez nous, il n'y a pas de "free lunch", l'un des problèmes de la méthode de rendu avec des quads et en utilisant une texture de profondeur comme intermédiaire et que cela ne marche pas très bien avec l'antialiasing. Cela devrait être amélioré avec D3D10, mais en attendant cela risque de provoquer des artefacts aux frontières des objets (si quelqu'un se souvient des premiers écrans de Crysis, il y avait des commentaires comme quoi les screens étaient photoshopés, ce qui est évidemment faux mais cette impression était causé par le brouillard volumétrique ajouté à la fin et qui donnait l'impression de ne pas "coller" aux éléments du décor comme les lignes électriques etc.)

L'un des autres problèmes est les objets translucides ou semi transparents. Comme la passe de profondeur ne peut stocker qu'une seule profondeur, toute superposition d'objets ne peut pas être traitée avec cette méthode. Les objets avec blending sont donc tracés à part avec une estimation par objet de la valeur du brouillard à la position de l'objet. Bien entendu cela ne marche pas bien si l'objet translucide est trop grand et couvre un intervalle de brouillard trop important. Cela nécessite une bonne collaboration de la part des artistes pour ne pas placer de tels objets dans les niveaux..


Rendu HDR


Le rendu HDR sera utilisé sur toutes les plateformes qui le supportent. Par ailleurs, une vidéo HDR avait été encodée durant le Siggraph et rejouée sur l'écran d'affichage HDR par Brightside sur leur stand. L'affichage HDR était assez impressionnant avec des zones noires très profondes et des blancs suffisamment clairs pour éblouir.

C'était un résumé d'après mes notes du Siggraph 2006. Notez que la présentation originale est disponible (en anglais) sur le site d'AMD ici : Siggraph course PPT


Sites partenaires : LEGREG | GRAPHICS | GRAPHISME | PHOTOGRAPHY | OUT OF MY MIND | ANIMATION MENTOR | GREEN LIVING | VOXEL | RAY TRACING | DEALS | Add this page rank counter to your page.