Files
2nd/10_Wiki/Topics/Architecture/Fragment-bound.md
T

6.3 KiB

category, tags, title, last_updated
category tags title last_updated
Unified
auto-consolidated
technical-documentation
Fragment-bound|Fragment-bound
2026-05-02

Fragment-bound

📌 Brief Summary

'Fragment-bound(프래그먼트 바운드)'는 3D 그래픽스 렌더링 파이프라인에서 GPU의 프래그먼트 셰이딩(픽셀 처리) 용량이 한계에 도달하여 전체 시스템의 성능 병목이 되는 상태를 의미합니다 [1, 2]. 이 상태는 주로 객체들이 카메라 기준 깊이(Depth)에 따라 정렬되지 않은 채 렌더링될 때, 동일한 픽셀에 여러 번 그리기 연산이 수행되는 '오버드로우(Overdraw)' 현상으로 인해 촉발됩니다 [1, 2]. 특히 연산 비용이 높은 재질을 사용할 때 이 병목 현상은 더욱 극심해집니다 [2, 3].


프래그먼트 바운드(Fragment-bound)는 3D 렌더링 파이프라인에서 GPU의 프래그먼트(픽셀) 연산 부하가 극심해져 전체 렌더링 성능과 프레임 레이트(FPS)를 제한하는 병목 상태를 의미합니다. 주로 화면에 그려지는 객체들이 렌더링 순서대로 정렬되지 않아 동일한 픽셀 위치에 렌더링 계산이 여러 번 중첩되는 오버드로우(Overdraw) 현상으로 인해 발생합니다. 무거운 조명 연산이 포함된 재질을 사용할 때 이 상태에 더욱 쉽게 빠지게 됩니다 [1, 2].

📖 Core Content

  • 오버드로우(Overdraw)에 의한 연산 과부하: 프래그먼트 바운드 상태는 화면의 동일한 픽셀 영역에 대해 셰이더 연산과 쓰기 작업이 여러 번 중첩되어 발생하는 오버드로우에 의해 야기됩니다 [1, 2]. GPU가 최종 화면에 보이지 않고 가려질 픽셀까지 모두 계산하게 되면서 픽셀 처리 성능을 상회하는 부하가 발생합니다 [2].
  • InstancedMesh의 정렬 부재와 병목: Three.js의 InstancedMesh는 단일 드로우 콜로 렌더링을 수행하지만 개별 인스턴스들의 렌더링 순서를 자동으로 정렬(Sorting)하지 않습니다 [1, 2]. 만약 카메라와 가장 멀리 있는 인스턴스가 먼저 그려지고 가까운 인스턴스가 나중에 그려진다면 막대한 오버드로우 비용이 발생하게 되며, 이로 인해 씬(Scene)이 프래그먼트 바운드 상태에 빠지게 됩니다 [2].
  • 재질(Material) 복잡도의 영향과 해결책: 복잡한 조명 및 그림자 연산이 포함된 MeshStandardMaterial과 같은 셰이더를 사용할 경우 프래그먼트 바운드 현상은 훨씬 더 심화됩니다 [2, 3]. 이 문제를 완화하기 위해서는 오버드로우의 비용 자체를 줄일 수 있는 단순한 MeshBasicMaterial을 사용하여 비교하거나 [3], 자동으로 인스턴스 정렬을 지원하는 BatchedMesh로 전환하여 렌더링 효율을 높이는 것이 대안으로 제시됩니다 [1].

  • 발생 원인과 오버드로우(Overdraw): 프래그먼트 바운드 상태는 렌더링 파이프라인의 후반부인 프래그먼트 셰이딩(Fragment Shading) 단계의 과부하로 발생합니다. 주된 원인은 오버드로우로, 불투명한 물체를 '앞에서 뒤로(Front-to-Back)' 정렬하지 않고 렌더링하여 뒤에 가려질 픽셀에 대해서도 GPU가 불필요한 계산을 중복해서 수행할 때 일어납니다 [2].
  • InstancedMesh의 구조적 한계: InstancedMesh 기술은 드로우 콜(Draw Call)을 줄여 CPU 오버헤드를 낮추는 데 효과적이지만, 인스턴스들에 대한 자동 정렬 기능을 제공하지 않습니다 [1, 2]. 따라서 카메라에서 멀리 있는 인스턴스가 먼저 그려지고 가까운 인스턴스가 나중에 그려지는 배치가 발생하면, 오버드로우 비용이 GPU의 픽셀 처리 성능을 상회하게 되어 프래그먼트 바운드 상태를 유발합니다 [2].
  • 재질(Material) 복잡도의 영향: 오버드로우로 인한 프래그먼트 바운드 현상은 복잡한 조명 연산이 포함된 MeshStandardMaterial과 같은 무거운 재질을 사용할 때 그 심각성이 극대화됩니다 [1, 2].
  • 성능 개선 대안: 프래그먼트 바운드 병목을 해결하기 위한 대안 중 하나로 BatchedMesh를 사용할 수 있습니다. InstancedMesh와 달리 BatchedMesh는 인스턴스들의 정렬(sorted)을 지원하므로 오버드로우를 효과적으로 줄일 수 있습니다 [1].

⚖️ Trade-offs & Caveats

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Graphics & Performance 분야의 자동 자산화 수행.

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Graphics & Performance 분야의 자동 자산화 수행.

🔗 Knowledge Connections

  • Related Topics: Overdraw, InstancedMesh, MeshStandardMaterial, BatchedMesh
  • Projects/Contexts: Three.js 렌더링 성능 최적화
  • Contradictions/Notes: 드로우 콜을 줄여 성능을 향상시키기 위해 고안된 InstancedMesh가, 정렬 기능의 부재로 인해 오히려 심각한 오버드로우와 프래그먼트 바운드를 유발하여 일반 Mesh를 여러 번 그릴 때보다 프레임 레이트(FPS)를 더 하락시킬 수 있다는 점이 주의사항으로 보고됩니다 [2, 4].

Last updated: 2026-04-19




Last updated: 2026-04-19