Changes

Jump to: navigation, search

Fr/Projet Rembrandt

3,691 bytes added, 13:25, 22 September 2012
no edit summary
|}
== Lignes directrices pour les écrits écritures shader ==
=== Uniformes prédéfinis ===
Ces uniformes glsl n'ont pas besoin d'être déclarés dans le fichier effet
{| class="wikitable"
!NameNom
!Type
!PurposeObjectif
|-
|<tt>fg_ViewMatrix</tt>
=== Phase Geometry ===
La phase Geometry est là pour remplir le G-tampon. '''L'ombrage n'intervient pas à cette phase, et le calcul lumière ou brouillard ne doit pas faire partie du shader '''. L'opération requise dans le fragment Shader est de remplir avec une valeur sensible chaque tampon individuel :
{| class="wikitable" style="text-align: center;"
Chaque modèle est par défaut rendu en utilisant l'effet <tt>Effects/model-default</tt>. Cet effet initialise le G-buffer, en ignorant les surfaces transparentes, en mettant alpha test et rendu de toute la geometrie dans la poubelle. Il n'est pas possible de rediriger le rendu vers les bacs transparents lorsque la texture associée a un canal alpha car la plupart des modeles emploient un atlas simple texture et même les parties opaques sont rendues avec texture avec alpha canal.
Si un modèle nécessite des surfaces translucides ou transparentes , these ces objets surface objects need to be assigned a different effect that sets explicitly the render bin to doivent être assignés à un effet différent qui place explicitement le bac rendu à "DepthSortedBin", or sets the rendering hint to ou met la suggestion rendu à "transparent". This tells the renderer to render this object using forward renderingCeci dit au moteur de rendu de rendre cet objet opérant avant le rendu, so lighting and fog need to be enabledainsi, and if a la clarté et le brouillard doivent être activés, et si un programme shader program is usedest utilisé, they should be computed in the classical wayet s'ils ont été calculés en manière classique. The Le <tt>Effects/model-transparent</tt> can be used to register simple transparent/translucent peut être utilisé pour enregistrer simlement les surfacestransparentes/translucides. You assign this effect to an object Vous attribuez cet effet à un objet (or multiple objectsou à de multiples objets) likecomme:
<effect>
<inherits-from>Effects/model-transparent</inherits-from>
</effect>
If opaque surface need to have special effect'''Attention: <Effect> agit seulement sur les objets réels, for example to apply bump mapping, this effect should use the "RenderBin" bin, or the rendering hint set to "opaque", and the G-buffer needs to be initialized correctly in the Geometry stagepas sur des groupes d'objets ou des animations.'''
=== Adding lights to Si la surface opaque a model ===besoin d'un effet spécial, par exemple appliquer un "bump mapping" (effet de relief sur des textures) cet effet devra utiliser le bac "RenderBin", ou le rendu suggéré met à "opaque", et le G-buffer a besoin d'être initialisé correctement dans la phase Geometry.
There are two things to consider: the appearance of the light source and the illuminated area. For the appearance of the light source (what you see when you look at the bulb), you need a model with an emissive material that will produce the glow effect and that is visible at night.=== Soyez sûr que toute la Geometry distribuera l'ombre ===
For the effect of the source on its environment Pour limiter la quantité de rendu geometry dans la carte shadow, et aussi pour réduire les artefacts (the lit areaacnée shadow), we must have in the 3D model (the seulement les faces ne regardant pas le soleil distribuent les ombres.ac file) a volume that includes the effect (Light Volume)Le test est effectué en utilisant l'orientation normale. It can be a large cone for spotlights or a sphere for point lightCela veut dire que les polygones à double côté, ou mesh non fermés, seront transparents à la lumière sous certains angles de soleil. It'Pour éviter ça, les modeleurs peuvent:*s important that the light volume is closed'assurer que l'objet est toujours dans l'ombre d'autres objets,*fermer leur mesh, convex and itou*doubler les polygones avec l's normals are oriented outward.endroit normal à l'opposé
The light volume must be part of the geometry of the model and be referenced in the animation file. No need to add a color or an effect to this volume. Light calculation is only done on the fragments covered by the light volume, but has no influence on the color or the attenuation of the light.=== Ajouts de lumière à un modèle===
All available animations are possible on the light volume, except Deux points sont à considérer: l'apparence de la sourceet la zone illuminée. Pour l'apparence de la source lumière, (ce que vous voyez quand vous regardez le bulbe) vous avez besoin d'un modèle avec un emissive materialqui produira l''' and '''texture'''. It is not possible to change color of lights for the moment, except switching to another animation. Axis and position are in object space and are transformed by the subsequent animationseffet brillant et ceci est visible de nuit.
Pour l'effet de la source dans son environnement (l'aire lumineuse), nous devons avoir dans le modèle 3D (le fichier .ac) un volume qui inclut l'effet (Volume Lumière). Cela peut être un grand cône pour les aires lumineuses ou une spère pour une lumière ponctuelle. Il est important que le volume lumière soit fermé, convexe et les normals orientés vers l'extérieur. Le volume lumière doit être partie de la geometry du modèle et être référencé dans le fichier animation. Pas besoin d'ajouter une couleur ou un effet à ce volume. Le calcul lumière est seulement fait sur les fragments couverts par le volume lumière, mais n'a aucune influence sur la couleur ou l'atténuation de la lumière . Toutes les animations disponibles sont possibles sur le volume lumière sauf '''material''' et '''texture'''. Il n'est pas possible de changer couleur et lumières, pour le moment; sauf en se branchant sur une autre animation. L'axe et la position sont dans l'espace objet et sont transformés par les animations qui suivent. ==== Spotlights Taches lumineuses ====
{|cellpadding=10|
|valign=top|
|valign=top|
{| class="wikitable" cellpadding="3"
!NameNom!PurposeObjectif
|-
|<tt>type</tt>
|Install the Installe l'animation <tt>'''light'''</tt> animation
|-
|<tt>light-type</tt>
|This is a C'est une lumière <tt>'''spot'''</tt> light
|-
|<tt>name</tt>
|Name given to this Nom donné à cette animation
|-
|<tt>object-name</tt>
|Name of the light Nom du volume in the 3d model lumière dans le modèle 3D (typically a cone with an apex at typiquement un cône avec un sommet à <tt>position</tt>, along le long de l'axe <tt>direction</tt> axis if si <tt>cutoff</tt> is lesser than est inférieur à 90 degreesdegrés, or a sphere centered at ou une sphère centrée à <tt>position</tt> if si <tt>cutoff</tt> is greater than est supérieur à 90 degrees degrés )
|-
|<tt>nopreview</tt>
|Hide light Cache le volume in lumière dans fgrun 3d preview
|-
|<tt>position</tt>
|In object spaceDans espace objet, position of the lightde la lumière
|-
|<tt>direction</tt>
|In object spaceDans espace objet, direction to the center of the spotvers le centre de la tache
|-
|<tt>ambient</tt>
|Ambient color of the lightCouleur ambiante de la lumière
|-
|<tt>diffuse</tt>
|Diffuse color of the lightCouleur diffuse de la lumière
|-
|<tt>specular</tt>
|Specular color of the lightCouleur specular de la lumière
|-
|<tt>dim-factor</tt>
|Group of parameters to control a factor that is applied to Groupe de paramètres pour contrôler un facteur appliqué en même temps à ambient, diffuse and et specular at the same time
|-
|<tt>attenuation</tt>
|Three Trois element vector. <c> element is the est le facteur constant factor, <l> element is the linear factor and est le facteur linéaire et <q> element is the quadratic factorest le facteur quadratique.<br />Attenuation of color at de couleur à distance d is est [[File:Spotlight_attenuation.png]]
|-
|<tt>exponent</tt>
|Attenuation is multiplied by multiplié par <tt>pow( dot( lightDir, <direction> ), <exponent> )</tt>, lightDir being étant vector from light position to point, in camera space.
|-
|<tt>cutoff</tt>
|Point is lit by this source if <tt>dot( lightDir, <direction> ) > <cutoff></tt> , lightDir being vector from light vecteur à partir de la position to lumière vers le point, in camera spacedans l'espace caméra.
|-
|<tt>near-m</tt>
|Minimum distance of Distance minimum d'influence, from à partir de la position, in metersen mètres
|-
|<tt>far-m</tt>
|Maximum distance of Distance maximum d'influence, from à partir de la position, in metersen mètres
|}
|}
==== Point lights Points lumineux ====
{|cellpadding=10|
|valign=top|
|valign=top|
{| class="wikitable" cellpadding="3"
!NameNom!PurposeObjectif
|-
|<tt>type</tt>
|Install the Installe l'animation <tt>'''light'''</tt> animation
|-
|<tt>light-type</tt>
|This is a C'est une lumière <tt>'''point'''</tt> light
|-
|<tt>name</tt>
|Name given to this Nom donné à cette animation
|-
|<tt>object-name</tt>
|Name of the light Nom du volume in the 3d model lumière dans le modèle 3D (typically a sphere centered on typiquement une sphère centrée sur <tt>position</tt>, with a radius of avec un rayon de <tt>far-m</tt>)
|-
|<tt>nopreview</tt>
|Hide light volume in Volume lumière cachée dans fgrun 3d preview
|-
|<tt>position</tt>
|In Dans espace object space, position of the lightde la lumière
|-
|<tt>ambient</tt>
|Ambient color of the lightCouleur ambiante de la lumière
|-
|<tt>diffuse</tt>
|Diffuse color of the lightCouleur diffuse de la lumière
|-
|<tt>specular</tt>
|Specular color of the lightCouleur specular de la lumièret
|-
|<tt>dim-factor</tt>
|Group of parameters to control a factor that is applied to Groupe de paramètres pour contrôler un facteur appliqué à ambient, diffuse and et specular at the same timeen même temps
|-
|<tt>attenuation</tt>
|Three Trois element vector. <c> element is the est le facteur constant factor, <l> element is the linear factor and est le facteur linéaire et <q> element is the quadratic factorest le facteur quadratiquer.<br />Attenuation of color at de couleur à distance d is est [[File:Spotlight_attenuation.png]]
|-
|<tt>near-m</tt>
|Minimum distance of Distance minimum d'influence, from à partir de la position, in metersen mètres
|-
|<tt>far-m</tt>
|Maximum distance of Distance maximum d'influence, from à partir de la position, in metersen mètres
|}
|}
==== Considérations de performance et de compatibilité ====Chaque lumière sur écran équivaut, pour le GPU à redessiner le volume lumière avec un shader, sans recueillir de buffer. Ainsi, chaque lumière vient avec un coût, ce qui est minime individuellement parlant, mais non négligeable quand jl y en a beaucoup. Ce coût augmente avec la taille du volume lumière De plus, il est raisonnable de permettre à un modèle de fonctionner avec le moteur de rendu classique qui ne sait rien des lumières et rendrait les volumes lumière comme une autre géométrie. Ainsi, c'est une bonne pratique de compléter chaque animation lumière par une animation sélective vérifiant :*si Rembrandt est activé*si le mode de qualité choisi correspond avec les possibilités de la lumière*si la lumi§re doit être on ou off selon les autres paramètres de la simulation (position du soleil; position de du commutateur, présence de puissance...) Une bonne propriété est de crèer un reflet des préférences de l'utilisateur sur qualité vs performance concernant les lumières, et un curseur dédié est ajouté dans le dialogue shader.[[File:Fgfs-shaders-with-light.jpg|thumb|Light quality slider]]La propriété à utiliser est: /sim/rendering/shaders/lightsLe curseur qualité va de 0 (pas de lumière) à 4 (pleine lumière). Un simple réverbère d'aéroport apparaît à 1. Quelques lampes de pont à 2. Toutes les lampes de pont simples à 3, et les plus sophistiquées à 4 Exemple:<syntaxhighlight lang="xml"><animation> <type>light</type> <light-type>spot</light-type> <name>LightSource</name> <object-name>LightVolume</object-name> ...</animation> <animation> <type>select</type> <!-- Select the named animation --> <object-name>LightSource</object-name> <condition> <and> <!-- Rembrandt enabled ? --> <property>/sim/rendering/rembrandt/enabled</property> <!-- Quality ok ? --> <greater-than> <property>/sim/rendering/shaders/lights</property> <value>3.0</value> </greater-than> <!-- Simulation conditions ? --> <greater-than> <property>/sim/time/sun-angle-rad</property> <value>1.57</value> </greater-than> </and> </condition></animation> </syntaxhighlight> === Tutoriels ===[[User:F-JJTH|F-JJTH]] a compilé son expérience et celle de l'équipe de la PAF d'amélioration d'avions dans {{fr}} [http://equipe-flightgear.forumactif.com/t1034-howto-adapter-un-appareil-pour-rembrandt this tutorial]. == TODO List Liste ==
=== Completed tasks Tâches à compléter ===*Fix Fixer le rendu shadow rendering when using multi threading in quand on emploie plusieurs liens en OSG*Implement Implementer Cascaded Shadow Map (need to be optimized a besoin d'être optimisée - frustum calculation and nightet nuit)*Honor 'noshadow' animation (done)*See what happens with glow in fog Voir ce qui arrive avec brillance dans le brouillard: unknown landclass creates white une sorte de terrain inconnu crée des patches in the blancs dans le buffer emission buffer - scenery generation problemproblème de génération de scène *Test multi-screen écran (mostly done)*Restore Restorer splashscreen*Draw transparent objects with forward rendering Dessiner des objets transparents avec rendu en premier (may need to peut nécessiter la capture the transparent bin from the geometry stage and move it in the display stagedu bac transparence à partir de la phase géométrie et le placer dans la phase affichage) (OK - needs model nécessite une contributionmodèle)*Add spotlights as animations (nearly finished)*find a Trouver une solution for pour couleur ambient and et emissive color of de material (may need an additional peut nécessiter un bufferadditionnel)*Provide a Fournir un shader for transparent objects that could render to the pour objets transparents qui puisse rendre le buffer emissive buffer too infaisable (using en utilisant MRT) not doable. Light pass can't use La phase lumière ne peut utiliser MRT *Use Utiliser un buffer stencil buffer to limit light rangepour limiter la taille lumière (no - done in light non fait dans shaderlumière)**needed for nécessaire pour la lumière de cockpit light to implement fake shadows and avoid lighting the pour réaliser des faux shadowws et éviter d'éclairer le runway from the cabin through the airframede la cabine*Use effect system instead of hard-coded Utiliser un système effet à la place des shaderslourdement codés*Add new animation to link a light source to a model (need to provide point light animation duplicating spot light) (done)*Tidy up the architecture (done)*Global strength of glow or ambient Intensités globales de brillance, ou occlusion ambiante via slider in rendering dialog*Fix dim-factor in multiplayer mode (done)*Design and implement a configurable pipeline (done)*Document rendering pipeline configuration file format (done)curseur dans le dialogue rendu
=== Near term tasks Tâches à court terme ===*Convert existing Convertir les shaders to deferred renderingexistants en rendu différé*Avoid to redraw opaque objects in the light passÉviter de redessiner les objets opaques dans la phase lumière. Involve OSG Améliorer le masque node mask not properly initializedOSG .*take care of particles and precipitationS'occuper des particules et précipitations*Fix fog on cloudsFixer le brouillard sur les nuages *Fix shadow Fixer les matrices in shadow dans multi-screen*Implement IMettre en œuvre un lightfield shader
=== Long term ideas Idées à long terme (unsortednon classées) ===
*implement strength of glow (in the emissive buffer alpha channel)
**provide levels 0 to 5 - we are currently at level 5
*Implement quality vs performance user control
== Gallery Gallerie ==
{{#ev:youtube|PXHhtQb5yzc}} {{#ev:youtube|peEzEapavkg}} {{#ev:youtube|RIetPh8iJXk}} {{#ev:youtube|oaNFrxgQY1c}} {{#ev:youtube|8xGzy12hlis}} {{#ev:youtube|ZyuHBlm3xXU}} {{#ev:youtube|RgH9GZRukOI}} {{#ev:youtube|UQvbHnBkpaM}} {{#ev:youtube|v02phoOqWHE}}{{#ev:youtube|dlSo4sBa7Nk}}
== Appendix Appendice ==
{{Appendix|all|
* {{cite web |url=http://http.download.nvidia.com/developer/presentations/2004/6800_Leagues/6800_Leagues_Deferred_Shading.pdf |title=Deferred Shading |author=Shawn Hargreaves and Mark Harris }}
88
edits

Navigation menu