인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

오그리바그리님의 프로필 이미지

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

직교 투영

UI 랜더링이 이해가 안되어 질문드립니다

작성

·

83

0

수업내용을 놓쳤을 수도 있는데 어디를 놓친건지 몰라서 질문드립니다

기본적인 default object들과 UI object들의 랜더링을

원근투영과 직교투영을 이용하는 내용은 이해가 되나

둘 다 동일한 z버퍼를 사용하는걸로 아는데

그러면 투영변환의 인자 값에 상관없이 랜더링 파이프라인에서
z버퍼로 인하여 서로가 가려져야 한다고 생각했는데
정상적으로 출력이 되어 왜 그런지가 궁금합니다.

 

 

답변 1

-1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 오그리바그리님.

게임 개발에서의 렌더링 과정에서 UI와 3D 오브젝트가 혼재되어 있을 때, 이러한 요소들이 어떻게 적절히 디스플레이되는지를 이해하는 것은 중요한 부분입니다. 질문하신 내용은 주로 UI와 3D 오브젝트의 렌더링 처리, 그리고 깊이 버퍼(z-buffer)에 관련된 문제입니다.

보통 3D 오브젝트는 원근 투영(perspective projection)을 사용해 렌더링되고, UI는 직교 투영(orthographic projection)을 사용해 렌더링됩니다. 이렇게 하여 UI는 항상 화면의 최상층에 고정되게 되고, 3D 오브젝트와는 독립적으로 렌더링되는 효과를 가질 수 있습니다.

렌더링 파이프라인에서의 중요 포인트:
1. Z-버퍼 관리: 일반적으로 UI는 z-buffer의 특정 깊이 영역을 차지하지 않거나, 가장 앞부분에 고정되어 있어 별도의 렌더링 패스로 처리됩니다. 이로 인해 실제 렌더링 시 UI 요소가 3D 오브젝트에 의해서 가려지지 않게 됩니다.

  1. 렌더링 패스: 많은 그래픽 엔진에서 UI는 별도의 렌더링 패스 혹은 레이어로 처리되어 z-buffer에 영향을 주지 않도록 설계됩니다. 이는 UI가 항상 다른 3D 오브젝트보다 위에 렌더링되는 것을 가능하게 합니다.

관련된 질문과 답변은 아래 링크를 참고하실 수 있습니다:
- DepthStencilView에 대해서

해당 질문에서와 같이 3D 렌더링과 관련한 파이프라인의 동작은 DirectX 내부 처리를 통해 자동으로 이루어지는 부분들이 많습니다. 각 오브젝트의 특성에 맞춘 렌더링 전략 설정이 필요하며, 이는 이론이나 실습을 통해 자연스럽게 익히게 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.