2. 셰이더란 무엇인가? - 1 ~ 4
1. 셰이더의 간단 정의
2. CPU vs GPU
3. 3D 폴리곤이 화면에 그려지는 과정
4. 렌더링과 셰이더
5. Grapics API
6. 버텍스 셰이더와 픽셀 셰이더
7. 보간기(Interpolator)
8. 픽셀 셰이더 vs 프래그먼트 셰이더
9. 셰이더는 시뮬레이션이 아닌 단순화 연산
1. 셰이더의 간단 정의
* 셰이더
- 모니터 화면에 그려지는 픽셀의 색을 결정하는 프로그램
- GPU 내부에서 실행
2. CPU vs GPU
CPU와 GPU는 서로 다른 장 단점을 가지고 있으며, 사용 목적이 다름
-> 차이 설명하는 영상 : NVIDIA - Mythbusters Demo GPU versus CPU (2009)
https://youtu.be/-P28LKWTzrI?si=cPLkiSdao1P_G3-X
CPU (Central Processing Unit) : 중앙 처리 장치 |
GPU (Graphics Processing Unit) |
중앙 처리 장치 | 그래픽 처리 장치 (그래픽 카드) |
- 복잡하고 다양한 연산을 수행 - 순차적으로 하나씩 처리 |
- 단순하고 정해진 연산 수행 - 동시에 병렬 처리 |
+) 영상 : 스마일 모양 그림, 점을 하나씩 순차적으로 그림 | +) 영상 : 모나리자 그림, 거의 동시에 그려짐 |
=> 셰이더 : 모나리자를 구성하는 여러 픽셀들 하나마다 수행되는 작은 프로그램
다만 GPU에서 실행되기 때문에, 여러 픽셀에 대해서 동일한 셰이더가 동시에 실행됨
3. 3D 폴리곤이 화면에 그려지는 과정
<그래픽 리소스 준비 단계>
1) 3D 폴리곤 : 제작 (3ds Max, Maya, Blender 등)
2) 3D 폴리곤 : FBX로 Export
<렌더링 과정 : 3~8, 셰이더 : 5~7>
3. 게임 엔진 : FBX의 폴리곤 정보를 게임에 맞게 가공
4. GPU에 전달 : 폴리곤, 텍스처 등 재질 정보
5. 버텍스 셰이더 : 폴리곤의 버텍스가 화면의 어디에 위치하는지 계산 (계산 - 버텍스 수만큼 반복 수행)
6. 래스터라이저 : 화면에서 폴리곤 안쪽의 픽셀들을 알아내고, 픽셀 셰이더에 전달 (하드웨어에 의해 자동으로 수행, 개입할 수 x)
7. 픽셀 셰이더 : 폴리곤 안쪽의 픽셀 하나에 대해서 컬러를 계산 (계산 - 폴리곤 안쪽의 픽셀 수만큼 반복 수행)
8. 모니터 : 최종 화면 그려짐
4. 렌더링과 셰이더
- 픽셀의 색 결정 : 복잡한 계산 과정
- 빛의 방향 계산
- 오브젝트가 그림자 속에 들어가서, 빛이 가려졌는지 계산
- 투명 물체를 통과한 빛이 굴절되는 각도 계산
- 빛이 여러 번 난반사 되어서 광원이 아닌 곳에서 들어오는 빛 계산
1) 렌더링
- 이런 모든 계산 과정
2) 셰이더
- 렌더링 과정 중, GPU에서 수행되는 연산
- 셰이더가 최종 픽셀의 컬러를 계산하는데 필요한 여러 정보들 : 렌더링 과정에서 엔진에 의해 준비됨
* 셰이더가 픽셀의 색을 결정하는데 필요한 정보
- 폴리곤을 비추는 빛의 방향(각도) (노란색 화살표)
- 픽셀이 위치한 3D 폴리곤 표면의 방향(각도) : 법선, 노멀 벡터 (회색 화살표)
- 폴리곤 주변 환경의 밝기 (Ambient)
- 픽셀이 위치한 3D 폴리곤 표면의 재질 정보 - 표면이 매끈한 질감인지 등 (Metallic, Smoothness)
* 셰이더 용어 의미
- 실시간 렌더링 게임 그래픽 : GPU, 그래픽 API 위주로 사용
- 영화나 애니메이션 제작 렌더링 환경 : GPU와 무관하게 셰이더라는 단어 사용 (-> 셰이더가 언제나 GPU에 종속적인 단어 x)
- 하지만 빛과 주변 환경에 의해 픽셀의 색을 계산한다는 의미는 동일
'공부 > 그래픽스' 카테고리의 다른 글
[아티스트를 위한 유니티 URP 셰이더 입문]2. 셰이더란 무엇인가? (2/2) (0) | 2024.10.25 |
---|---|
[유니티 그래픽스 최적화 스타트업]2-4-1. 애플리케이션 스테이지 (1) | 2024.07.13 |
[유니티 그래픽스 최적화 스타트업]2-4. 렌더링 파이프라인 (0) | 2024.07.13 |