본문 바로가기

유니티엔진/유니티쉐이더

UV와 Sampler2D

안녕하세요. 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