Frustum Culling이 무엇일까?

박승우·2024년 6월 25일
0

자 쉰 아홉 번째 키워드인 'Frustum Culling'을 알아 보았다.

이전 키워드에서 알아보았던 Culling과 Clipping 차이에서
Frustum Culling에 대해서 상세하게 알아보았다.

Frustum Culling이 뭐에요?

Frustum culling(원뿔 자르기)는 3D 그래픽스에서 렌더링 성능을 최적화하기 위한 기법으로, 시야에 포함되지 않는 객체들을 제거하여 불필요한 계산을 줄이는 것을 목표로 한다.

1. Frustum(원뿔)의 구성 요소

Frustum은 원뿔 모양의 시각적 표현으로, 보통 6개의 면(plane)으로 정의된다.

  • Near plane(가까운 평면): 카메라에서 가장 가까운 면으로, 시야의 시작 지점이다.
  • Far plane(멀리 있는 평면): 카메라에서 가장 먼 면으로, 시야의 끝을 나타낸다.

Left, Right, Top, Bottom planes: Near plane에서 카메라의 시야를 기준으로 왼쪽, 오른쪽, 위쪽, 아래쪽을 나타내는 평면들이다.
이 원뿔의 단면들은 카메라의 시야에 따라 정의되며, 이들은 공간에서 시야 내에 있는 부분을 결정하는 중요한 역할을 한다.

2. Frustum Culling의 동작 과정

Frustum culling은 다음과 같은 단계로 작동한다.

  • 객체의 위치 변환: 모든 렌더링 대상 객체들의 위치와 방향을 카메라 공간으로 변환한다. 이는 일반적으로 객체의 월드 좌표를 카메라의 좌표계로 변환하여 수행된다.

  • 원뿔 단면(plane)과의 관계 판별: 각 객체의 변환된 위치를 원뿔의 단면(plane)들과 비교하여 객체가 원뿔 내에 있는지 판별한다. 이 판별은 보통 행렬 연산을 통해 수행된다.

  • 객체 제거: 원뿔 내에 있지 않은 객체들은 렌더링 목록에서 제거된다. 이 과정에서 제거된 객체들은 후속 렌더링 과정에서 처리하지 않으므로 불필요한 계산을 방지할 수 있다.

3. Frustum Culling의 장점과 적용 범위

Frustum culling은 다음과 같은 이점을 제공합니다

  • 성능 향상: 시야에 보이지 않는 객체들을 제거하여 불필요한 렌더링 연산을 줄이므로 전체적인 렌더링 성능이 향상된다.

  • 자원 절약: 제거된 객체들에 대한 렌더링 작업을 수행하지 않아 CPU 및 GPU 자원을 절약할 수 있다.

  • 시스템 안정성: 불필요한 렌더링 작업을 줄이므로 시스템의 전력 소모와 열 발생을 감소시킬 수 있다.

4. Frustum Culling 요약

Frustum culling은 게임 개발과 같은 실시간 3D 그래픽스에서 주로 사용되며, 대규모 환경에서 특히 중요한 역할을 한다. 예를 들어, 넓은 지형이나 복잡한 도시 모델과 같은 경우에는 많은 수의 객체가 시야 내에 있을 수 있지만, 실제로 보이지 않는 부분을 제거함으로써 성능을 획기적으로 개선할 수 있다.

결론 - 느낀 점

이전에 알아보았던 키워드라 접근이 쉬웠는데 과정이나 다양한 세부적인 요소들을 보며 다시 공부한 느낌이다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글

관련 채용 정보