주문에 의존하지 않는 투명성

Order-independent transparency
혼합 순서의 중요성.맨 위는 순서가 없는 알파 혼합으로 잘못된 결과를 생성하는 반면 맨 아래는 형상을 올바르게 정렬합니다.올바른 깊이 순서를 지정하지 않으면 골격 구조의 가시성이 낮아집니다.ATI 메카 데모 이미지

순서 독립 투명도(OIT)는 3D 장면에서 투명도를 렌더링하기 위한 래스터리셔널 컴퓨터 그래픽스 기술 클래스입니다.알파 합성을 위해 정렬된 순서로 형상을 렌더링할 필요가 없습니다.

묘사

일반적으로 투명도가 있는 3D 지오메트리는 모든 표면을 단일 버퍼로 혼합(알파 합성 사용)하여 렌더링됩니다(이것을 캔버스라고 생각하십시오).각 표면은 기존의 색을 차단하고 알파 값인 빛의 투과율에 따라 고유의 색을 더합니다.표면이 혼합되는 순서에 따라 각 표면의 전체 폐색 또는 가시성이 영향을 받습니다.정확한 결과를 얻으려면 알파 합성 연산에 따라 표면이 가장 먼 곳부터 가장 가까운 곳 또는 가장 가까운 곳까지 혼합되어야 합니다.지오메트리를 깊이별로 정렬하는 등 정렬된 순서로 렌더링하여 순서를 지정할 수 있지만, 상당한 시간이 걸릴 수 있습니다.다만 (교차 지오메트리가 있는 경우 또는 원형으로 겹치는 경우) 항상 솔루션을 생성하는 것은 아니며 구현이 복잡합니다.대신 순서에 의존하지 않는 투명도는 래스터라이제이션 후 픽셀 단위로 지오메트리를 정렬합니다.정확한 결과를 얻으려면 정렬 및 컴포지트 전에 모든 fragment를 저장해야 합니다.

역사

A-버퍼는 1984년에 도입된 컴퓨터 그래픽 기술로, 원래는 안티에이리어싱(Anti-aliasing)을 위해 설계되었지만 투명성을 지원하는 소프트웨어 래스터라이저(REYES)에 픽셀당 단편 데이터 목록(마이크로 폴리곤 정보 포함)을 저장합니다.

최근에는 2001년 [1] 필링(deepth philing)에 의해 하드웨어 가속 OIT 기술이 설명되었습니다.그래픽 하드웨어에 제한이 있어 장면의 형상을 여러 번 렌더링해야 했습니다.깊이 박리 성능을 개선하기 위해 여러 가지 기술이 뒤따랐지만, 여전히 다중 경로 렌더링 제한이 있습니다.예를 들어 Dual Depth Piling(2008)[2]이 있습니다.

2009년에는 GPU 하드웨어/드라이버/그래픽스 API에 2개의 중요한 기능이 도입되어 이전에는 불가능했던 프래그먼트 데이터를 1개의 렌더링 패스로 캡처 및 저장할 수 있게 되었습니다.이것은 셰이더와 원자 연산을 통해 임의의 GPU 메모리에 쓸 수 있는 기능입니다.이러한 기능을 통해 씬 지오메트리의 렌더링 패스를 많이 필요로 하지 않는 새로운 클래스의 OIT 기법이 가능해졌습니다.

  • 첫 번째는 fragment 데이터를 3D [3]어레이에 저장하는 것으로, fragment는 각 픽셀 x/y의 z 치수에 따라 저장됩니다.장면의 복잡도는 일반적으로 일정하지 않기 때문에 실제로는 대부분의 3D 어레이가 사용되지 않거나 오버플로우됩니다.오버플로를 방지하기 위해 3D 어레이에는 많은 양의 메모리가 필요하며, 이는 많은 경우 실용적이지 않습니다.
  • 이 메모리 오버헤드를 줄이기 위한 두 가지 방법이 있습니다.
    1. 프리픽스 섬 스캔으로 3D 어레이를 패킹하거나 [4]리니어라이징하면 미사용 메모리 문제는 해소되지만 지오메트리의 복잡도 계산 렌더링 패스가 추가로 필요합니다.'희소성 인식' S-Buffer, Dynamic Fragment [5]Buffer, D-Buffer[citation needed], Linearized Layered Fragment[6] Buffer는 프리픽스섬 스캔을 사용하여 모든 팩 fragment 데이터를 OIT로 표시합니다.
    2. 픽셀 단위의 링크 리스트에[7] fragment를 보존하면, 이 데이터의 엄격한 패킹이 가능하게 됩니다.또, 2011년 후반에는 드라이버의 개선으로 원자력 운용의 경합 오버헤드가 감소해,[6] 이 기술의 경쟁력이 매우 높아졌습니다.

정확한 OIT

