반응형
SMALL
쉐이더란?
- '컴퓨터 그래픽에서 최종적으로 화면에 출력하는 픽셀의 "색" 을 정해주는 함수'
- 한국말로 직역하면 음영이 된다.
- 좀 더 아티스트적인 면에서 정의하면 '그래픽 데이터의 색상을 계산하여 다양한 재질을 표현하는 방법'
- 그래픽 아티스트 친화적 용어로는 Material 이 있다.
- 역사적인 측면에서의 Shader시작은 Pixar의 랜더링 엔진 렌더맨(Renderman) 이지만 본격적인 실시간 게임용 쉐이더의 시작은 다이렉트X8 버전부터이다
렌더링 파이프라인의 일반적인 과정
- 일반적인 렌더링 파이프라인의 과정
- 오브젝트 데이터 받아오기
- 정점 (버텍스 : Vertex) 쉐이더
- 래스터라이저(Rasterizer)
- 픽셀쉐이더(Pixel Shader) / 프레그먼트 쉐이더(Fragment Shader)
1단계 : 오브젝트 데이터 가져오기
- 그래픽카드는 Vertex로 이루어지 물체의 데이터 값을 받아온다.
(엔진으로 넘어가는 데이터는 Vertex의 값 뿐이다. = 우리가 흔히 보는 면까지 생성된 모델링을 넘기지 않는다.) - 그래픽 카드에서는 Vertex 데이터를 바탕으로 삼각형 면을 생성한다.
2단계 : 정점 (Vertex) 쉐이더
- 이 단계부터 쉐이딩 작업이 시작되며 아티스트들이 처음으로 쉐이더를 제어하는 데이터에 접근할수 있게된다.
- 오브젝트들은 자신만의 로컬좌표계를 가지고 있으며 해당 좌표는 월드 변환 행렬 (또는 매트릭스 행렬)을 곱하여 월드 좌표계로 변환시킨다.
- 월드 좌표계는 유니티엔진에서는 모델(Model) 이라고 부른다.
- 월드 행렬로 변환된 객체들의 버텍스들은 화면에 보이기 위해 카메라 행렬을 곱하여 카메라의 중심점으로 부터 상대적 거리로 다시 연산된다.
- 이때 중심점은 카메라의 로컬포지션을 기반으로 계산된다.
- 카메라 행렬은 뷰(View) 또는 오쏘 그래픽 프로젝션(Orthographic Projection)이라고 불리기도 한다.
- 이 시점부터 모니터에 출력하는 것이 가능한 상태가 된다. (하지만 출력을 위해선 픽셀 쉐이더까지 순서가 진행되어야 한다.)
- 카메라 행렬로 정렬된 버텍스들은 다시 한번 프로젝션(Projection) 행렬로 곱해진다.
- 프로젝션 행렬이란 카메라의 먼 곳은 좁혀진 것처럼 버텍스의 위치를 조정해주기 위해 사용된다.
( = 원근감을 부여해주기위한 방법이다.) - 해당 연산은 유니티 카메라의 설정이 퍼스펙티브 (Perspective) 일때 일어나는 것으로 오쏘그래픽 프로젝션일경우에는 일어나지 않는다.
- 프로젝션 행렬이란 카메라의 먼 곳은 좁혀진 것처럼 버텍스의 위치를 조정해주기 위해 사용된다.
- 오브젝트들은 자신만의 로컬좌표계를 가지고 있으며 해당 좌표는 월드 변환 행렬 (또는 매트릭스 행렬)을 곱하여 월드 좌표계로 변환시킨다.
3단계 : 래스터라이저(Rasterizer)
- 객체가 화면에 표시될때 어느 픽셀로 표현될것인지를 정해주는 것이 Rasterizer단계이다.
- 3D 오브젝트는 모니터에 보이도록 Pixel화 되며 이것을 레스터화 라고 표현한다.
- 이 단계 이후 픽셀쉐이더에서 픽셀에 직접 접근할수 있게된다.
- 최근 Direct-X에서는 버텍스쉐이더와 픽셀쉐이더 중간에 위치하는 쉐이더가 추가된다.
- 헐 쉐이더 (Hull Shader)
- 테셀레이터 (Tessellator)
- 지오메트리 쉐이더 (Geometry Shader)
- 컴퓨트 쉐이더 (Compute Shader)
4단계 : 픽셀쉐이더 (Pixel Shader) / 프레그먼트 쉐이더 (Fragment Shader)
- 픽셀의 색상을 결정하는 것이 Pixel Shader단계이다.
- 조명과 텍스쳐 그림자와 각종 특수효과들을 연산하게 되는 단계이기도 하다.
세부적이지는 않지만 큰 틀로 공부해본 렌더링 파이프라인이었다.
다음 포스팅에서는 모니터에 표현되는 색과 빛의 기본원리에 대해 간략하게 알아볼예정.
반응형
LIST
'게임 그래픽 프로그래밍 > 개인공부' 카테고리의 다른 글
서피스 쉐이더 - 쉐이더 구조 및색상 출력 (0) | 2023.12.15 |
---|---|
서피스 쉐이더 - 쉐이더 Properties (0) | 2023.12.14 |
서피스 쉐이더 - 마테리얼, 쉐이더 생성 및 오브젝트 적용방법 (0) | 2023.12.13 |
유니티 렌더링 파이프라인 버전(URP 와 HDRP) (1) | 2023.07.27 |
유니티 렌더 파이프라인 (Render Pipeline) (0) | 2023.07.26 |