在内置的渲染管线一系列操作,将场景内容显示在屏幕上。Unity 允许您从预构建的渲染管线中选择,或编写自己的。 更多信息
参见 词汇表中,您可以告诉一个相机一个组件,它创建场景中特定视点的图像。输出要么绘制到屏幕上,要么作为纹理捕获。 更多信息
参见 词汇表在运行时更改它用来渲染某些几何体的着色器。您可能这样做是为了实现某种视觉效果,例如边缘检测。
着色器替换是在脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见 词汇表中使用Camera.RenderWithShader或Camera.SetReplacementShader函数来完成的。这两个函数都接受一个着色器在 GPU 上运行的程序。 更多信息
参见 词汇表和一个replacementTag。
它的工作原理是这样的:相机按照通常的方式渲染场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰物,本质上是在分段设计和构建您的游戏。 更多信息
参见 词汇表。对象仍然使用它们的材质,但它们使用的着色器发生了变化。
因此,如果所有着色器都具有,例如,一个“RenderType”标记,其值例如是“Opaque”、“Transparent”、“Background”、“Overlay”,那么您可以编写一个替换着色器,该着色器只通过使用一个具有 RenderType=Solid标记一个参考词,您可以将其分配给一个或多个游戏对象,以帮助您识别用于脚本目的的游戏对象。例如,您可以为游戏中玩家可以吃的任何物品定义和“可食用”标记。 更多信息
参见 词汇表的子着色器来渲染实体对象。其他标记类型将无法在替换着色器中找到,因此对象将不会被渲染。或者,您可以为不同的“RenderType”标记值编写多个子着色器。顺便说一句,所有内置的着色器对象着色器类的实例,着色器对象是着色器程序和 GPU 指令以及告诉 Unity 如何使用它们的信息的容器。将它们与材质一起使用以确定场景的外观。 更多信息
参见 词汇表都设置了“RenderType”标记。
使用着色器替换时,场景将使用相机上配置的渲染路径进行渲染。这意味着用于替换的着色器可以包含阴影和光照通道(您可以将表面着色器用于着色器替换)。这对于渲染特殊效果和场景调试非常有用。
所有内置着色器都设置了一个“RenderType”标记,可以在使用替换的着色器进行渲染时使用。标记值为以下值
如果您的某些效果需要,相机具有内置功能来渲染深度或深度+法线纹理。请参阅相机深度纹理页面。请注意,在某些情况下(取决于硬件),深度和深度+法线纹理可以在内部使用着色器替换进行渲染。因此,在您的着色器中拥有正确的“RenderType”标记非常重要。
您的 Start() 函数指定替换着色器
void Start() {
camera.SetReplacementShader (EffectShader, "RenderType");
}
这请求 EffectShader 使用 RenderType 键。EffectShader 将为您想要的每个 RenderType 拥有键值标记。着色器将看起来像这样
Shader "EffectShader" {
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
...
}
}
SubShader {
Tags { "RenderType"="SomethingElse" }
Pass {
...
}
}
...
}
SetReplacementShader 将查看场景中的所有对象,并且不是使用它们的普通着色器,而是使用第一个具有与指定键匹配的值的子着色器。在这个示例中,任何着色器具有 Rendertype=“Opaque” 标记的对象都将被 EffectShader 中的第一个子着色器替换,任何具有 RenderType=“SomethingElse” 着色器的对象都将使用第二个替换子着色器,依此类推。任何着色器没有与替换着色器中指定键匹配的标记值的物体都不会被渲染。