包含此页的版本:
不含此页的版本:
在内置渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表,你可以告诉一个相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表以更改它在运行时用于渲染某些几何体的着色器。您可以这样做来实现边缘检测等视觉效果。
着色器替换是从脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表使用 Camera.RenderWithShader 或 Camera.SetReplacementShader 函数。这两个函数都采用着色器在 GPU 上运行的程序。更多信息
请参阅术语表和 replacementTag。
它的工作原理是这样的:摄像机渲染场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表就像往常一样。对象仍使用其材质,但它们使用的着色器会发生变化:
因此,例如,如果所有着色器都有一个“RenderType”标记,其值为“Opaque”、“Transparent”、“Background”、“Overlay”,则可以编写一个替换着色器,该着色器仅使用一个具有 RenderType=Solid 的子着色器来渲染实体对象标记可以分配给一个或多个游戏对象的引用词,以帮助您识别游戏对象以进行脚本编写。例如,你可以为玩家可以在游戏中吃的任何物品定义和“可食用”标签。更多信息
请参阅术语表.在替换着色器中找不到其他标记类型,因此不会呈现对象。或者,您可以为不同的“RenderType”标签值编写多个子着色器。顺便说一句,所有内置的着色器对象Shader 类的实例,Shader 对象是着色器程序和 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” 着色器的对象都将使用第二个替换子着色器,依此类推。将不会呈现着色器中指定键的着色器没有匹配标记值的任何对象。