以下是一个支持URP (Universal Render Pipeline) 的溶解shader示例:

Shader "Custom/DissolveShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _DissolveAmount ("Dissolve Amount", Range(0, 1)) = 0.0 _DissolveColor ("Dissolve Color", Color) = (1, 1, 1, 1) }

SubShader {
    Tags {"RenderType"="Opaque"}

    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;
        float4 _MainTex_ST;
        float _DissolveAmount;
        float4 _DissolveColor;

        v2f vert (appdata v) {
            v2f o;
            o.vertex = UnityObjectToClipPos(v.vertex);
            o.uv = TRANSFORM_TEX(v.uv, _MainTex);
            return o;
        }

        fixed4 frag (v2f i) : SV_Target {
            fixed4 col = tex2D(_MainTex, i.uv);
            float dissolve = 1.0 - _DissolveAmount;
            if (i.uv.x < _DissolveAmount) {
                col = lerp(col, _DissolveColor, dissolve);
            }
            return col;
        }
        ENDCG
    }
}
FallBack "Diffuse"

}

该shader中包含一个主纹理和两个自定义属性:溶解量和溶解颜色。在顶点着色器中,我们将顶点位置转换为屏幕空间,并将纹理坐标转换为主纹理的坐标。在片段着色器中,我们首先通过tex2D函数获取主纹理颜色。然后,我们根据溶解量和溶解颜色的值来计算溶解的颜色。如果纹理坐标的x值小于溶解量,则使用lerp函数将主纹理颜色和溶解颜色进行混合,混合比例为1.0 - 溶解量。

这个溶解shader可以应用于任何使用URP渲染管线的Unity项目中

写一个支持urp的溶解shader

原文地址: https://www.cveoy.top/t/topic/fksE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录