Unity3D/Shader
Unity) [Shader] 불 이펙트 만들기
HSH12345
2023. 3. 16. 09:28
Shader "Custom/fire"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_MainTex2 ("Albedo (RGB)", 2D) = "white" {}
_Strength ("Strength", Range(0,10)) = 0
}
SubShader
{//"Queue" = "Transparent" 불투명 렌더타입의 렌더순서를 정해줘서 카메라를 통해 순서에 맞게 출력되도록 설정
Tags { "RenderType"="Transparent" "Queue" = "Transparent"}
CGPROGRAM
#pragma surface surf Standard alpha:fade
#pragma target 3.0
sampler2D _MainTex;
sampler2D _MainTex2;
float _Strength;
struct Input
{
float2 uv_MainTex;
float2 uv_MainTex2;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 d = tex2D(_MainTex2, float2(IN.uv_MainTex2.x, IN.uv_MainTex2.y - (_Time.y * +_Strength)));
fixed4 c = tex2D(_MainTex, IN.uv_MainTex + d.r);
o.Emission = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
- 배경을 반투명하게 만늘기 위해 렌더타입을 Transparent로 지정한다.
- 두 개의 텍스쳐를 활용하여, 하나의 텍스쳐에는 uv의 y좌표 값에 -연산을 하여 아래에서 위로 흐르는 듯한 효과를 주고, 다른 하나는 이전 텍스쳐의 r 값을 활용하여 흰색 부분만 출력되록 한다.