1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | Shader "Custom/FirstSurfaceShader" { Properties{ _MainTex("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Standard fullforwardshadows sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutputStandard o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex); o.Emission = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" } | cs |
위와 같은 코드가 있을 때
오른쪽 아래에서 연속되던 텍스쳐가 밀려 내려와 보임
내가 사용한 그림의 경우에선 오른쪽 아래에서 연속되던 것인지는 확인 불가능
모든 vertex에 있는 UV의 값이 0.5씩 증가했으므로, UV의 값이 변했기 때문이고 결과적으로는 왼쪽 아래로 이동한 것
텍스쳐의 Wrap Mode에 따라 다양한 응용 가능할 듯 함
Wrap Mode에는
Repeat - 반복
Clamp - 끝날 때 색상으로 남은 화면 채우기
Mirror - 거울 효과
Mirror Once - 거울 효과 한 번 후에는 Clamp인 듯
Per-axis - U axis와 V axis 따로 위의 설정을 줌
Repeat / Mirror
Per-axis - Mirror, Repeat / Per-axis - Clamp, Mirror
UV가 Time으로 흘러가게 하기
내장된 변수인 _Time 사용하여 _Time.y가 일반적인 시간이니 더해줌
fixed4 c = tex2D(_MainTex, IN.uv_MainTex + _Time.y);
Animated Materials가 켜져있다면 이미지가 움직임. U와 V에 동시에 _Time.y를 더해주기 때문에 대각선으로 움직임
x와 y로 나누어 연산해주면 U 또는 V 방향으로만 흘러가게 할 수 있음
X 방향으로 흘러가게 하고싶을 때
fixed4 c = tex2D(_MainTex, float2(IN.uv_MainTex.x + _Time.y, IN.uv_MainTex.y));
Y 방향으로 흘러가게 하고싶을 때
결과물
'Unity3D C# > 유니티 쉐이더 공부' 카테고리의 다른 글
버텍스 컬러 마스킹으로 활용하기 (0) | 2018.01.11 |
---|---|
버텍스 컬러와 버텍스 컬러의 시각화 (0) | 2018.01.10 |
UV의 기본개념과 시각적 확인 (0) | 2018.01.08 |
lerp 함수의 응용 (0) | 2018.01.07 |
쉐이더 조절로 이미지 흑백 만들기와 Lerp 함수의 기본 (0) | 2018.01.06 |