81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
Shader "YXZ/Effect/FlameSmoke"
 | 
						||
{
 | 
						||
	Properties
 | 
						||
	{
 | 
						||
    [Toggle(_HASEXTENTDATA)] _ExtentData("使用脚本缩放 勾选后需要挂“GenFlameExtData”脚本,在编辑器下朝向会不准确,运行时才能朝向摄像机,同时继承缩放", float) = 0
 | 
						||
    [Toggle(_MOVEABLE)] _Moveable("可移动", float) = 0
 | 
						||
 | 
						||
    [NoScaleOffset]
 | 
						||
    _SmokeTex ("烟颜色和形状", 2D) = "black" {}
 | 
						||
    _ChaosTex ("扰动纹理", 2D) = "white" {}
 | 
						||
    _Scale("大小(x,y)(Transform.Scale必须为1)", Vector) = (1,1,1,1)
 | 
						||
    _SmokeSpeed("烟的速度",range(0.1,30)) = 1
 | 
						||
    _ChaosScale("狂野度", range(0.0,5)) = 0.5
 | 
						||
 | 
						||
    [KeywordEnum(TO_Z, TO_Y, TO_X)] _QuadFace("原始面片朝向", float) = 0
 | 
						||
    //[Space(20)]
 | 
						||
    //[Toggle(_HUE)] _EnableHue("色调修改(比较费)", float) = 0
 | 
						||
    //_Hue("色调", range(-0.5, 0.5)) = 0
 | 
						||
  }
 | 
						||
 | 
						||
	SubShader
 | 
						||
	{
 | 
						||
		Tags { "RenderType"="Transparent" "Queue"="Transparent+63"}
 | 
						||
		LOD 300
 | 
						||
 | 
						||
    Pass // 1
 | 
						||
    {
 | 
						||
      Name "SMOKE"
 | 
						||
      Blend SrcAlpha OneMinusSrcAlpha
 | 
						||
      Cull Off
 | 
						||
      ZWrite Off
 | 
						||
      CGPROGRAM
 | 
						||
#pragma vertex vert
 | 
						||
#pragma fragment frag
 | 
						||
#pragma multi_compile_fog
 | 
						||
#pragma multi_compile __ _MOVEABLE
 | 
						||
#pragma multi_compile __ _HUE
 | 
						||
#pragma multi_compile __ _HASEXTENTDATA
 | 
						||
#pragma multi_compile _QUADFACE_TO_Z _QUADFACE_TO_Y _QUADFACE_TO_X
 | 
						||
 | 
						||
#include "UnityCG.cginc"
 | 
						||
 | 
						||
      sampler2D _SmokeTex;
 | 
						||
      sampler2D _ChaosTex;
 | 
						||
      float4 _ChaosTex_ST;
 | 
						||
      float _SmokeSpeed;
 | 
						||
      float _ChaosScale;
 | 
						||
#ifdef _HUE
 | 
						||
      float _Hue;
 | 
						||
#endif
 | 
						||
 | 
						||
//#define _TEXNAME _SmokeTex
 | 
						||
#define _RAND_A 0.33
 | 
						||
#define _RAND_B 0.51
 | 
						||
#define BUILD_IN_QUAD_MESH
 | 
						||
#include "Flame.cginc"
 | 
						||
 | 
						||
      fixed4 frag (v2f i) : SV_Target
 | 
						||
      {
 | 
						||
#ifdef _MOVEABLE
 | 
						||
        fixed2 chaos = tex2D(_ChaosTex, i.uv1 - float2(0, frac(_Time.x * _SmokeSpeed))).yz;
 | 
						||
#else
 | 
						||
        fixed2 chaos = tex2D(_ChaosTex, i.uv1 - float2(0, i.offset + frac(_Time.x * _SmokeSpeed))).yz;
 | 
						||
#endif
 | 
						||
        chaos = (chaos - 0.5) * _ChaosScale * 0.2;
 | 
						||
        fixed4 col = tex2D(_SmokeTex, (i.uv + chaos.xy));
 | 
						||
        //col.a *= 0.5;
 | 
						||
 | 
						||
#ifdef _HUE
 | 
						||
        half h, s, l;
 | 
						||
        rgb2hsl(col, h, s, l);
 | 
						||
        col.xyz = hsl2rgb(h + _Hue, s, l).xyz;
 | 
						||
#endif
 | 
						||
        UNITY_APPLY_FOG(i.fogCoord, col);
 | 
						||
        return col;
 | 
						||
      }
 | 
						||
      ENDCG
 | 
						||
    }
 | 
						||
	}
 | 
						||
}
 |