如何在Unity3D的CG程序着色器中设置布尔属性?

13

我正在为unity3d编写着色器,我希望能够像这样指定着色器的属性 -

Shader "GraphicsQuality/MediumScan" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _SpecColor ("Specular Color", Color) = (0.5,0.5,0.5,1)
    _Shininess ("Shininess", Range (0.01, 1)) = 0.078125
    _MainTex ("Base (RGB) RefStrGloss (A)", 2D) = "white" {}
    _BumpMap ("Normalmap", 2D) = "bump" {}
    _RimColor ("Rim Color", Color) = (0.48,0.78,1.0,0.0)
    _RimPower ("Rim Power", Range(0,8.0)) = 3.0
}

但这些属性适用于颜色、范围、浮点数等,我想输入一个布尔值,该怎么做?我尝试了类似以下的方式-

Properties{
    _MainTex ("Particle Texture", 2D) = "white" {
    _isBending("is Bending",bool) = true
}
SubShader{
        Pass{
            CGPROGRAM

                #pragma vertex vert
                #pragma fragment frag

                sampler2D _MainTex;
                bool _isBending;
.......continuing

但这并不起作用,我无法获取布尔属性“_isBending”,而是在该行中收到错误提示。

  _isBending("is Bending",bool) = true
2个回答

21
[MaterialToggle] _isBending("is Bending", Float) = 0
或者
[Toggle] _isBending("is Bending", Float) = 0

至少你将拥有一个可视的切换按钮。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接