안녕하세요. TA새벽언덕입니다.
Shader에서 사용하는 uv와 sample2D개념에대해서 말씀드리고자합니다.
UV란?
UV좌표는 UVW(== RGB, XYZ와 같음)란 세개의 채널이있지만, 2차원 좌표만을 사용하기 때문에 마지막 W를 제외한 UV 두개의 채널을 이용합니다.
Sampler 2D
텍스쳐는 float가 아닌 'sampler2D'라는 자료형을 사용합니다.
텍스쳐를 오브젝트에 매핑하기 위해서는
1)입력할 텍스쳐
2)UV좌표
위 2가지 정보가 하며, 따라서 자료형 float로는 텍스쳐를 매핑할 수 없습니다.
UV와 XYZW
UV는 4개까지 채널을 쓸수있습니다.
UV에서 주로 float2를쓰지만, 최대 float4까지 사용할 수있습니다.
초기값으로 x,y,z,w중에 z에는 0을 w에는 1을 넣어서 보관합니다.
z == b, 파랑색의 자리에는 0이 들어가고
w == a, alpha의 자리에는 1이 들어가므로
시각적으로 보이는것은 UV == rg입니다.
UV는 결국에는
floa2 (0, 0) = 검정색
float2 (1, 0) = 가로로 그라데이션 (빨강)
float2 (0, 1) = 세로로 그라데이션 (녹색)
float2 (1, 1) = 위의 다채로운색의 이미지
를 볼 수있습니다.
Samper2D 최적화
아래는 3개의 텍스쳐를 1개의 샘플러로 사용합니다.
캐릭터와 같이 Tiling, Offset이 일어나지 않을경우에 적합하고,
배경과 같이 Tiling, Offset이 제각각 일경우 각각의 Sampler를 써 주어야합니다.
sampler2D _MainTex;
sampler2D _SecondTex;
sampler2D _ThirdTex;
SamplerState sampler_MainTex;
half4 color = *MainTex.Sample(sampler_MainTex, uv);
color += *SecondTex.Sample(sampler_MainTex, uv);
color += ThirdTex.Sample(sampler_MainTex, uv);
오늘은 UV와 Sample2D 내용에대해서 말씀드렸습니다.
Shader를 공부 하면서 이해한 내용을 조금씩 정리하고있습니다.
영상으로 보기를 원하시는 분들은 유튜브에 "새벽언덕"으로 검색 부탁드립니다.
TA 새벽언덕 인사드립니다.
글 읽어주셔서 감사합니다.
좋은하루 되세요 ㅎㅎ
'유니티엔진 > 유니티쉐이더' 카테고리의 다른 글
Shader의 Struct, SubShader, Pragma (0) | 2022.02.23 |
---|---|
Properties & Shader 경로지정 (0) | 2022.02.16 |
쉐이더의 Culling, Queue, RenderType (0) | 2022.01.26 |
SRP Batcher (0) | 2022.01.26 |
01 - 쉐이더란? (0) | 2021.09.17 |