Unity3dShader-积雪

作者: Alphazhu | 来源:发表于2017-09-05 13:58 被阅读45次
Shader "TA/Snow"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _AddTex ("AddTex",2D) = "white" {}
        _BumpMap("BumpMap",2D)= "white" {}
        _SnowStep(" Snow",Range(0,1))=0.5
        _LightDir("LightDir",vector) = (0,0,1,1)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog
            
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                half3 vnormal : NORMAL;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
                fixed3 normal : NORMAL;
            };

            sampler2D _MainTex,_AddTex,_BumpMap;
            fixed _SnowStep;
            half4 _MainTex_ST,_LightDir;
            
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.normal = v.vnormal;
                UNITY_TRANSFER_FOG(o,o.vertex);

                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 s = tex2D(_AddTex, i.uv);
                half3 customColor = step(1-_SnowStep*s.a,i.normal.y);
                fixed4 col = tex2D(_MainTex, i.uv);
                fixed3 bum = UnpackNormal(tex2D(_BumpMap, i.uv) * _LightDir.w);
                half sDir = max(0,dot(_LightDir,bum));
                
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return half4((col.rgb*sDir + customColor*s*0.7),1);
            }
            ENDCG
        }
    }
}


相关文章

  • Unity3dShader-积雪

  • 积雪,积雪

    积雪 上层的雪, 很冷吧。 冰冷的月光照着它。 下层的雪, 很重吧。 上百的人压着它。 中间的雪, 很孤单吧。 看...

  • 积雪

    《积雪》 ——作者:陆陈蔚 雪从天上来 到人间成为“积雪” 积雪也是短暂的 我们的心更多变 才喜欢过的已开...

  • 积雪

    歌声落在水面 最后一丝暮色也收起来了 余音还没结束 今日的秋已经散场 墨蓝色 晕染的天空 你的背影 窗外交杂的音乐...

  • 积雪

    金子美玲吴菲( 译) 上面的雪很冷吧。冰冷的月亮照着它。 下面的雪很重吧。上百的人压着它。 中间的雪很孤单吧。看不...

  • 积雪

    上层的雪很冷吧 冰冷的月光照着它 下层的雪很重吧 上百的人压着它 中间的雪很孤单吧 看不见天也看不见地 本文作者:...

  • 积雪

    上层的雪 很冷吧。 冰冷的月光照着它。 下层的雪 很重吧。 上百的人压着它。 中间的雪 很孤单吧。 看不见天也看不...

  • 积雪

    孤独的灵魂 嵌在你的骨头里 咯吱咯吱 呼唤理解 污泥和黑垢 向你伸出手 任性的北风 又围着把你调戏 升腾吧 积雪 ...

  • 积雪

    上面的雪 很冷吧! 冰冷的月亮照着它, 下面的雪 很重吧! 上百的人压着它, 中间的雪 很孤独吧! 看不见天也看不见地。

  • 积雪

    上层的雪 很冷吧, 冰冷的月亮照着它。 下层的雪 很重吧, 上百的人压着它。 中间的雪 很孤单吧, 看不见天也看不见地。

网友评论

    本文标题:Unity3dShader-积雪

    本文链接:https://www.haomeiwen.com/subject/eumujxtx.html