KH_C++
절두체 컬링(Frustum Culling), 오클루전 컬링(Occlusion Culling), 클리핑(Clipping), LOD(Level Of Detail) 본문
절두체 컬링(Frustum Culling), 오클루전 컬링(Occlusion Culling), 클리핑(Clipping), LOD(Level Of Detail)
kanghou 2023. 8. 24. 02:33[ 절두체 컬링 ]
절두체 컬링(Frustum Culling)은 컴퓨터 그래픽스에서 사용되는 최적화 기술 중 하나로, 화면에 표시될 부분만을 렌더링하여 성능을 향상시키는 방법입니다. 이는 시야를 화면 안에 들어가는 부분만 렌더링하고, 화면 밖의 객체는 그리지 않는 것을 의미합니다.
절두체(Frustum)란 카메라의 시야를 나타내는 뷰 프러스텀(View Frustum)이라는 다각형의 모양을 가진 입체적인 도형입니다. 이 뷰 프러스텀은 카메라의 위치와 방향에 따라 결정되며, 뷰 프러스텀 내에 포함되는 객체만이 실제로 화면에 나타나야 할 객체로 간주됩니다.
절두체 컬링은 다음처럼 작동합니다.
1.뷰 프러스텀 계산 : 카메라의 위치와 방향에 따라 뷰 프러스텀을 계산합니다. 이는 시야 범위 내에 들어갈 수 있는 객체들이 포함될 공간을 결정하는 것입니다.
2.객체 위치 판단 : 각 객체의 위치를 확인하여 그 객체가 뷰 프러스텀 내에 포함되는지 여부를 판단합니다.
3.컬링 결정 : 뷰 프러스텀 내에 포함되는 객체만을 선택하여 렌더링 대상으로 결정합니다. 뷰 프러스텀 밖의 객체는 렌더링되지 않습니다.
절두체 컬링을 사용하면 불필요한 객체들을 렌더링하지 않으므로 렌더링 성능을 향상시킬 수 있습니다. 특히 복잡한 3D 환경에서 렌더링 시간을 줄이는데 효과적이며, 게임 및 시뮬레이션 등에서 자주 사용되는 최적화 기술 중 하나입니다.
[ 오클루전 컬링 ]
오클루전 컬링(Occlusion Culling)은 그래픽스에서 사용되는 최적화 기술 중 하나로, 화면에 표시되지 않는 가려진 객체를 식별하여 해당 객체를 렌더링하지 않고 성능을 향상시키는 방법을 말합니다. 이는 뷰 프러스텀 내에 위치하더라도 다른 객체에 의해 완전히 가려진 물체들을 렌더링하지 않음으로써 불필요한 계산과 드로잉 작업을 줄이는 목적으로 사용됩니다.
오클루전 컬링은 다음처럼 작동합니다.
1.시야 결정 : 카메라의 위치와 방향에 따라 뷰 프러스텀을 계산합니다. 이 뷰 프러스텀은 화면에 보이는 영역을 정의합니다.
2.시야 내 객체 식별 : 시야 내에 있는 모든 객체들을 판단하여 가려진 상태인지 여부를 확인합니다. 이를 통해 다른 객체에 의해 완전히 가려진 객체들을 식별합니다.
3.컬링 결정 : 완전히 가려진 객체들을 렌더링 대상에서 제외합니다. 뷰 프러스텀 내에 있지만 화면에는 보이지 않는 객체는 렌더링하지 않습니다.
오클루전 컬링은 복잡한 3D 환경에서 렌더링 성능을 크게 향상시키는데 도움을 줍니다. 뷰 프러스텀 내에 위치하더라도 다른 물체에 의해 완전히 가려진 객체를 그리지 않음으로써 렌더링과 관련된 처리를 줄여 시스템 성능을 최적화할 수 있습니다.
[ 클리핑 ]
클리핑(Clippping)은 그래픽스에서 화면에 표시될 부분을 결정하는 과정을 말합니다. 이는 카메라의 시야 내에 있는 객체들 중에서 실제 화면에 나타나는 부분을 결정하는 프로세스를 의미합니다.
클리핑은 크게 두 가지 방면에서 이루어집니다:
1.공간 클리핑 : 뷰 프러스텀(View Frustum) 내에 있는 객체들 중에서 실제로 화면에 나타나는 부분을 결정하는 것입니다. 이때 뷰 프러스텀은 카메라의 시야를 나타내는 공간으로, 시야 내에 있는 객체 중에서 시야 밖으로 벗어나는 부분은 제외됩니다.
2.화면 클리핑 : 화면 내에서 화면 영역을 벗어나는 객체를 제외하는 것입니다. 예를 들어, 원을 그릴 때 원이 화면 영역 밖에 있는 부분은 렌더링하지 않습니다.
클리핑은 렌더링 성능을 최적화하고, 화면에 표시되지 않는 불필요한 객체들을 배제하여 시스템 자원을 효율적으로 사용하는 데에 중요한 역할을 합니다. 또한, 뷰 프러스텀 내에 있는 객체 중에서 화면에 실제로 표시되는 부분만을 계산하고 렌더링함으로써 불필요한 계산 작업을 줄이는 데에도 도움을 줍니다.
[ LOD ]
Level of Detail(LOD)는 그래픽스에서 사용되는 최적화 기술 중 하나로, 먼 거리에서는 더 단순하고 저해상도의 모델을 사용하고, 가까이 가면 더 복잡하고 고해상도의 모델을 사용하여 성능을 향상시키는 방법을 말합니다.
멀리 있는 객체 : 멀리 있는 객체는 상세한 모델을 사용하지 않고, 단순한 모델이나 저해상도의 텍스처를 사용하여 렌더링합니다. 이는 렌더링 비용을 줄여 성능을 향상시키는데 도움을 줍니다.
가까이 있는 객체 : 가까이 가면 상세한 모델과 고해상도의 텍스처를 사용하여 렌더링합니다. 이는 객체의 디테일을 표현하고 더욱 사실적인 느낌을 주는데 도움을 줍니다.
LOD는 주로 다음과 같은 상황에서 활용됩니다:
1.먼 거리에서 렌더링되는 물체들 : 멀리 있는 물체들은 작게 보이기 때문에 높은 해상도의 모델을 사용할 필요가 없습니다.
2.렌더링 성능 최적화 : 렌더링 작업은 계산 및 그래픽 리소스를 많이 소모하므로, LOD를 사용하여 멀리 있는 물체들을 단순화함으로써 렌더링 성능을 향상시킵니다.
3.다양한 거리에서의 렌더링 : 객체들이 화면에서 멀리 있는 상황부터 가까이 있는 상황까지 다양한 거리에서 효과적으로 렌더링될 수 있도록 도움을 줍니다.
LOD는 게임이나 시뮬레이션에서 중요한 최적화 기술로 사용되며, 성능과 시각적 품질 사이의 균형을 맞추는데에 도움을 줍니다.
'공부' 카테고리의 다른 글
렌더 투 텍스쳐, 포스트 이펙트, 블러 (0) | 2023.08.08 |
---|---|
A* 알고리즘, 다익스트라(Dijkstra) 알고리즘 (0) | 2023.07.13 |
GPGPU, 컴퓨트 쉐이더(Compute Shader) (0) | 2023.07.12 |
키 프레임 애니메이션(Key frame Animation) (0) | 2023.06.29 |
포워드 렌더링(Forward Rendering), 디퍼드 렌더링(Deferred Rendering) (0) | 2023.06.28 |