픽셀
디지털 이미지를 구성하는 최소 단위
화소는 빛의 3원색인 RGB 값으로 더 작은 단위인 채널*을 구성해, 3가지 채널을 혼합해 원하는 색을 만들고, 각 채널을 통과하는 빛의 양으로 계조(Grayscale)를 표현한다.
여기에 불투명도를 나타내기 위한 알파 채널까지 포함해서 색상을 표현한다.
*색상이 0~255인 것은 8비트 모니터 기준으로 표현한 것이고, 10비트 모니터는 0~1023으로 표현할 수 있다.
렌더 파이프라인
그래픽 파이프라인
버텍스 로더 (Vertex Loader)
버텍스 ( Vertex ) : 물체를 구성하는 점
버텍스는 렌더링을 위한 여러가지 속성(인덱스 번호, 위치, 노멀, 색, UV 등)이 저장되어 있다.
삼각형을 그려 물체의 기본적인 형태를 만든다.
*삼각형이 기본인 이유
삼각형만이 유일하게 한 면 만을 표현할 수 있고, 모든 도형은 삼각형으로 표현할 수 있기 때문
버텍스 쉐이더 (Vertex Shader)
버텍스 쉐이더는 버텍스와 관련된 각종 연산을 한다.
1) 월드 변환 (World Transform)
로컬 스페이스에서 월드 스페이스로 변환
2) 뷰 변환 (View Transform)
카메라가 화면에 담아야 비로서 출력이 된다.
카메라로부터 상대적으로 얼마나 떨어져 있는지 고려되어야 한다.
뷰 변환에서는 원근감은 고려되지 않는다. (직교투영 : Orthographic Projection)
3) 원근 투영 (Perspective Projection)
원근감을 살리기 위해 원근 투영을 한다.
카메라가 직교투영 모드인 경우 이 단계는 생략된다.
레스터라이즈 (Rasterize)
물체를 화면에 출력할 픽셀과 대웅시키는 과정.
레스터라이즈는 레스터라이저(Resterizer)가 해준다.
픽셀 쉐이더 (Pixel Shader) / 프래그먼트 쉐이더 (Fragment Shader)
각종 조명, 텍스처, 그림자 , 특수효과 등을 연산해 최종적인 색을 결정한다.
Unity의 렌더 파이프라인
Unity의 렌더 파이프라인은 빌트인 렌더 파이프라인 (Built-in Render Pipleline)과 스크립터블 (Scriptable Pipeline)이 있다.
Built-in (빌트인 렌더 파이프라인)
유니티 기본 렌더 파이프라인.
범용적으로 사용할 수 있으나, 무겁
URP (유니버셜 렌더 파이프라인)
광범위한 플랫폼에서 최적화된 그래픽스를 구현하도록 지원하는 SRP
이전 경량 렌더 파이프라인 (LWRP / Lightweight Render Pipleline)을 대체함
HDRP (고해상도 렌더 파이프라인)
Custom (커스텀 렌더 파이프라인)
* 물리 기반 쉐이더 (Physically Based Shader)
정반사, 난반사
금속, 비금속
금속 : 스펙큘러 컬러 = 금속 색상
비금속 : 스펙큘러 컬러 = 흰색
빌트인 렌더 파이프라인이 PBR방식이라 무겁대요.
NPR (Non Photo Realistic) : 카툰렌더링 같은...비 실사
유니티에서 쉐이더를 하고 싶으면 ~ 에셋을 사세요 (농담)
DirectX랑 OpenGL을 공부해야한다.
HLSL 공부해야함
유니티 쉐이더 스타트업 책 보면 기초는 알 수 있을지도...
유니티 쉐이더 살펴보기
유니티 쉐이더를 사용하려면 두 가지 방법이 있다.
1) 쉐이더랩 : 코드로 작성
2) 쉐이더 그래프 : 시각적으로 다루는 툴
...
머지?