gpt4 book ai didi

c# - 我可以完全跳过 ShaderLab 着色器的传递吗?

转载 作者:行者123 更新时间:2023-11-30 12:57:25 24 4
gpt4 key购买 nike

我想根据 Unity 中检查器的属性完全跳过着色器的传递,例如:(请记住,这不会编译)

Shader "Name"
{
Properties
{
[Toggle(STUFF_ON)] _StuffOn("Stuff On", Float) = 1
}
SubShader
{
#if STUFF_ON
Pass
{
[...]
}
#endif
Pass
{
[...]
}
}
}

我已经在寻找 Toggles(如示例中所示)、pragma shader_feature 和 multi_compile,但它们都只允许我在传递本身内部使用指令。

最佳答案

我认为您可能需要复制着色器,但没有您想要跳过的 channel 。然后根据需要交换。

作为引用,这里有一个示例,说明如何在单一行为中交换着色器:

[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;
}
}
}

您可以找到有关交换着色器的更多信息 here

关于c# - 我可以完全跳过 ShaderLab 着色器的传递吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com