Featured image of post Unity 엔진용 Flow 쉐이더 컨버팅

Unity 엔진용 Flow 쉐이더 컨버팅

이런 제길. 결국 다 다시 만들었습니다.

쉐이더 툴에서 만드는건 결국 참고로만 쓰고, 최종으로는 다시 수작업으로 작성.
커스텀 라이팅 체계를 쓰다보니까, 오히려 이펙트처럼 라이트 체계가 필요 없는 경우에서는 쓸데없이 커스텀 라이팅을 활성화 시켜서 디퍼드 렌더링까지 건드리는 사태를 초래하네요. 이펙트에 무슨 디퍼드 렌더링이야… 알파 들어간 녀석은 무조건 포워딩입니다.


동작은 잘 됩니다. 코드도 간단.

Shader “test/jpflow2” {
Properties {
 
 _MainTex (“MainTex”, 2D) = “white” {}
 _MainTexU(“MainTex U Scroll”, Float ) = 0
 _MainTexV(“MainTex V Scroll”, Float ) = 0
  
 _MainTex1 (“MainTex1”, 2D) = “white” {}
 _MainTex1U(“MainTex1 U Scroll”,Float ) = 0
 _MainTex1V(“MainTex1 V Scroll”,Float ) = 0
 
}

SubShader {
 Tags { “Queue”=“Transparent” “IgnoreProjector”=“True” “RenderType”=“Transparent” }
 Blend SrcAlpha One
 //ColorMask RGB
 Cull Off
 ZWrite Off
 Fog { Color (0,0,0,0) }
 
 CGPROGRAM
      #pragma surface surf Lambert 
//(라이팅 체계를 프레그먼트로 사용하는데, 렘버트를 사용중. 더 심플한건 없나? 무슨 종류가 있는지 알 수 없어서 고생스럽네요. 내부를 볼 수 없으니… )
 //#pragma target 2.0
 
 
      struct Input {
          float2 uv_MainTex;
    float2 uv_MainTex1;
      };
     
   sampler2D _MainTex;
   float _MainTexU;
   float _MainTexV;
  
      sampler2D _MainTex1;
   float _MainTex1U;
   float _MainTex1V;
  
      void surf (Input IN, inout SurfaceOutput o)
  {
   o.Albedo = 0.0;
   o.Normal = float3(0.0,0.0,1.0);
   o.Emission = 0.0;
   o.Gloss = 0.0;
   o.Specular = 0.0;
   o.Alpha = 1.0;
   
   float2 MainTexScroll=_Time.x * float2(_MainTexU,_MainTexV ) ;
//(_Time이 float2로 되어 있습니다! 선언할 필요 없이 가져다 쓰는건 편하지만 덧셈할때 주의해야 합니다. )
   float2 UV_Pan0 = IN.uv_MainTex + MainTexScroll ;

   float2 MainTex1Scroll=_Time * float2(_MainTex1U,_MainTex1V ) ;
   float2 UV_Pan1 = float2(IN.uv_MainTex1.x ,IN.uv_MainTex1.y) + MainTex1Scroll ;
   
   float4 Finaltex = tex2D (_MainTex,UV_Pan0) * tex2D (_MainTex1,UV_Pan1) ;
   o.Emission  = Finaltex.rgb;
   o.Alpha = Finaltex.a;
  }
      ENDCG
}
}

Hugo로 만듦
JimmyStack 테마 사용 중