본 게시물은 Unity Korea 채널의 URP Shader Training 시리즈와 강의에 사용된 도큐먼트를 공부하며 정리한 게시물입니다.
다른 텍스쳐를 사용해서 UV 움직임에 임의의 값을 추가해서 변화를 주는 방식 사용.
Texture Sampling 추가
Properties
{
_TintColor("Test Color", Color) = (1, 1, 1, 1)
_Intensity("Range Sample", Range(0, 1)) = 0.5
_MainTex("Main Texture", 2D) = "white"{}
[NoScaleOffset] _FlowMap("Flow Map", 2D) = "white" {}
}
[NoScaleOffset]은 Properties에서 tile과 offset을 숨김.
앞의 텍스쳐에 사용되는 Sampler값을 같이 사용하기 떄문에 Inspector 창에 노출될 필요가 없기 때문.
스크롤되는 Time값은 시간이 지날수록 계속 커지게 되므로, 잘라서 사용하기 위해 frac함수 사용.
frac(x) : x의 소수점 이하 부분 Return
half4 frag(VertexOutput i) : SV_TARGET { float4 flow = _FlowMap.Sample(sampler_MainTex, i.uv); i.uv += frac(_Time.x) + flow.rg; float4 color = _MainTex.Sample(sampler_MainTex, i.uv); color.rgb *= _TintColor * _Intensity; return color; }
Flow Intensity, Flow Time과 같은 Properties 추가로 Shader 조정 가능
Properties { _TintColor("Test Color", Color) = (1, 1, 1, 1) _Intensity("Range Sample", Range(0, 1)) = 0.5 _MainTex("Main Texture", 2D) = "white"{} [NoScaleOffset] _FlowMap("Flow Map", 2D) = "white" {} _FlowIntensity("Flow Intensity", range(0, 1)) = 1 _FlowTime("Flow Time", Range(0, 10)) = 1 } half4 frag(VertexOutput i) : SV_TARGET { float4 flow = _FlowMap.Sample(sampler_MainTex, i.uv); i.uv += frac(_Time.x * _FlowTime) + flow.rg * _FlowIntensity; float4 color = _MainTex.Sample(sampler_MainTex, i.uv); color.rgb *= _TintColor * _Intensity; return color; }