GBufferManager
gbuffer在HDRenderPipeline构造的时候会创建GBufferManager,默认会构造指定数量的gbuffer的rt,一般是4张rt加一张深度rt。
RenderGBuffer
在ExecuteRenderRequest中执行RenderGBuffer,然后执行
CoreUtils.SetRenderTarget(cmd, m_GbufferManager.GetBuffersRTI(hdCamera.frameSettings), m_SharedRTManager.GetDepthStencilBuffer());来通过commandbuffer渲染。
以及执行m_GbufferManager.BindBufferAsTextures(cmd);来绑定buffer到commandbuffer的texture中。
ShaderPassGBuffer
执行到shader中是Lit.shader的GBuffer的pass中。核心在ShaderPassGBuffer.hlsl这个shader中做,他有两个版本,一个是会用细分着色的,一个是只用顶点和片元的。
顶点着色:
然后在vert中主要做一些顶点数据准备,比如世界坐标,世界法线,切线以及uv,颜色等。然后vert中的PackVaryingsType就会区分是细分还是直接转片元。PackVaryingsToPS是直接转到片元。
片元:
然后是Frag,GetSur

本文详细介绍了GBuffer在高清渲染管线(HDRenderPipeline)中的作用和工作流程。GBufferManager在初始化时创建多个渲染目标,用于存储场景信息。RenderGBuffer阶段通过CommandBuffer设置渲染目标,并将缓冲区绑定为纹理。ShaderPassGBuffer在Lit.shader的GBuffer pass中执行,处理顶点和片元数据,计算表面属性并编码到GBuffer的不同部分,如基础颜色、法线、粗糙度、金属度等。这一过程对于实时图形渲染的光照和细节表现至关重要。
订阅专栏 解锁全文
1401

被折叠的 条评论
为什么被折叠?



