鸣潮抓帧分析

Posted by Wanghan on October 10, 2024

渲染流程


Shadow Map Pass

绘制shadow map 角色单独绘制

Velocity Pass

Velocity Buffer

RG: Screen Space Velocity B: Character Mask A:不清楚

Depth Stencil Buffer

这时只有角色的depth 没有stencil

Terrain Pass

单独对临近的地面进行了渲染,远处的放在Gbuffer里面。 查看模板发现,远处地面,当作建筑和建筑一起渲染,脚下地块则单独渲染。

Base Pass

渲染不透明物体的Gbuffer,有设置渲染顺序,先绘制角色,再绘制场景物体,再绘制近处地形,再绘制角色描边。

Scene Color +Emissive

RGB:

GBuffer A

RG: 法线 ![]/img/in-post/MingChao/(image-20250315180026280.png) B: 遮蔽阴影 A: 卡渲明暗信息(包括刘海阴影)

GBuffer B

结合之前的分享可得: DefaultLit: R:Metallic G:Specular B:Roughness SSS和植被模式: RGB: CustomData Toon : RGB: ShadowColor R: G: B: A:shading model +output mask

GBuffer C

RGB: BaseColor A:DefaultLit 和植被模式是AO ,toon模式是RimStrength

Depth Stencil Buffer

生成Hi-z mipmap

云层假投影和角色高清投影

也放在GBuffer A的B通道了

Deferred Light Pass

Single Layer Water

Reflection

Atomosphere and Transparent

高度雾

看效果好像也有深度上的衰减

skybox

半透云片雾片

Transparent Obj

PostProcess

Screen Space Reflection TAA Bloom Lut 校色

角色渲染


RenderQueue(从小到大依次绘制)

character up 180 character down 180 character eye 180 character face 180 character eye het 190(写stencil) character face het 190(写stencil) character fake shadow 190 character hair 195 character bangs 195 character up outline 250 character down outline 250 character face  outline 250 character hair outline 250 character bangs outline 250 character bangs heta 300

飘眉效果

face & eye

在basepass先正常绘制一遍,第二遍使用Character eye het和character face het材质,写入texture mask部分像素的stencil,参考值为6。

Mask Texture:

stencil buffer:

Hair

basepass中绘制时判断在mask区域并且与上面眼睛眉毛部分的stencil值相等的像素clip掉。 mask texture: clip结果: 绘制刘海backeface描边,透出的部分实际上是描边颜色: 散华这个角色是又绘制了一遍刘海,Gbuffer颜色混合设置为Blend Alpha。这样还可以方便控制刘海的半透程度。

刘海投影

在绘制完脸和眼睛以及写完眉毛眼睛stencil值后,特殊绘制了一遍刘海,只画到GbufferA的A通道,即卡渲明暗信息通道,没有绘制到BaseColor。在后续lightpass中参与计算。