Téléchargez RenderDoc,
choisissez d'ouvrir le plug-in RenderDoc Plugin dans le plug-in UE, utilisez-le pour capturer des images au moment de l'exécution et nous pouvons voir le processus de rendu de UE.
0. Pré-étape
La pré-étape est principalement un ensemble de choses telles que la transformation de perspective, la projection et les paramètres d'initialisation...
Vous pouvez vous référer à : GAMES101 : Introduction à l'infographie moderne (1) Transformation, pixellisation et coloration
1. PrePass (étape de traitement de pré-rendu)
Nous pouvons vérifier la carte de profondeur rendue sur la droite, et nous pouvons voir qu'elle est rendue une par une.
En fait, ici, nous pouvons voir les informations sur les sommets et les attributs de chaque maillage lorsque nous cliquons dessus.
Les données de vertex sont évidemment entrées dans les étapes PrePass et BasePre ; dans AO, Lights et PostProcessing, les triangles dans l'espace de l'écran sont principalement utilisés pour l'entrée.
2. ConstruireHZB
La technologie HZB (Hierarchical Z-Buffer Occlusion Culling) est utilisée dans le BuildHZB ci-dessous, qui consiste à utiliser la technologie Z-Buffer puis en fonction du rayon de la balle bondissante de l'objet, supprimer les objets qui sont occlus par d'autres objets dans le Étape PrePass et superposez le mipmap en interne Sélectionnez différents niveaux de mipmaps pour les tests de profondeur en fonction du rayon.
Remarque : L'abattage ici est l'abattage linéaire de ParallelFor au lieu de l'octree.
3. BasePass
Le rendu est effectué dans BasePass. S'il y a 5 objets dans la scène et que chaque objet effectue 5 calculs d'éclairage, les 5 × 5 = 25 fois finaux, et le rendu différé consiste à retarder le calcul du rendu d'éclairage. Tout d'abord, à chaque rendu, le Il rendra la BaseColor de l'objet (couleur de base), la normale de surface, la rugosité, la profondeur de pixel, etc. dans différentes images, puis effectuera 5 calculs pour ces 5 sources de lumière, et finalement ne calculera que 5 + 5 = 10 fois.
On peut voir que ClearRenderTargetView efface d'abord 7 RT pour le prochain rendu BasePass, puis effectue 6 rendus parallèles dans BasePassParallel.
Ce qui précède est le résultat de 6 rendus. Bien sûr, 7 RT sont réellement dessinés. Seuls les 3 premiers sont présentés ici. On peut constater que les personnages sont divisés en 3 rendus, 1 balle, 1 sol et 1 chaise, un total de 6 fois Rendu, c'est aussi le processus de l'ensemble BasePass. La SceneDepth dans BasePass est la valeur de sortie dans PrePass.
Le code du shader rendu est placé dans \UnrealEngine\UE_5.1\Engine\Shaders\Private du moteur, on retrouve le fichier BasePassPixelShader.usf, qui stocke le code du shader principal de BasePass. Selon le code source, les paramètres du matériau sont supprimés et, selon les informations de géométrie du maillage d'entrée, le code de shader correspondant est généré lors du rendu de BasePass.
4. Profondeurs d'ombre
Générez ensuite une Shadowmap pour celui-ci.
5. DiffuseIndirectEtAO
AO : dans la nouvelle version, Lumen est utilisé pour remplacer certaines opérations AO, et une couche de masque de lumière ambiante est ajoutée
Entrez le RT et SceneDepthZ de A et B du BasePass précédent, dans lequel la carte normale de l'écran dans son ensemble est calculée
Lumen n'est pas analysé ici, et Lumen sera analysé en détail dans un nouvel article à l'avenir.Ici, Lumen a fait beaucoup de calculs, généré de nombreuses images, et finalement superposé AO dessus, et a finalement obtenu l'image suivante.
6. Lumières
Il y a une lumière directionnelle dans notre scène, donc la source de lumière est calculée et l'ombre générée ici.
S'il ne s'agit pas d'une lumière parallèle, ce sera gênant, car si la source lumineuse ponctuelle (lumière non parallèle) brille sur l'objet que la caméra a sélectionné, elle ne sera pas rendue. Par conséquent, il est nécessaire de déterminer si la caméra se trouve dans la géométrie d'éclairage, et si c'est le cas, le test de profondeur sera désactivé.
7. Gérer les autres
Une fois les sources lumineuses spécifiques de la scène traitées, les nuages volumétriques, l'atmosphère, le brouillard de hauteur et enfin les volumes transparents sont traités.
8. Post-traitement (post-traitement)
Ci-dessus, une fois le traitement terminé, le résultat de sortie est toujours très mauvais, donc l'anticrénelage, l'exposition, la correction des couleurs et d'autres opérations sont effectuées dans le post-traitement.
Par conséquent, une opération de post-traitement est effectuée ultérieurement.
Le résultat final n'est pas mauvais.