텍스처 매핑(Texture Mapping)
- 3D 메쉬에 입히는 것
- Texture Mapping을 위해서는 텍스처 좌표(Texture Coordinates) 또는 UV 좌표(UV Coordinates)가 있어야 함.
- 이들 좌표는 Vertex 단위로 지정된 다음 Mesh의 Face 위에서 보간된다.
즉, Mesh Fragment 각각의 Texture 좌표는 메쉬를 구성하는 Vertex의 Texture 좌표들이 보간된 값에서 얻는다.
텍스처 샘플링(Texture Sampling)
- 텍스처에서 특정 좌표(위치)의 색상 값을 찾는 과정.
- GLSL에서 텍스처를 저장하는 변수 타입을 샘플러라고 함.
쿼드(Quad)
- 두개의 삼각형으로 이뤄진 사각형 또는 정사각형을 의미함.
- 대부분의 게임 엔진에서 삼각형 Face만으로 구성된 메쉬를 요구함.
UV 좌표
- UV 좌표라고 부르는 이유는 XY 좌표가 위치 데이터에서 사용되고 있기때문에 구분하기 위해서 UV로 사용.
- 이미지의 좌측 하단에서 우측 상단 방향으로 진행한다.
UV 좌표 스크롤링
- UV 좌표가 항상 0과 1 사이에 있다는 얘기가 Shader가 사용할 수 있는 좌표 값이 0과 1 사이라는 의미는 아님.
- 텍스처에서 색상을 가져올 때 0과 1 범위 밖의 좌표를 사용해도 전혀 문제가 되지 않음.
- 텍스쳐를 어떻게 설정하는가에 따라서 결과가 달라질 뿐임.
- 텍스처에서 색상을 가져올 때 0과 1 범위 밖의 좌표를 사용해도 전혀 문제가 되지 않음.
- 0과 1 사이가 아닌 좌표에서 텍스처를 샘플링 할 때 텍스처가 대응하는 방식을 랩 모드(Wrap Mode)라고 함.
- 화면에 계속 옆으로 이동하는 듯한 효과를 주는것도 가능함.
밝기 조정
- 사용 예
- 버튼을 클릭(또는 비활성화)하면 버튼이 어두워지게 함.
- 상호작용할 대상을 깜박이게 함.
- 이미지를 밝게 만드는 경우
- Shader 코드에서 색상을 밝게 하거나 어둡게한다는 것은 RGB 채널 각각을 일률적으로 증가 또는 감소시킨다는 것.
다르게 표현하면, 채널 각각을 동일한 값으로 곱한다는 의미임. - Shader 코드에서 Vector의 컴포넌트에 접근할 때 x, y, z, w 대신 r, g, b, a을 써도 동일한 결과를 얻을 수 있음.
색상연산
- 색상 채널은 어느 하나라도 1.0에 가까워질수록 밝아지고 0에 가까워질수록 어두워짐.
- 색상 채널은 1 이상의 값과 0 이하의 값을 가질 수 없음.
- 이미지에 색상을 곱할 때, 어두운 색상을 가진 픽셀은 밝은 픽셀보다 영향을 덜 받음.
반면, 더하기나 빼기를 할 때는 모든 픽셀을 일률적으로 조정함.| - 색상 값에 일괄적으로 스칼라 곱을 하는 것은 밝기 조절에 사용할 수 있다.
각 컴포넌트에 값을 곱하는 것(채널마다 색상을 다르게 추가하게 됨)으로 색조 조절을 할 수 있다. - 나누기 보다는 곱하기를 많이 사용하는 이유는, GPU에서 나누기가 곱하기보다 연산이 약간 느리기도하고 일반적으로 곱하기를 많이 사용함. (나누기를 사용해도 무방함)
- 곱하기와 더하기를 동시에 할 경우 최적화를 위해서 곱하기를 하고 더하기를 해야 함.
Mix()
- 2개의 텍스처를 혼합할 때 사용하는 함수.
'Technical > Shader' 카테고리의 다른 글
Uniform Variable (0) | 2021.04.15 |
---|---|
Fragment Shader (0) | 2021.03.01 |
Vertex Shader (0) | 2021.03.01 |
OpenGL (0) | 2021.03.01 |
Shader (0) | 2021.03.01 |