Rendering pipeline에 대한 이해
*(1) 조명이 픽셀마다 적용 : 화면의 각 픽셀에서 조명 효과를 따로 계산한다는 뜻. 이 과정에서 각 픽셀이 장면에 얼마나 밝게 보일지 조명, 그림자, 표면 반사 같은 요소들을 고려하여 계산. 픽셀마다 조명을 적용하면, 픽셀이 속한 객체의 표면 색상뿐 아니라 해당 위치에 비치는 조명 강도, 색상, 방향에 따라서 픽셀이 다르게 보이게 된다. 예를 들어, 화면에 빛이 세 개 있다면 Forward Rendering에서는 각 픽셀마다 이 세 개의 빛을 모두 계산해서 최종 색상을 결정하는 방식. 따라서 조명이 많을수록 이 계산이 증가하여 성능에 영향을 미치게 됨.
*(2) 투명 오브젝트 처리에서 Forward Rendering이 유리한 이유: 렌더링 순서와 투명도 계산 방식 때문. Forward Rendering은 투명도를 위한 오브젝트 겹침 계산(Depth Buffer)과 알파 블렌딩(Alpha Sorthing)이 쉬워, 투명 오브젝트가 많은 장면에 적합. 반대로 Deferred Rendering은 투명 오브젝트 정보를 G-buffer에 저장하는 것이 복잡하여 투명 오브젝트 처리가 어렵다.
*(3) G-buffer(Graphics Buffer): 각 픽셀의 색상, 법선(normal), 깊이(depth) 같은 중요한 정보를 담아두고, 이후 조명을 한꺼번에 계산할 때 활용. 보통 G-buffer는 여러 종류의 텍스처로 구성되며, 각 텍스처에는 다음과 같은 정보들이 저장된다.
1. 색상(Color): 픽셀의 기본 색상 정보. 물체의 질감이나 재질이 어떻게 보일지 결정하는 데 사용.
2. 법선(Normal): 각 픽셀의 표면 방향을 나타내며, 조명 계산 시 빛이 어떻게 반사되고 산란될지 판단하는 데 필요.
3. 깊이(Depth): 각 픽셀이 카메라에서 얼마나 떨어져 있는지 나타내는 값으로, 다른 물체와의 겹침(예: 그림자나 오클루전)을 처리하는 데 사용.
4. 기타 정보(Optional): 예를 들어, 반사율(Specular), 광택도(Glossiness), 메탈성(Metalness) 등의 추가 정보도 G-buffer에 저장할 수 있다.
이 정보를 사용하면 각 픽셀에 대해 한 번만 그리더라도, 나중에 필요한 조명 계산을 모두 수행. Deferred Rendering 방식에서는 G-buffer에 먼저 장면 정보를 모두 저장해 둔 다음, 조명 계산을 이 정보로부터 추출하여 한 번에 처리하므로, 조명이 많아져도 성능이 비교적 안정적. 그러나 G-buffer는 많은 정보를 저장하므로 메모리 사용량이 증가하고, 특히 투명한 오브젝트나 복잡한 표면이 많을 때 정보 저장에 한계가 있다. 이런 이유로 Deferred Rendering에서는 투명 오브젝트 처리가 어렵다.
라이트와 그림자의 원리 (0) | 2024.11.01 |
---|---|
Platform별 pixel format 차이점 (0) | 2024.11.01 |
Geometric Objects (0) | 2023.07.27 |
Transformation (0) | 2023.07.27 |
Graphics System (0) | 2023.07.27 |