斜角渐变 shader

在unity中怎样用shader从 左上角到右下角怎样实现透明渐变,

引用 皆我百晓生 小程序回复内容续答:
要实现从左上角到右下角的斜角渐变,可以使用Unity中的Shader来实现。下面是一个简单的示例代码:

Shader "Custom/SlantGradient" {
    Properties {
        _MainTex ("Texture", 2D) = "white" {}
    }
    
    SubShader {
        Tags {"Queue"="Transparent" "RenderType"="Transparent"}
        LOD 100
        
        Pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            
            struct appdata {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
            
            struct v2f {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
            
            sampler2D _MainTex;
            
            v2f vert (appdata v) {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target {
                float4 color = tex2D(_MainTex, i.uv);
                
                // 计算渐变因子
                float gradientFactor = (i.uv.x + i.uv.y) / 2.0;
                
                // 根据渐变因子将颜色的透明度进行调整
                color.a *= gradientFactor;
                
                return color;
            }
            ENDCG
        }
    }
}

这段代码定义了一个Custom/SlantGradient的Shader,其中有一个_MainTex用来作为材质的贴图。

在Vertex Shader中,我们传递了顶点位置和UV坐标。

在Fragment Shader中,我们根据UV坐标计算了一个渐变因子,将颜色的透明度根据渐变因子进行调整。其中i.uv.x和i.uv.y是取值范围都在0到1之间的UV坐标,通过(i.uv.x + i.uv.y) / 2.0可以得到一个取值范围在0到0.5之间的渐变因子。

最后,我们将调整后的颜色作为输出返回。

使用这个Shader,你可以在材质上应用这个渐变效果,即可实现从左上角到右下角的斜角渐变。