shader 流动效果(SurfaceShader)

如图:
shader 流动效果(SurfaceShader)_第1张图片
运行后,图片中的岩浆会向某个方向进行流动,这便是流动效果。

代码:

Shader "Custom/05"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Smoothness ("Smoothness", Range(0,1)) = 0.5
		_Normal("Normal",2D)="bump"{}
		_Mask("Mask",2D)="white"{}
		_Specular("Specular",2D)="white"{}
		_Fire("Fire",2D)="white"{}
		_FireIntensity("FireIntensity",Range(0,2))=1
		_FireSpeed("FireSpeed",Vector)=(0,0,0,0)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" "Queue"="Geometry" }
        LOD 200

        CGPROGRAM

        #pragma surface surf StandardSpecular fullforwardshadows
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _Normal;
        sampler2D _Mask;
        sampler2D _Specular;
        sampler2D _Fire;

        struct Input
        {
            float2 uv_MainTex;
        };

        half _Smoothness;
        fixed4 _Color;
		half _FireIntensity;
		half2 _FireSpeed;

        UNITY_INSTANCING_BUFFER_START(Props)
        UNITY_INSTANCING_BUFFER_END(Props)

        void surf (Input IN, inout SurfaceOutputStandardSpecular o)
        {
            o.Albedo = tex2D(_MainTex, IN.uv_MainTex) * _Color;
			o.Normal = UnpackNormal(tex2D(_Normal, IN.uv_MainTex));
			float2 uv = IN.uv_MainTex + _Time.x*_FireSpeed;
			o.Emission = tex2D(_Mask, IN.uv_MainTex)*tex2D(_Fire, uv)*(_FireIntensity*(_SinTime+5)).rgb;
			o.Specular = tex2D(_Specular, IN.uv_MainTex).rgb;
            o.Smoothness = _Smoothness;
            o.Alpha = 1;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

图片资源链接

你可能感兴趣的:(Shader)