Slides du Meetup Unity Lyon #3. Vous voulez créer un rendu 3D de qualité ? Voici tout ce qu'il faut mettre en oeuvre pour y arriver. Deferred Rendering, Post Processing, Lighting, Lightmapping, Probes, HDRP...
2. QUI SUIS-JE ?
• Chef de projet / DéveloppeurVR chez Wanadev
• JeuxVR pour salle d’arcade
• Application AR
• Créateur / Développeur chez Demonixis Games
• Création de jeux vidéoVR
• Auteur de plusieurs blogs
• Auteur/Contributeur sur github
5. SOMMAIRE
• Choisir le bon espace de couleur (Spoiler Alert: Linear)
• Lighting, HDR, Probes et Lightmapping
• Rendering
• Post Processing
• Introduction à HDRP (démo)
• Conclusion
5
6. ESPACE DE COULEUR LINEAIREVS GAMMA
• Historiquement les moniteurs à tube cathodique
utilisaient une courbe spécifique pour afficher les
couleurs à l'écran
• 0.45 + 0.45 = 0.90 => Linear
• 0.45 + 0.45 = ?
• Aujourd'hui les écrans LCD n'ont plus ce besoin,
mais fonctionnent sur la même norme.
• Les images sont généralement encodées en Gamma
6
8. ESPACE DE COULEUR LINEAIREVS GAMMA
• Edit > Player Settings > Player
• Va réimporter les textures en linéaire
• Obligatoire sur HDRP
• Obligatoire pour HDR + Tonemapping
• Obligatoire pour un setup lighting
correct
• Non supporté sur OpenGLES 2.0,
WebGL 1.0
• Bancale sur UWP (correction gamma
manuelle obligatoire enVR)
8
9. LIGHTING
• 3 modes
• Recommandé d'utiliser Mixed
• Car équivalent à Backed + Realtime
• Produit de l'éclairage spéculaire
• Et c'est trop bien
• Realtime doit être utilisé sur des lumières
qui ne peuvent pas être backées
(Particules, etc..)
9
10. LIGHTING - HDR
• High Dynamic Range
• Une RenderTarget est généralement
limitée à une valeur de couleur entre
0.0f et 1.0f
• L'idée c'est d'aller au-delà de 1.0f...
• Pourquoi ?
• Matériaux émissifs
• Post Processing
10
11. ECLAIRAGE DIRECT ET INDIRECT
• L'éclairage direct correspond à
un rebond
• L'éclairage indirect correspond
à d'autres rebonds
• On bake généralement
l'éclairage indirect (Lightmaps)
11
12. REFLECTION PROBES
• Créer une TextureCube utilisée
pour la reflexion
• Idéalement statique, mais peut être
rebakée en temps réel via script
• Ne pas hésiter à en mettre dans
chaque pièces
• Une seule globale pour debug c'est
OK ( )
12
13. LIGHT PROBES
• Long à placer... Mais il existe des plugins
• OK ça sert à capturer la lumière backées
pour l'utiliser sur les objets non statiques
• Du coup il existe des plugins (Lightprobe
Placer) https://goo.gl/1ewDMi
13
14. LIGHTMAPPING
• 3 modes là aussi de backing
• Subtractive :Tout est backée dans une texture. Pas de spécularité
(#pasbo)
• Shadowmask : Eclairage indirect et ombres.
• Backed Indirect : Eclairage indirect seulement
• Choisir Realtime OU Mixed (pas comme sur le screen )
14
15. RENDERING
• Forward : Pas possible d'utiliser beaucoup de lumières,
resérvé aux applications critiques (VR mobile, mobile low-end,
WebGL 1.0). Moins de possibilité de Post Processing
• Deferred : C’est-ce qu'utilise tous les jeux actuellement, c'est
gourmant, mais ça permet d'utiliser tous les types d'effets
• On va utiliser le Deferred Renderer quand on utilisera pas
HDRP
• N'ayez pas peur de l'utiliser enVR Desktop par exemple
• Ne l’utilisez pas sur mobile
15
16. UTILISATION DU DEFERRED RENDERER
• Se règle sur la caméra ou dans les Player Settings
• Post Processing avancé : Screen Space Reflections <3
• Pleins de lumières en temps réel non statiques !
• Les ombres consomment toujours autant
16
17. POST PROCESSING
• Améliorer l'image finale avec du
traitement d'image
• Certains effets ne fonctionnent qu'en
Linear + HDR + Deferred
• Minimum : Bloom +Tonemapping
• Attention aux ScreenSpace XXX qui
sont consommateurs (surtout sur
mobile et enVR)
17
18. INTRODUCTION À HDRP
• Taillé pour le Next-GenTemps réel
• Eclairage volumétrique
• Forward Tiled/Clustered
• Deferred Renderer+
• Pipeline programmable <3
• VFX (particles GPU par nœuds)
• Et bien plus <3 <3 <3
18
19. CONCLUSION
• Utilisez les APIs graphique nouvelle génération quand c'est possible
• OpenGL ES3+ /Vulkan / DirectX 12
• Utilisez des LightProbes et des Reflexion Probes
• Attention au SSR
• Cochez bien la case static ;) quand ça ne bouge pas
• N'ayez pas peur d'essayer
19
20. QUESTION ? MERCI !
N’hésitez pas à me suivre ou à me contacter
Mail : comte.yannick@gmail.com
Github : https://github.com/demonixis
Twitter : @CYannick
Twitter : @DemonixisGames
LinkedIn : https://www.linkedin.com/in/yannick-comte-49080947/
Facebook : DemonixisGames
20