9.9 핵심 정리
셀 셰이딩 학습 과정을 잘 마무리 한 것을 축하드린다. 이제 전체 과정을 명료하게 복기 하면서 핵심정리 하는 시간이다.
9.9.1 멀티패스와 Vertex 그리고 Vertex buffer object
아웃라인 렌더링을 위해 멀티머티리얼과 멀티패스 모두 활용해 봤다.
자 그럼 멀티패스를 활용하거나 멀티머티리얼을 활용했을 때 버텍스 수량은 어떻게 증가하고 버텍스 버퍼 오브젝트는 어떤 식으로 증가하는지도 알고 넘어가자.
패스 수량 | 버텍스 증가량 | VBO 사용 방식 | GPU 부하 |
단일 패스 (No Outline) | 1배 (기본 버텍스 수) | 1개 VBO | 낮음 |
멀티패스 (기본 + 버텍스 오프셋 방식) | 2배 | 동일한 VBO 재사용 | 보통 |
멀티패스 렌더링을 사용할 경우 패스 수만큼 버텍스 수량이 증가하지만, 일반적으로 동일한 VBO를 여러 번 바인딩하여 사용하므로 VBO 개수 자체는 증가하지 않으며, 다만 별도의 실루엣을 위한 VBO를 추가할 경우 GPU 메모리 사용량이 증가할 수 있다. 최근에는 대안으로 Screen-Space Outline 방식(포스트 프로세싱)이 활용되는 추세이기도 하다.
모바일 게임의 경우 iOS 또는 AOS 에서 버텍스 수량 증가를 보수적으로 처리하고 포스트프로세싱 아웃라인을 사용하는 경우가 더 이득인 경우도 있으니 다 방면으로 생각 해 봐야겠다. 물론 최적화 측면까지 생각 할 경우에는 그 게임의 플레이 형식, 아트 스타일, 레벨 구성이나 이벤트성 장면 구성과 특성, 카메라의 시야 범위, 도시 거점 설계 등등 많은 부분을 복합적으로 검토하고 결정해야 하는 부분이기 때문에 무엇을 더 선호하거나 추천한다고 말하기에는 좀 난해한 부분이다.
'(출간예정) 모두의 셰이더 프로그래밍' 카테고리의 다른 글
3D Scan Store Agreement (0) | 2025.04.09 |
---|---|
[TIP] 유니티 6. 하나의 서브메시에 다중 머티리얼 적용하는 법. (0) | 2025.02.12 |
9.8.5 Screen Space Depth 기반 Rim light 따라잡기 도입글 소개 (0) | 2025.02.09 |
10장. 스타일 캐릭터 셰이딩과 사용자화 셰이더라이브러리 제작법. 들어가는 글 소개. (0) | 2025.02.05 |
각주 표기법 (0) | 2025.02.04 |