Unity特定Layer层物体渲染顺序调整

需求描述

某个层级物体始终处于另一个层级前面渲染

第一个想法肯定是通过材质的shader ,如果这两个层级的物体使用不同材质,可以通过调整材质的渲染队列即可

除此之外另一个不动材质的办法,即通过调整RenderPipelineAsset 增加渲染特性,根据层级调整

这里的层级指物体的Layer

file

指定层写入模板

使用Urp,打开UniversalRenderPipelineAsset_Renderer,Add Feature

file

关闭默认对于指定层级的渲染,使用Feature

file

假设我们需要PlayerBack处于Player后面,先渲染PlayerBack 层,

Queue 与所宣传层的材质渲染队列保持一致
Layer Mask选中要渲染的目标层
不写深度,写入模板
file

目标层在写入层之后做模板测试、

目标层在写入层之后做模板测试,会只在目标层渲染,(因为只有写入层才能通过模板测试)

此处深度测试总是通过,同时写入深度,目的是为普通层通过深度测试(如果出现黑色,是因为还需要再渲染普通层)
file

file

普通层

普通层正常渲染,因为之前写入过深度,所以可以在渲染在指定层之上,且又因为只有指定层写入模板,所以不会干扰其余渲染层级(指定层高亮原理也是应用模板测试)

file

效果

红色Player,白色PlayerBack,PlayerBack始终处于Player 后方

file

猜你喜欢

转载自blog.csdn.net/euphorias/article/details/124517505