1. 셰이더란?
: 3D 컴퓨터 그래픽에서 다양한 시각적 효과(위치, 색상, 텍스쳐, 조명 등)를 계산하여 최종적으로 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수.
- 셰이더의 특징 : 다수의 정점을 한 번에 계산하지 않고, 하나의 정점이 입력되면 그 하나의 정점에 대해서만 계산과 처리를 한다. (각 정점의 수만큼 셰이더가 개별적으로 계산을 실행하는 것)
2. 렌더링이란?
: 정점(Vertex)으로 정의된 물체를 그려내는 과정
3. 렌더링 파이프라인이란?
: GPU를 이용해 3D 이미지 리소스를 2D 래스터 이미지로 표현하기 위한 단계적인 과정.
* 래스터 이미지 : 픽셀로 표현되는 이미지
4. 렌더링 파이프라인의 과정
1) Vertex 데이터 : Vertex 데이터들을 받아옴(index number, position, normal color, UV 등등)
2) Vertex shader : 행렬 변환을 통해 모델로 존재하는 정점들을 카메라 상의 정점으로 변환. x,y값은 -1~1로 카메라 상의 위치를 나타내고, z는 0~1로 깊이를 나타낸다.
3) 래스터 변환(Rasterization) : 화면에 보이기 직전의 픽셀로 변환하는 과정. 뷰포트 변환, 프래그먼트 생성, 정점 간의 보간으로 이뤄진다.
4) Pixel shader : 래스터 변환에서 생성된 프래그먼트에 어떤 색을 채울지 결정. 컬러 값과 깊이 값(멀리 있는 물체가 가려짐)을 결과로 내보낸다.
5. 유니티 셰이더
: 유니티 셰이더는 3가지가 있습니다.
1) Surface Shader : 빛과 그림자의 영향을 받는 셰이더
- 일반적으로 가장 많이 사용됨
- 복잡한 표면 셰이더를 간결한 방식(짧은 코드)으로 쉽게 작성
- 유니티의 라이팅 파피프라인과 상호작용하는, 높은 추상화 레벨이 적용된 셰이더
- 사용 언어 : ShaderLab + CG or HLSL
2) Vertex and Fragment Shader : 셰이더가 조명과 상호작용할 필요가 없거나 Surface 셰이더로 처리할 수 없는 경우
- 셰이더 작성 자유도가 높은 대신 코드 작성량이 많음
- 빛과 상호작용하기 어려움
- 사용언어 : CG or HLSL
3) Fixed Function Shader : 간단한 효과를 위한 레거시 셰이더 문법
- 사용언어 : ShaderLab
참조
https://dreamzelkova.tistory.com/entry/SRP-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0
https://dev-nicitis.tistory.com/6
'[Unity] > [Unity]' 카테고리의 다른 글
[Unity] IComparer, IComparable 인터페이스 (0) | 2022.02.10 |
---|---|
[Unity] 유니티 빌드 버전 관리하는 법 (0) | 2021.12.19 |
[Unity] 웹사이트 URL 연결하는 법(feat. Application.OpenURL) (1) | 2021.10.03 |
[Unity] Unable to find java in the system path 오류 해결 방법 (0) | 2021.09.26 |
[Unity] 유니티 안드로이드 64 bit 빌드하기 (2) | 2021.09.25 |