首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之URP下PrePassZ(一百一十九)
2020
10-18

Unity3D研究院之URP下PrePassZ(一百一十九)

URP以后并不是所有Pass都会执行,因为它预制了两个Pass所以,优先执行”UniversalForward”在执行”SrpDefaultUnlit”的Pass

以上代码就可以在URP中实现PrePass的功能,如果场景中只绘制一个物体那么这样做没啥问题,可是如果场景绘制多个相同材质或不同参数的物体,那么这样做就无法启动SRP Batcher了。

接着我们将PrePass单独拆出来,

添加一个RendererFeature 接着Filters中选择Transparent和物体的Layer
Unity3D研究院之URP下PrePassZ(一百一十九) - 雨松MOMO程序研究院 - 1

添加多个物体以后在FrameDebug中即可看到,PrePass和Transparent都进行了SRP Batcher。

Unity3D研究院之URP下PrePassZ(一百一十九) - 雨松MOMO程序研究院 - 2

PrePass是处理半透明物体的一个技巧,其实在Alpha Test物体上它还能起到优化的作用,比如有好多层Alpha Test 前面挡住后面,如果提前PrePass一下,这样early-z或HSR会剔除掉被挡住的Alpha Test物体并且不执行它的片元着色器。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

留下一个回复

你的email不会被公开。