일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래밍공부
- pcce 기출문제 10번 공원
- 백준 5567
- pcce 기출문제 풀이
- pcce 기출문제 10번 공원 풀이
- gemmasprint
- constant buffre
- orthographic projection
- DirectX12
- 잔디 기부
- 렌더링 파이프
- 데이터 체커
- depth-stencil
- pcce 기출문제 10번 지폐 접기 풀이
- boj 22942
- c++ 1991
- 잔디 기부 캠페인
- tessellation
- boj 1991
- texture mapping
- directx 그래픽스
- c++ 5567
- render target
- PCCE
- 오블완
- root signature
- DirectX
- pcce 기출문제 9번 지폐 접기
- pccp 기출문제 풀이
- boj 5567
- Today
- Total
오구의코딩모험
[DirectX] Frustum Culling, Quaternion, Orthographic Projection, Render Target 본문
[DirectX] Frustum Culling, Quaternion, Orthographic Projection, Render Target
오구.cpp 2025. 1. 14. 00:00
게임 개발에서 배우는 렌더링 기법과 최적화 개념
게임 개발은 복잡한 그래픽 요소를 효율적으로 처리하는 기술과 최적화 기법을 요구합니다.
이번 글에서는 Frustum Culling, Quaternion, Orthographic Projection, 렌더링 기법, Compute Shader, Particle System, Instancing의 개념의 학습한 내용을 중심으로 정리합니다.
1. Frustum Culling
Frustum Culling이란?
- Frustum Culling은 절두체 영역 내에 있는 물체만 렌더링하는 기술입니다.
- 렌더링할 필요가 없는 물체는 CPU에서 예외 처리하여 GPU 연산을 최소화합니다.
- 이 과정은 성능 최적화에 큰 도움을 주며, 복잡한 3D 장면에서 필수적인 기법입니다.
2. Quaternion(사원수)
Quaternion의 정의와 필요성
- Quaternion(사원수)은 복소수를 확장하여 만든 수 체계로, 회전을 수학적으로 표현하는 데 사용됩니다.
- 오일러 회전의 문제점
* 오일러 각을 사용한 회전에서는 짐벌 락(Gimbal Lock) 문제가 발생합니다.
* 이는 두 축이 겹쳐 하나의 축이 소실되는 현상으로, 회전이 왜곡될 수 있습니다.
Quaternion의 활용
- 오일러 각도나 라디안 값을 Quaternion으로 변환하여 사용하면 안정적으로 회전을 표현할 수 있습니다.
3. Orthographic Projection (직교 투영)
직교 투영이란?
- Orthographic Projection은 물체의 크기를 원근감 없이 동일하게 표현하는 투영 방식입니다.
- 주로 스킬, 아이템과 같은 UI 요소를 렌더링할 때 사용됩니다.
- 화면의 좌표계와 정밀한 위치를 유지해야 하는 경우에 적합합니다.
4. 렌더링 기법 : Forward Rendering vs Deferred Rendering
Forward Rendering
- 렌더링 파이프라인이 끝난 후, 연산 중 일부 값이 소실될 수 있습니다.
- 단순한 렌더링 구조를 가지지만, 다수의 광원을 처리하기에는 비효율적입니다.
Deferred Rendering
- 연산에 필요한 모든 정보를 Render Target에 저장한 후, 빛 연산은 후처리 방식으로 처리합니다.
- 복잡한 광원 효과를 표현할 수 있으며, 효율적인 GPU 리소스 사용이 가능합니다.
Render Target
- Render Target은 화면에 바로 그리는 것이 아니라, 정해진 텍스처에 데이터를 그린 후 활용하는 방식입니다.
5. Compute Shader
Compute Shader란?
- Compute Shader는 GPGPU(General-Purpose GPU)를 활용해 CPU의 연산을 GPU로 오프로드하는 기술입니다.
- 일반적인 그래픽 파이프라인과는 독립적으로 GPU 연산을 수행합니다.
- Unordered Access View (UAV) 레지스터를 사용하여 그래픽 레지스터와 구분됩니다.
6. Particle System
Particle System의 정의
- Particle System은 동적인 텍스처를 사용하여 특수 효과를 표현합니다.
- 예: 불꽃, 연기, 폭발 등.
구현 방식
- 인스턴싱(Instancing) 기술을 활용하여 반복적으로 파티클을 렌더링합니다.
- 모든 작업을 GPU에서 처리함으로써 CPU-GPU 간 통신 비용을 줄이고 성능을 최적화합니다.
7. Instancing
Instancing이란?
- Instancing은 동일한 객체를 여러 번 그릴 때 사용하는 최적화 기법입니다.
- 렌더링 호출 횟수(Draw Call)를 줄여 성능을 크게 개선합니다.
활용 예시
- 반복적으로 나타나는 파티클, 나무, 바위와 같은 객체를 효율적으로 렌더링합니다.
정리
1. Frustum Culling
- 절두체 영역 밖의 물체를 미리 예외 처리하여 GPU 부하를 줄입니다.
- 복잡한 3D 장면에서 GPU 부하를 줄이기 위해 반드시 적용해야 합니다.
2. Quaternion
- 짐벌 락 문제를 해결하고 안정적인 회전을 지원합니다.
- 안정적인 회전을 위해 오일러 각 대신 Quaternion을 사용하세요.
3. 렌더링 기법 선택
- 다수의 광원이 필요한 경우 Deferred Rendering을 선택하고, 단순한 장면에는 Forward Rendering을 활용하세요.
4. Compute Shader 활용
- 병렬 연산이 필요한 경우 Compute Shader를 사용하여 GPU를 최대한 활용하세요.
5. Instancing과 Particle System
- 반복적인 객체 렌더링에서는 Instancing을 사용하여 Draw Call을 줄이고, 특수 효과는 Particle System으로 처리하세요.
이번 글에서는 Frustum Culling, Quaternion, Orthographic Projection, 렌더링 기법, Compute Shader, Particle System, Instancing 등의 개념을 정리했습니다.
이러한 기술은 게임 그래픽의 효율성과 품질을 동시에 높이는 데 중요한 역할을 합니다.
'Game > DirectX' 카테고리의 다른 글
[DirectX] Shadow Mapping, Tessellation, Terrain, Picking, Animation (0) | 2025.01.16 |
---|---|
[DirectX] Camera, Resources, Lighting, Normal Mapping (1) | 2024.12.31 |
[DirectX] 변환 행렬 (Matrix) (2) | 2024.12.16 |
[DirectX] Component, 삼각 함수, Vector (4) | 2024.12.10 |
[DirectX] Input과 Timer, Material (1) | 2024.12.07 |