그래픽
[Unity URP Shader] 웨이브
Krapboss
2024. 4. 17. 02:52
[출처] Unty Shader Training
https://youtu.be/mlNWoROvavY?si=7XpTECHR_CJ5u62d
Properties{
,...[생략]
//NoScaleOffset : tile과 offset을 숨기는 명령
[NoScaleOffset] _Flowmap("Flowmap", 2D) = "white" {}
}
....[생략]
sampler2D _Flowmap;
VertexOutput vert(VertexInput v)
{
VertexOutput o;
o.vertex = TransformObjectToHClip(v.vertex.xyz);
o.uv = v.uv.xy * _MainTex_ST.xy + _MainTex_ST.zw;
//[노이즈 발생]
half4 noise = tex2Dlod(_Flowmap, float4(o.uv, 0, 0));
o.vertex.y += sin(_Time.y + v.vertex.x + v.vertex.z) * noise.r * _FlowIntensity ;
return o;
}
half4 frag(VertexOutput i) : SV_Target
{
float4 tex01 = _MainTex.Sample(sampler_MainTex, i.uv);
float4 color = tex01;
return color;
}
# 오브젝트좌표계 vertex 위치에 따른 웨이브 만들기
half4 noise = tex2Dlod(_Flowmap, float4(o.uv, 0, 0));
o.vertex.y += sin(_Time.y + v.vertex.x + v.vertex.z) * noise.r * _FlowIntensity ;
|
# 오브젝트의 위치에서의 x값과 z값에 따른 사선으로 생성된 파형에 시간값을 더해 움직임을 만듦 sin(_Time.y + v.vertex.x + v.vertex.z)
# Flowmap에서 uv좌표에 해당하는 rgb값을 읽어옵니다. #float4의 앞에 값을 uv, 뒤에 zw는 LOD에 대한 상세 정보 half4 noise = tex2Dlod(_Flowmap, float4(o.uv, 0, 0));
# 대각선으로 웨이브를 주며 텍스쳐에 따 노이즈를 주어 일정하지 않은 파동 만들기 o.vertex.y += sin(_Time.y + v.vertex.x + v.vertex.z) * noise.r * _FlowIntensity ;
|
인스펙터
결과