[유니티 쉐이더 스타트업]
을 읽었었는데 읽던 당시에도 버전이 안맞아서 (사용 중인 유니티 버전이 높아서)
핑크 그래픽들과 무수히 싸워가며 예제를 실행했었다.
urp 버전 책을 사야겠다 생각하고 있었는데 운좋게 지인의 책을 빌릴 수 있어서 최대한 기록해가며 읽어보려 한다.
사실 기본 개념은 [유니티 쉐이더 스타트업]
과 거의 동일해서 사실상 복습이 될 것 같다. 따라서 개념을 하나하나 적진 않을 것 같고, 우선 기본적인 것들만 이해해보려 한다.
Surface Shader 에 대해 다룸. 비교적 간단한 코딩으로 구현 가능.
이 셰이더의 경우 유니티 2018버전이 나오면서 '빌트인 파이프라인' 으로 분류됨.
SRP(Scriptable Render Pipeline).
버전이 올라가면서 스크립팅이 아닌
언리얼의 블루프린트나 유니티의 볼트 처럼 노드 블록들을 가지고
구현할수 있도록 변경된 듯. 👉 셰이더 그래프 (Shader Graph)
HLSL 셰이더 기반의 비주얼 스크립팅.
쇠의 재질을 표현한다거나, 물에 반사되는 표면, 거친 표면 등 최종적으로 화면에 출력되는 픽셀의 정보를 결정하는 함수.
[유니티 쉐이더 스타트업]
에서는 파티클을 사용하면 부하가 큰 불꽃이나,
사람 얼굴의 주름 등을 직접 만들어내는 것이 아닌 셰이더를 씌워 그럴듯하게 보이게 처리했다.
책의 정의로는 데이터의 음영과 색상을 계산하여 다양한 재질을 표현하는 방법.
렌더링의 순서.
오브젝트 데이터 받아오기
: 버텍스 정보(위치, 노말, 색상, uv, 접선 등) 가져오기
버텍스(정점, Vertex) 셰이더
: 로컬 좌표계를 월드(=모델) 좌표계로 변환.
변환된 것을 다시 카메라(=뷰) 좌표계로 변환.
변환된 것을 원근감을 고려한 프로젝션 좌표계로 변환
레스터라이져
: 실제로 모니터에 출력하도록 함. 변환된 매쉬가 모니터에 표현될 때 어느 픽셀로 표현될 것인지를 나타냄.
모니터에 표시될수 있도록 3D 모델링을 2D 이미지화(픽셀화) 하는 것.
픽셀 셰이더
, 프레그먼트 셰이더
: 조명과 텍스처, 그림자 등의 특수 효과를 연산.