着色器在添加照明处理后不起作用

问题描述 投票:0回答:1

如果在“ FallBack”中添加不存在的着色器,则会出现此错误““ Curved / CurvedAlpha”中的着色器警告:此GPU不支持着色器(子着色器/后备均不适用)。因此,我可以得出一个结论:仅添加一个变量(进一步查看)后,此GPU不支持此着色器吗?我的显卡geforce gtx 1060 3gb。

Shader "Curved/CurvedAlpha" {
  Properties {
        _Color("Color", COLOR) = (1, 1, 1, 1)
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _QOffset ("Offset", Vector) = (0,0,0,0)
        _Dist ("Distance", Float) = 100.0       
        _Alpha ("Alpha", Range(0.0,1.0)) = 1.0
    }
    SubShader {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        LOD 100

        ZWrite On
        Blend SrcAlpha OneMinusSrcAlpha 

        Pass
        {
            Lighting Off

            CGPROGRAM
            // Upgrade NOTE: excluded shader from DX11; has structs without semantics (struct v2f members factor)
            #pragma exclude_renderers d3d11
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

                        half4 _Color;
            sampler2D _MainTex;
            float4 _QOffset;
            float _Dist;            
            float _Alpha;
            uniform float4 _MainTex_ST;

            struct v2f {
                float4 pos : SV_POSITION;
                float2 uv : TEXCOORD0;

在addind“ factor”之后,在vert函数着色器中对其进行计算后,会退回到“ Legacy Shaders / Transparent / VertexLit”中]

                float4 factor: COLOR;
            };

            v2f vert (appdata_base v)
            {
                v2f o;
                float4 vPos = mul (UNITY_MATRIX_MV, v.vertex);
                float zOff = vPos.z/_Dist;              
                vPos += _QOffset*zOff*zOff;
                o.pos = mul (UNITY_MATRIX_P, vPos);
                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);             
            float factor = max(0, dot(v.normal, float3(0,1,0)));
            o.factor = float4(factor,0,0,0);
                return o;

            }


            fixed4 frag (v2f i) : COLOR
            {
                //fixed4 color = tex2D(_MainTex, i.uv) * _Color;
                return tex2D(_MainTex, i.uv)  * float4(_Color.r, _Color.g, _Color.b, _Alpha) * i.factor.x;
            }
            ENDCG
        }

    }

FallBack "Legacy Shaders/Transparent/VertexLit"
}

问题是在曲面着色器中添加了照明处理。

如果在“ FallBack”中添加不存在的着色器,则会出现此错误““ Curved / CurvedAlpha”中的着色器警告:此GPU不支持着色器(子着色器/后备均不适用)。我可以做一个...

c# unity3d shader cg
1个回答
0
投票

[当您收到有关GPU不支持着色器的错误时,我发现90%的时间与代码的ShaderLab部分有关,因为它与CG代码没有相同的详细编译器错误并且通常只是懒惰地声称实际上不存在语法错误时不支持着色器。

© www.soinside.com 2019 - 2024. All rights reserved.