【Système de rendu UE】 Processus de rendu d'une image

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)

insérez la description de l'image ici

Nous pouvons vérifier la carte de profondeur rendue sur la droite, et nous pouvons voir qu'elle est rendue une par une.

insérez la description de l'image ici

En fait, ici, nous pouvons voir les informations sur les sommets et les attributs de chaque maillage lorsque nous cliquons dessus.

insérez la description de l'image ici

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.

insérez la description de l'image ici

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.

insérez la description de l'image ici

On peut voir que ClearRenderTargetView efface d'abord 7 RT pour le prochain rendu BasePass, puis effectue 6 rendus parallèles dans BasePassParallel.

insérez la description de l'image ici insérez la description de l'image ici insérez la description de l'image ici insérez la description de l'image ici insérez la description de l'image ici insérez la description de l'image ici

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.

insérez la description de l'image ici

4. Profondeurs d'ombre

Générez ensuite une Shadowmap pour celui-ci.

insérez la description de l'image ici

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

insérez la description de l'image ici

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

insérez la description de l'image ici
insérez la description de l'image ici

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.

insérez la description de l'image ici

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.

insérez la description de l'image ici

insérez la description de l'image 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.

insérez la description de l'image ici

insérez la description de l'image ici

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.

insérez la description de l'image ici

Par conséquent, une opération de post-traitement est effectuée ultérieurement.

insérez la description de l'image ici

Le résultat final n'est pas mauvais.

insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_45617648/article/details/131926509
conseillé
Classement