然后接下来应该对剔除结构之后的所有 renderer 进行一手渲染,需要注意一下几个问题:
正常来说正确的渲染顺序:不透明物体-> 天空盒-> 绘制透明物体
组合一下,大概是这样:
编辑器部分
绘制不支持的颜色列表,也同样的,基本是传进来 shaderId
遍历一下 ShaderId,然后如同上面一样绘制即可
另外可以顶一个 staticMaterial,其实默认的编译 shader 的那个粉色的颜色是一个固定的 Shader,叫做 Hidden/InternalErrorShader
渲染设置可以重载所渲染的 Shader
为了区分,抽一个结构出来,把 buffer 的 SampleName 定义成摄像机的名字,把他传进去即可
多个摄像机有的问题是,如果渲染的 Layer 不一样,按照我们默认清除的手段,第二个摄像机会直接把之前的帧缓冲清除掉。为了解决这个问题,需要修改 bufferClearTarget 的参数
cameraClearFlag 由小到大依次是:Skybox,Color,Depth,Nothing.前三个都是会清除深度缓冲区的。这个的值越小,清除的东西越多。
再说回来 Buffer 的 ClearTarget。看下他的参数
做完上面的东西,我们可以把第一个相机设置为 clear Color 或者是是 skybox,第二个设置为 DepthOnly 或者是 NoClear。前面的设置是需不需要第一个渲染天空盒子,后面的设置是看需不需要用第一个的深度缓冲区。