赞
踩
为了简化分析流程,排除无关的影响因子,先关闭一些无关的功能。关闭所有相机的阴影和后处理,RenderPipeline的SRPBatch、MSAA还有Renderer的NativeRenderPass,因为这些东西会在FrameDebug中增加额外的步骤。
然后打开FramwDebug,可以观察到整个流程总共有三个相机的渲染组成。
三个相机的渲染顺序是Main Camera -> City Skybox Camera -> Planet Skybox Camera,这个渲染顺序是由Main Camera的相机堆栈设置的
这个相机使用的是BaseRenderer,这个Renderer开启了Stencil设置,对物体进行Stencil标记。
这个相机使用的是SkyboxRenderer,这个Renderer判断Stenil缓存为0的才渲染,而BaseRenderer场景中的场景物件的stencil缓存为1,所以Main Camera绘制的场景物件的位置SkyboxRenderer将不会渲染。正是这样所以场景近处的模型虽然先渲染,也不会被后面相机渲染出来的场景物所覆盖。
这个相机与City Skybox Camera一样,所以就不写了
这个案例主要目的是演示CameraStacking的一些功能,让近处的物体可以通过控制stencil的方式不被后面相机的物体所覆盖。实际上按正常做法从先渲远处相机再渲近处相机不用stencil也可以实现同样效果。把Planet Skybox Camera设置为BaseCamera,把City Skybox Camera和Planet Skybox Camera设置为OverlayCamera
再关闭Stencil相关的设置,效果和原来的一样
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。