정확히는 대략적인 색상과 달리 OIT는 최종 색상을 정확하게 계산하기 때문에 모든 fragment를 정렬해야 합니다.복잡도가 높은 장면에서는 정렬이 병목현상이 됩니다.

정렬 단계의 한 가지 문제는 로컬 메모리 점유율입니다.이 경우 GPU의 throughput과 동작 지연 시간에 관련된 SIMT 속성입니다.Backward Memory Allocation(BMA; 역방향 메모리 할당[8])은 픽셀을 깊이 복잡도에 따라 그룹화하고 배치별로 분류하여 잠재적으로 높은 깊이 복잡도 장면의 맥락에서 낮은 깊이 복잡도 픽셀의 점유율 및 성능을 향상시킨다.전체 OIT 성능이 최대 3배 향상되었다고 보고되었습니다.

정렬은 일반적으로 로컬 어레이에서 수행되지만, GPU의 메모리 계층을 사용하여 [9]레지스터로 정렬함으로써 성능을 더욱 향상시킬 수 있습니다. 이는 외부 병합 정렬과 마찬가지로 특히 BMA와 연계하여 이루어집니다.

대략적인 OIT

대략적인 OIT 기술을 통해 정확한 렌더링의 제약을 완화하여 더 빠른 결과를 얻을 수 있습니다.모든 fragment를 저장할 필요가 없거나 지오메트리를 부분적으로만 정렬하는 것으로, 보다 높은 퍼포먼스를 얻을 수 있습니다.또, fragment 데이터를 압축 또는 삭감하는 기술도 다수 있습니다.여기에는 다음이 포함됩니다.

  • 확률적 투명성: 최대 불투명도로 더 높은 분해능을 그리지만 일부 조각은 폐기합니다.다운샘플링은 투명성을 [10]산출합니다.
  • Adaptive Transparency([11]적응형 투명도)는 첫 번째 기법으로 즉석에서 압축하는 가시성 함수를 구성하고 두 번째 기법으로 이 데이터를 사용하여 순서가 없는 단편들을 합성합니다.인텔의 픽셀 동기화[12] 의해, 모든 fragment를 보존할 필요가 없어져, 다른 많은 OIT 테크놀로지의 무제한의 메모리 요건이 없어집니다.

하드웨어의 OIT

  • Sega Dreamcast 게임 콘솔에는 자동 [13]OIT 하드웨어 지원이 포함되어 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Everitt, Cass (2001-05-15). "Interactive Order-Independent Transparency". Nvidia. Archived from the original on 2011-09-27. Retrieved 2008-10-12.
  2. ^ Bavoil, Louis (February 2008). "Order Independent Transparency with Dual Depth Peeling" (PDF). Nvidia. Retrieved 2013-03-12.
  3. ^ 팡류, 멍청황, 쉬에후이류 및 엔화우. "CUDA 래스터라이저를 통한 싱글 패스 깊이 필링", SIGGRAPH 2009: Talks(SIGGRAPH '09), 2009년
  4. ^ 크레이그 피퍼."A 버퍼 스토리지를 선형화하기 위한 프리픽스 합계 패스", 특허출원, 2008년 12월
  5. ^ 마릴레나 모렐과 주앙 L.D.콤바와 라파엘 토르첼슨과 루이 바스토스."Dynamic Fragment Buffer를 통한 메모리 최적화 주문에 의존하지 않는 투명성", In Computers & Graphics, 2014.
  6. ^ a b Pyarelal Knowles, Geoff Leach, Fabio Zambetta."Chapter 20: Efficient Layered Fragment Buffer Technics", OpenGL Insights, 279-292, Editors Cozi and Riccio, CRC Press, 2012
  7. ^ 제이슨 C.양, 저스틴 헨슬리, 홀거 그룬, 니콜라스 티비에로즈.2010년 제21회 렌더링 관련 유로그래픽스 컨퍼런스(EGSR'10) 진행 중 "GPU 실시간 동시 링크 리스트 구축"
  8. ^ Knowles; et al. (Oct 2013). "Backwards Memory Allocation and Improved OIT" (PDF). Eurographics Digital Library. Archived from the original (PDF) on 2014-03-02. Retrieved 2014-01-21.
  9. ^ Knowles; et al. (June 2014). "Fast Sorting for Exact OIT of Complex Scenes" (PDF). Springer Berlin Heidelberg. Archived from the original (PDF) on 2014-08-09. Retrieved 2014-08-05.
  10. ^ Enderton, Eric (n.d.). "Stochastic Transparency" (PDF). Nvidia. Retrieved 2013-03-12.
  11. ^ Salvi; et al. (2013-07-18). "Adaptive Transparency". Retrieved 2014-01-21.
  12. ^ Davies, Leigh (2013-07-18). "Order-Independent Transparency Approximation with Pixel Synchronization". Intel. Retrieved 2014-01-21.
  13. ^ "Optimizing Dreamcast Microsoft Direct3D Performance". Microsoft. 1999-03-01.