새소식

그래픽

[Unity URP Shader] 플로우맵을 이용한 애니메이션

  • -

 

[출처] Unty Shader Training

https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d

 

 

 

Properties{
	.......[생략]
    //NoScaleOffset : tile과 offset을 숨기는 명령
    [NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {}
    //흐르는 시간 배수와, 강도
    _FlowIntensity("flow Intensity", Range(0,1)) = 1
    _FlowTime("flow time", Range(0,10)) = 1
}

......[생략]

VertexOutput vert(VertexInput v)
{
    VertexOutput o; 	 
    o.vertex = TransformObjectToHClip(v.vertex.xyz);    			     		 
    o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw;
    o.uv2 = v.uv.xy * _MainTex02_ST.xy + _MainTex02_ST.zw;
    return o;    
}   				 

half4 frag(VertexOutput i) : SV_Target
{   		 

    float4 flow = _Flowmap.Sample(sampler_MainTex, i.uv);
    i.uv += frac(_Time.x * _FlowTime) + flow.rg * _FlowIntensity;

    float4 tex01 = _MainTex.Sample(sampler_MainTex, i.uv);
    float4 tex02 = _MainTex02.Sample(sampler_MainTex, i.uv2);   		
    float4 mask  = _MaskTex.Sample(sampler_MainTex, i.uv);

    return color;
}

 

# 시간에 따른 애니메이션 효

 i.uv += frac(_Time.x * _FlowTime) + flow.rg * _FlowIntensity;
frac : 소수점 이하만 반환하여 과도한 uv증가를 감소

flow.rg : uv에 rg값을 섞어 노이즈를 주기 위 위함

_FlowIntensity : 노이즈 강도 조절

_FlowTime : 흐르는 시간의 배수

 

 

 

인스펙터

 

 

결과

Contents

아핫

땡큐하다