- The project's render pipeline asset loads as an object (the current quality level's, else the graphics settings'), after its scripts compile, with its renderer data and their features: GraphicsSettings.currentRenderPipeline and UniversalRenderPipeline.asset (UniversalRenderPipelineAsset: renderers, HDR and its precision, render scale, MSAA, main light shadow map resolution).
- URP's feature API: ScriptableRendererFeature (created once, active ones add passes per camera), ScriptableRenderPass (event, inputs, intermediate texture), ScriptableRenderer.EnqueuePass, RenderingData and CameraData, UniversalCameraData and UniversalResourceData, ScriptableRendererData and UniversalRendererData, RenderPassEvent, FullScreenPassRendererFeature, ScreenSpaceAmbientOcclusion's settings.
- A render graph as Unity 6 records one (UnityEngine.Rendering.RenderGraphModule): textures imported (the camera's color and depth, the depth texture, the main light's shadow map) and created (TextureDesc), raster passes (UseTexture, SetRenderAttachment, SetRenderFunc, pooled pass data), ContextContainer, ProfilingSampler, RasterCommandBuffer recording draws (DrawProcedural, DrawMesh, with their property blocks copied). Handles convert to Texture, RenderTexture, RTHandle and RenderTargetIdentifier as Unity's do (a stand-in RenderTexture marked with its graph index).
- Each frame, per camera, features add passes, which record in event order and then run, recording their draws. The engine doesn't draw them yet (logged once).
- Also: RenderTextureDescriptor, RenderTargetIdentifier, CameraType and Camera.cameraType, FrameTimingManager, MSAASamples, Application.SetStackTraceLogType.
- Corpus: Nitrate compiles (37 errors before) and loads; its two features record their twelve passes.
- Next: draw the recorded passes (full-screen draws into graph textures, the camera's color, depth and shadow map bound, the shader includes they need: Blit.hlsl, full-screen vertex IDs, the depth texture); then SSAO.
Phase 6 · Slice 59 ·