我想完全跳过着色器的传递,这取决于统一中的检查器的属性,例如:(请记住这不会编译)
Shader "Name"
{
Properties
{
[Toggle(STUFF_ON)] _StuffOn("Stuff On", Float) = 1
}
SubShader
{
#if STUFF_ON
Pass
{
[...]
}
#endif
Pass
{
[...]
}
}
}我已经查找了切换(如本例所示)、shader_feature和multi_compile,但它们都只允许我在pass内部使用该指令。
发布于 2016-01-22 17:35:55
我认为你可能需要复制着色器,但没有传球,你想跳过。那就按需要交换一下。
作为参考,这里有一个例子,说明如何在单一行为中交换着色器:
[RequireComponent(typeof(Renderer))]
public class ShaderSwapExample : MonoBehaviour
{
void Start()
{
Shader TransDiffuseShader = Shader.Find("Transparent/Diffuse");
if (TransDiffuseShader != null)
{
Renderer renderer = GetComponent<Renderer>();
renderer.material.shader = TransDiffuseShader;
}
}
}您可以找到有关交换着色器这里的更多信息。
https://stackoverflow.com/questions/34315836
复制相似问题