KR20130016120A - 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체 - Google Patents

가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체 Download PDF

Info

Publication number
KR20130016120A
KR20130016120A KR1020120085248A KR20120085248A KR20130016120A KR 20130016120 A KR20130016120 A KR 20130016120A KR 1020120085248 A KR1020120085248 A KR 1020120085248A KR 20120085248 A KR20120085248 A KR 20120085248A KR 20130016120 A KR20130016120 A KR 20130016120A
Authority
KR
South Korea
Prior art keywords
primitives
acceleration structure
scene
constructing
clusters
Prior art date
Application number
KR1020120085248A
Other languages
English (en)
Inventor
키릴 블라디미로비치 가란자
자코포 판탈레오니
데이비드 커크 맥알리스터
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20130016120A publication Critical patent/KR20130016120A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

가속 구조를 구성하기 위한 시스템, 방법, 및 컴퓨터 프로그램 제품이 제공된다. 사용 시에, 장면과 연관된 복수의 프리미티브가 식별된다. 추가적으로, 가속 구조가 프리미티브를 이용하여 구성된다.

Description

가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체{SYSTEM, METHOD, AND COMPUTER-READABLE RECORDING MEDIUM FOR CONSTRUCTING AN ACCELERATION STRUCTURE}
본 발명은 이미지를 렌더링하는 것에 관한 것이며, 더 구체적으로는 광선 추적(ray tracing)을 수행하는 것에 관한 것이다.
전형적으로, 광선 추적은 디스플레이되는 장면 내에 이미지를 생성하는데 사용되어 왔다. 예를 들면, 복수의 광선과 디스플레이되는 장면의 복수의 프리미티브(primitive) 사이의 교차점들이 프리미티브들과 연관된 이미지를 렌더링(render)하기 위해 결정될 수 있다. 그러나, 광선 추적을 수행하기 위한 현재의 기술은 다양한 제한들과 연관되어 있다.
예를 들면, 광선 추적을 수행하기 위한 현재의 방법들은 광선 추적과 연관되어 사용되는 가속 구조를 비효율적으로 구성할 수 있다. 이것은 많은 양의 프리미티브들과 연관되는 가속 구조의 시간-집중적인(time-intensive) 구성을 초래할 수 있다.
따라서 이러한 이슈들 및/또는 종래 기술과 연관된 다른 이슈들을 다룰 필요가 있다.
가속 구조를 구성하기 위한 시스템, 방법, 및 컴퓨터 프로그램 제품이 제공된다. 사용시에, 장면과 연관된 복수의 프리미티브들이 식별된다. 추가적으로, 가속 구조는 프리미티브들을 이용하여 구성된다.
도 1은 일 실시예에 따른, 가속 구조를 구성하기 위한 방법을 도시한다.
도 2는 다른 실시예에 따른, 가속 구조의 구성 동안 파티셔닝(partitioning)을 수행하는 데에 사용되는 태스크 큐(task queue) 시스템을 도시한다.
도 3은 다른 실시예에 따른, 모톤 코드(Morton codes)를 사용하는 프리미티브들의 그룹의 소팅(sorting)을 도시한다.
도 4는 다른 실시예에 따라, 도 3에서 수행되는 소팅에 대응하는 복수의 중간-분할 큐를 도시한다.
도 5는 다른 실시예에 따른, SAH 비닝(binning) 절차의 데이터 흐름 시각화를 도시한다.
도 6은 다양한 이전 실시예들의 다양한 아키텍처 및/또는 기능이 구현될 수 있는 예시적인 시스템을 도시한다.
도 1은 일 실시예에 따라, 가속 구조를 구성하기 위한 방법(100)을 도시한다. 동작(102)에서 도시한 바와 같이, 장면과 연관된 복수의 프리미티브들이 식별된다. 일 실시예에서, 장면은 렌더링되고 있는 프로세스에 있는 장면을 포함할 수 있다. 예를 들면, 장면은 광선 추적을 사용하여 렌더링되고 있는 프로세스에 있을 수 있다. 다른 실시예에서, 복수의 프리미티브가 장면 내에 포함될 수 있다. 예를 들면, 장면은 복수의 프리미티브로 구성될 수 있다. 다른 실시예에서, 복수의 프리미티브는 복수의 트라이앵글(triangles)을 포함할 수 있다. 그러나, 물론 복수의 프리미티브는 광선 추적을 수행하는 데에 사용되는 임의의 프리미티브들을 포함할 수 있다.
추가적으로, 동작(104)에 도시된 바와 같이, 가속 구조는 프리미티브들을 이용하여 구성된다. 일 실시예에서, 가속 구조는 BVH(bounding volume hierarchy)을 포함할 수 있다. 다른 실시예에서, 가속 구조는 LBVH(linearized bounding volume hierarchy)을 포함할 수 있다. 다른 실시예에서, 가속 구조는 HLBVH(hierarchical linearized bounding volume hierarchy)을 포함할 수 있다.
다른 실시예에서, 가속 구조는 복수의 노드를 포함할 수 있다. 예를 들면, 가속 구조는 노드들의 계층을 포함할 수 있고, 여기서 자식 노드들은 각각의 부모 노드 바운딩 박스들 내에 위치하는 바운딩 박스들을 나타내고, 리프 노드들은 각각의 부모 노드 바운딩 박스들 내에 존재하는 하나 이상의 프리미티브들을 나타낸다. 이러한 방식으로, 가속 구조는 프리미티브들을 광선 추적 동안 사용될 복수의 계층적 박스로 조직화할 수 있는 BVH를 포함할 수 있다.
또한, 일 실시예에서, 가속 구조를 구성하는 것은 프리미티브들을 소팅하는 것을 포함할 수 있다. 예를 들면, 프리미티브들은 장면의 바운딩 박스를 스패닝(span)하는 공간-채움(space-filling) 곡선(예를 들면, 모톤 곡선, 힐버트 곡선(Hilbert curve), 등)을 따라 소팅될 수 있다. 다른 실시예에서, 공간-채움 곡선은 장면에서 각각의 프리미티브의 중심의 모톤 코드를 계산함으로써 결정될 수 있다(예를 들면, 프리미티브의 중간에서 평균 위치는 3차원(3D) 좌표로부터 회귀적으로 설계된 모톤 곡선 등과 연관된 1차원 좌표로 변형될 수 있다).
다른 예에서, 소팅은 최하위 자리 기수 소팅 알고리즘(a least significant digit radix sorting algorithm)을 이용하여 수행될 수 있다. 다른 실시예에서, 가속 구조를 구성하는 것은 장면 내에 프리미티브들의 클러스터들(예컨대, 프리미티브들의 대략적인(coarse) 클러스터 등)을 형성하는 것을 포함할 수 있다. 예를 들어, 클러스터들은 런-길이(run-length) 인코딩 압축 알고리즘을 이용하여 형성될 수 있다.
또한, 일 실시예에서, 가속 구조를 구성하는 것은 각각의 형성된 클러스터 내의 프리미티브들을 파티셔닝하는 것을 포함할 수 있다. 예를 들어, 가속 구조를 구성하는 것은 공간 중간 분할들(예컨대, LBVH-스타일 공간 중간 분할들 등)을 사용하여 각각의 클러스터 내의 모든 프리미티브들을 파티셔닝하는 것을 포함할 수 있다. 다른 예에서, 가속 구조를 구성하는 것은 클러스터들을 이용하여 트리(예컨대, 최상위-레벨(top-level) 트리 등)를 생성하는 것을 포함할 수 있다. 예를 들어, 가속 구조를 구성하는 것은 클러스터들을 파티셔닝함으로써 최상위-레벨 트리를 생성하는 것을 포함할 수 있다(예컨대, 비닝된(binned) 표면 영역 휴리스틱(surface area heuristic; SAH), SAH-최적화된 트리 구성 알고리즘 등). 다른 실시예에서, SAH는 병렬 비닝 방식을 이용할 수 있다.
또한, 일 실시예에서, 프리미티브들 및 클러스터들을 파티셔닝하는 것은 하나 이상의 태스크 큐들을 이용하여 수행될 수 있다. 예를 들어, (예컨대, 파이프라인 등을 생성함으로써) 가속 구조의 구성 동안 작업을 병렬화하기 위해 태스크 큐 시스템이 사용될 수 있다. 다른 실시예에서, 가속 구조는 하나 이상의 알고리즘들을 이용하여 구성될 수 있다. 예를 들어, 프리미티브들을 소팅하는 것, 프리미티브들의 클러스터들을 형성하는 것, 프리미티브들을 파티셔닝하는 것, 및 트리를 생성하는 것 모두는 하나 이상의 알고리즘들을 이용하여 수행될 수 있다.
추가적으로, 일 실시예에서, 가속 구조를 구성하는 것은 그래픽 처리 유닛(GPU)을 이용하여 수행될 수 있다. 예를 들어, GPU는 가속 구조의 전체 구성을 수행할 수 있다. 이런 방식으로, 중앙 처리 유닛(CPU)와 연관되는 시스템 메모리와 GPU 사이의 데이터의 전달이 방지될 수 있으며, 이는 가속 구조를 구성하는데 필요한 시간을 감소시킬 수 있다.
전술한 프레임워크가 사용자의 요구에 따라 구현되거나 구현되지 않을 수 있는 다양한 선택적 아키텍처들 및 특징들과 관련하여 추가의 예시적인 정보가 이제 개시될 것이다. 이하의 정보는 예시적인 목적으로 개시되며, 어떠한 방식으로도 제한적인 것으로 간주되어서는 안된다는 것을 반드시 유념해야 한다. 이하의 특징들 중 어떤 것도 기술된 다른 특징들을 배제하고 또는 배제하지 않고 선택적으로 포함될 수 있다.
도 2는 다른 실시예에 따른, 가속 구조의 구성 동안 파티셔닝을 수행하는 데 사용되는 태스크 큐 시스템(200)을 도시한다. 선택으로서, 본 태스크 큐 시스템(200)은 도 1의 기능의 맥락에서 수행될 수 있다. 물론, 그러나, 태스크 큐 시스템(200)은 임의의 원하는 환경에서 구현될 수 있다. 전술한 정의들이 본 설명 동안에 적용될 수 있다는 것 또한 유념해야 한다.
도시된 바와 같이, 태스크 큐 시스템(200)은 처리할 태스크들의 세트들을 (예컨대, 입력 큐 등으로부터) 각각 패칭하는(fetch) 복수의 워프(202A 및 202B)를 포함한다. 일 실시예에서, 복수의 워프(202A 및 202B) 각각은 작업의 단위(예컨대, GPU 상의 작업의 물리적 SIMT 단위 등)를 포함할 수 있다. 다른 실시예에서, 각각의 개별적인 태스크는 가속 구조의 구성 동안 단일 노드를 처리하는 것에 대응할 수 있다.
추가적으로, 일 실시예에서, 실행 시간(run time)에, 복수의 워프(202A 및 202B) 각각은 처리할 태스크들의 세트들을 입력 큐로부터 계속 패칭할 수 있으며, 각각의 세트는 스레드 당 하나의 태스크를 포함할 수 있다. 추가적으로, 복수의 워프(202A 및 202B) 각각은 큐 헤드를 업데이트하기 위해 워프 당 단일의 글로벌 메모리 원자성 가산(single global memory atomic add per warp)을 사용할 수 있다. 더욱이, 복수의 워프(202A 및 202B) 각각 내의 각각의 스레드는 그것이 생성할 출력 태스크들(204)의 수를 산출한다.
또한, 복수의 워프(202A 및 202B) 각각 내의 각각의 스레드가 그것이 생성할 출력 태스크들(204)의 수를 산출한 후에, 복수의 워프(202A 및 202B) 각각 내의 모든 스레드들은 복수의 워프(202A 및 202B) 각각의 공통 베이스에 대한 그들의 출력 태스크들의 오프셋을 산출하기 위해 워프-와이드 프리픽스 합(warp-wide prefix sum)(206)에 참여한다. 일 실시예에서, 복수의 워프(202A 및 202B) 각각 내의 제1 스레드는 복수의 워프(202A 및 202B)의 출력 큐 내의 베이스 어드레스를 산출하기 위해 단일의 글로벌 메모리 원자성 가산을 수행할 수 있다. 또한, 일 실시예에서, 레벨마다 개별적인 큐가 사용될 수 있는데, 이는 모든 처리가 단일의 커널 호출 내에서 수행됨과 동시에 폭-우선(breadth-first) 트리 레이아웃을 생성할 수 있다.
일 실시예에서, 가속 구조를 구성하는 것은 표준 LBVH 및 더 고품질의 SAH 하이브리드 둘다를 생성하기 위해 하나 이상의 알고리즘들을 사용하는 것을 포함할 수 있다. 예를 들어, 전체가 참조로서 본원에 통합되고, LBVH 및 HLBVH를 구성하는 방법들을 설명하는 "HLBVH: Hierarchical LBVH construction for real-time ray tracing of dynamic geometry" (Pantaleoni et al., High-Performance Graphics 2010, ACM Siggraph / Eurographics Symposium Proceedings, Eurographics, 87-95)를 참조한다.
추가적으로, 다른 실시예에서, 가속 구조를 구성하는 것은 장면의 바운딩 박스를 스패닝하는 30-비트 모톤 곡선을 따라 프리미티브들을 소팅하는 것을 포함할 수 있다. 예를 들어, 전체가 참조로서 본원에 통합되며, 프리미티브들을 소팅하고 BVH들을 구성하기 위한 방법들을 설명하는 "Fast bvh construction on GPUs" (Lauterbach et al., Comput. Graph. Forum 28, 2, 375-384)를 참조하라. 또다른 실시예에서, 프리미티브들은 브루트 포스(brute force) 알고리즘(예컨대, 최하위 자리 기수 소팅 알고리즘(least-significant digit radix sorting algorithm) 등)을 이용하여 소팅될 수 있다.
또다른 실시예에서는, 모톤 코드들이 계층적 그리드를 정의한다는 관측을 이용하여, 각각의 3n 비트 코드가 면당 2n개의 엔트리들을 갖는 레귤러(regular) 그리드 내의 고유한 복셀(voxel)을 식별하는 곳에, 그리고, 일 실시예에서는, 코드의 처음 3m 비트들이 면당 2m개의 하위 분할들을 갖는 더 대략적인(coarser) 그리드 내의 부모 복셀을 식별하는 곳에, 객체들의 대략적인 클러스터들이 각각의 3m 비트 빈 내에 들어오도록 형성될 수 있다. 다른 실시예에서, 고유한 복셀이 식별되는 그리드는 면마다 상이한 양의 엔트리들을 포함할 수 있다. 또다른 실시예에서, 객체들의 대략적인 클러스터들을 형성하는 것은 런-길이 인코딩 압축 알고리즘의 인스턴스를 이용하여 수행될 수 있으며, 단일의 압축 동작(compaction operation)을 사용하여 구현될 수 있다.
또한, 일 실시예에서, 클러스터들이 식별된 후에, 모든 프리미티브들은 (예를 들면, LBVH-스타일 공간 중간 분할들(LBVH-style spatial middle splits) 등을 이용하여) 각 클러스터 내부로 파티셔닝될 수 있다. 또 다른 실시예에서, 그 후에 최상위-레벨 트리가 생성될 수 있고, 여기에서 클러스터들은 비닝된(binned) SAH 빌더(builder)로 파티셔닝될 수 있다. 예를 들면, 그 전체가 참조로서 본원에 포함되며, 클러스터들을 파티셔닝하기 위한 방법들을 개시하는, "On fast Construction of SAH based Bounding Volume Hierarchies" (Wald, I., In Proceedings of the 2007 Eurographics/IEEE Symposium on Interactive Ray Tracing, Eurographics)를 참조한다.
또한, 일 실시예에서, 공간 중간 분할 파티셔닝 및 SAH 빌더 양쪽 모두는, 출력 계층들의 개별 노드들에 걸쳐 작업을 병렬화할 수 있는, 효율적인 태스크 큐 시스템(예를 들면, 태스크 큐 시스템(200) 등)에 의존할 수 있다.
또한, 일 실시예에서, 중간 분할 계층 방사가 수행될 수 있다. 예를 들면, 계층의 각각의 노드는 그들의 모톤 코드(Morton code)들에 의해 소팅된 프리미티브들의 연속적인 범위에 대응할 수 있고, 노드를 분할하는 것은 그것의 코드가 선행하는 엘리먼트와는 다르게 되는 범위 내의 제1 엘리먼트를 찾는 것을 요구할 수 있다는 것에 유의할 수 있다. 추가적으로, 또 다른 실시예에서, 시리얼 디바이스 상에서 이용될 수 있는 표준 오더링(standard ordering)으로 되돌림으로써 복잡한 머신이 회피될 수 있다. 예를 들면, 각 노드는 단일 스레드에 맵핑될 수 있고, 각 스레드는 그 자신의 분할 플레인을 찾도록 허용될 수 있다.
또 다른 실시예에서, 노드 내의 프리미티브들의 전체 범위에 걸쳐 루핑하는 대신에, 단순한 이진 탐색으로서 문제를 재공식화하는 것이 가능하다는 것이 관찰될 수 있다. 예를 들면, 노드가 레벨 l에 위치한다면, 노드들의 프리미티브들의 모톤 코드들이 하이 l-1 비트들의 정확히 동일한 세트를 가질 수 있다는 것이 결정될 수 있다. 또 다른 실시예에서, 첫 번째 비트 pl이며 이에 의해 노드의 범위 내의 첫 번째 및 마지막 모톤 코드가 상이한 것으로 결정될 수 있다. 또 다른 실시예에서, 이진 탐색이 수행되어 비트 p에서 1을 포함하는 첫 번째 모톤 코드를 찾을 수 있다.
이러한 방식으로, N 프리미티브들을 포함하는 노드에 대해서, 알고리즘은 N 모톤 코드들의 전체 세트 대신, O(log2(N)) 메모리 셀들만을 터칭함으로써 분할 플레인을 찾을 수 있다.
추가적으로, 일 실시예에서, 중간 분할들은 때때로 실패할 수 있으며, 이는 우발적인 큰 리프들(leaves)을 야기할 수 있다. 또 다른 실시예에서, 그러한 실패가 검출될 때, 리프들은 객체-메디안(object-median)에 의해 분할될 수 있다. 또 다른 실시예에서, BHV의 토폴로지가 산출된 후에, 상향식 재피팅 절차(bottom-up re-fitting procedure)가 실행되어 트리의 각 노드의 바운딩 박스들을 산출할 수 있다. 이 프로세스는 BVH가 폭 우선 오더로 저장된다는 사실에 의해 간략화될 수 있다. 또 다른 실시예에서, 트리 레벨당 하나의 커널 론치(kernel launch)가 이용될 수 있고, 레벨 내의 노드당 하나의 스레드가 이용될 수 있다.
도 3은 또 다른 실시예에 따른, 모톤 코드들을 이용하는 프리미티브들의 그룹의 소팅(300)을 도시한다. 옵션으로서, 현재 소팅(300)이 도 1-2의 상관 관계의 맥락에서 수행될 수 있다. 물론, 그러나, 소팅(300)은 임의의 원하는 환경에서 구현될 수 있다. 전술한 정의들이 본 개시 내용 동안에 적용할 수 있다는 것에 또한 유의해야 한다.
도시된 바와 같이, 2차원 프로젝션 내에 위치한 복수의 바운딩된 프리미티브(302A-J)의 중심(centroid)들은 각각 할당된 모톤 코드들(예를 들면, 4비트 모톤 코드들 등)이다. 추가적으로, 복수의 바운딩된 프리미티브(302A-J)는 행들(rows)의 시퀀스(306A-J)로 소팅되고, 여기에서 할당된 모톤 코드들은 키들(keys)로서 이용된다. 예를 들면, 시퀀스(306A-J)의 모든 각각의 프리미티브에 대해, 모톤 코드 비트들은 개별 행들(308)로 도시된다. 추가적으로 이진 탐색 파티션들(310)이 행들의 시퀀스(306A-J)에 대해 만들어진다. 또한, 도 4는 또 다른 실시예에 따른 도 3에서 수행된 소팅(300)에 대응하는 복수의 중간-분할 큐(402A-E)를 도시한다.
추가적으로, 일 실시예에서, SAH-최적화된 트리 구성 알고리즘이 모톤 커브의 처음의 3m 비트들에 의해 정의되는 대략적인 클러스터들에 대해 실행될 수 있다. 일 실시예에서, m은 5와 7 사이에 있을 수 있다. 물론, 그러나, m은 임의의 정수를 포함할 수 있다. 또 다른 실시예에서, 구성 알고리즘이 바운딩된 메모리 풋프린트(footprint)에서 실행될 수 있다. 예를 들면, N c 클러스터들이 처리되면, 공간이 2N c -1 노드들에 대해서만 미리 할당될 수 있다.
표 1은 최적화된 트리 구성 알고리즘과 연관된 SAH 비닝 절차를 위한 의사 코드를 예시한다. 물론, 표 1에 도시된 의사 코드가 예시적인 목적을 위해서만 설명되며, 따라서 임의의 방식으로 제한하는 것으로서 간주되어서는 안 된다는 것에 유의해야 한다.
Figure pat00001
일 실시예에서, 패스(pass)에서, (자신의 취합 바운딩 박스를 갖는) 이전 패스로부터의 클러스터는 프리미티브로서 다루어질 수 있다. 또 다른 실시예에서, 산출은 단일 입력 큐 및 단일 출력 큐로 조직화된 분할 태스크들로 분할될 수 있다. 또 다른 실시예에서, 각 태스크는 분할될 필요가 있는 노드에 대응할 수 있고, 세 개의 입력 필드들(예를 들면, 노드의 바운딩 박스, 노드 내부의 클러스터들의 수, 및 노드 ID)에 의해 기술될 수 있다.
추가적으로, 일 실시예에서, 두 개의 추가 노드들이 (예를 들면, 제1 자식 분할 태스크의 ID 및 최상의 분할 플레인) 실시간으로(on the fly) 산출될 수 있다. 또 다른 실시예에서, 이들 필드들은 SOA(structure of arrays) 포맷으로 저장될 수 있고, 이 포맷은 태스크 ID에 의해 인덱스된 개별 어레이들의 수(예를 들면, 5 등)를 유지할 수 있다. 또 다른 실시예에서, 각 클러스터를 그것이 속한 현재 노드(즉, 분할 태스크 등)에 맵핑하는 어레이(예를 들면, cluster _ split _ id 등)가 유지될 수 있고, 여기에서, 어레이는 분할 동작마다 업데이트될 수 있다.
또한, 일 실시예에서, 도 1의 루프는 분할 태스크 0을 형성할 수 있는 루트 노드에 모든 클러스터들을 할당함으로써 시작할 수 있다. 그 후, 각 루프 반복에 대해, 비닝, SAH 평가, 및 클러스터 분배 스텝들이 수행될 수 있다. 예를 들면, 각 노드의 바운딩 박스는 각 차원에서 M(예를 들면, M은 8 등과 같은 정수를 포함함) 개의 슬랩 형상(slab-shaped) 빈들로 분할될 수 있다. 예를 들면, 그 전체가 참조로서 본원에 포함되고, 노드 바운딩 박스들을 분할하기 위한 방법들을 개시하는, "Ray Tracing Deformable Scenes using Dynamic Bounding Volume Hierarchies"(Wald, et al., ACM Transactions on Graphics 26, 1, 485-493)을 참조한다.
또한, 또 다른 실시예에서, 빈은 최초에 비어있는 바운딩 박스 및 카운트를 저장할 수 있다. 또 다른 실시예에서, 각 클러스터의 바운딩 박스는 그것의 중심을 포함하는 빈으로 축적될 수 있고, 빈에 들어오는 클러스터들의 수의 카운트는 원자적으로(atomically) 증가될 수 있다. 또 다른 실시예에서, 이러한 절차가 클러스터들에 걸쳐 병렬로 실행될 수 있고, 여기에서 각 스레드는 단일 클러스터를 찾아볼 수 있고, 빈의 바운딩 박스들을 성장시키기 위해 원자적 최소/최대를 이용하여, 대응하는 분할 태스크 내의 대응하는 빈으로 그것의 바운딩 박스를 축적할 수 있다.
또한, 일 실시예에서, 입력 큐에서의 각각의 분할-태스크에 대하여, 균등하게 분포된 빈들(bins) 사이에서 각각의 차원(dimension)의 모든 분할 평면들에 대하여 표면 영역 메트릭(surface area metric)이 평가될 수 있으며, 최상의 것이 선택될 수 있다. 다른 실시예에서, 만일 분할-태스크가 단일 클러스터를 포함한다면, 세분화(subdivision)가 중지될 수 있다; 그렇지 않다면, 두 개의 출력 분할-태스크들이 생성될 수 있는데, 여기서 좌측 및 우측 서브스페이스들에 대응하는 바운딩 박스들이 SAH 분할에 의해 결정될 수 있다.
또한, 일 실시예에서, 클러스터들과 분할-태스크들 간의 매핑이 갱신될 수 있는데, 여기서 각각의 클러스터는 그것의 이전의 소유자에 의해 생성된 두 개의 출력 분할-태스크들 중 하나에 매핑될 수 있다. 신규의 분할-태스크 ID를 결정하기 위하여, 대응하는 분할-태스크의 best split 필드에 저장된 값과 i번째 클러스터의 빈 id가 비교될 수 있다. 표 2는 i번째 클러스터의 빈 id를 대응하는 분할-태스크의 best split 필드에 저장된 값과 비교하기 위한 의사 코드를 도시한다. 물론, 표 2에 도시된 의사 코드는 설명의 목적으로만 제시된 것이며, 따라서 임의의 방식으로 제한하는 것으로 해석되어서는 안 된다는 점을 유의해야 할 것이다.
Figure pat00002
또한, 일 실시예에서, 알고리즘 단계들의 순서에서 일부 유연성이 있을 수 있다. 예를 들면, 리피팅(refitting)은 바닥 레벨과 최상위 레벨 단계들에 대하여 별도로 수행되어 병행성(parallelism) 대비 클러스터 바운딩 박스 정확도를 트레이드 오프할 수 있다.
도 5는 다른 실시예에 따라서, SAH 비닝(binning) 프로시져의 데이터 흐름 시각화(500)를 도시한다. 선택으로서, 현재의 데이터 흐름 시각화(500)는 도 1 내지 4의 상관 관계의 맥락에서 수행될 수 있다. 그러나, 물론 데이터 흐름 시각화(500)는 임의의 원하는 환경에서 구현될 수 있다. 앞서 언급된 정의들은 현재의 설명 동안에도 적용될 수 있다는 점을 유의하여야 할 것이다.
도시된 바와 같이, 클러스터들(502A 및 502B)은 그들의 부모 노드의 빈 통계들(504)을 형성하는데 기여한다. 또한, 입력 태스크 큐(506) 내의 노드들은 분할되어, 출력 큐(510)로의 두 개의 엔트리들(508A 및 508B)을 생성한다.
또한, 일 실시예에서, 미세 복잡 기하 구조(fine intricate geometry)(예를 들면, 머리카락, 모피, 나뭇잎 등)의 클러스터들을 위한 전문화된 빌더들이 통합될 수 있다. 다른 실시예에서, 이 작업은 트라이앵글 분할 전략들과 용이하게 통합될 수 있다. 예를 들면, 본 명세서에서 참조로서 그 전체가 포함되며, 트라이앵글 분할 전략들을 기술하는 "Early split clipping for bounding volume hierarchies" (Ernst, et al., Symposium on Interactive Ray Tracing 0, 73-38)을 참조하라. 또 다른 실시예에서, 압축-소트-압축해제 기술들이 메쉬에 대한 내부 일관성(coherence)을 이용하기 위하여 재-포함될 수 있다.
이러한 방식으로, HLBVH가 범용 태스크 큐들에 기초하여 구현될 수 있는데, 이는 단순하고 빠른 병렬 알고리즘들을 구축하기 위해 사용될 수 있는 작업 배정(work dispatching)의 유연성 있는 패러다임(paradigm)을 포함할 수 있다. 또한, 일 실시예에서, 동일한 메커니즘이 고품질 HLBVH 변형을 위해 거대하게 병렬적으로 비닝된 SAH 빌더를 구현하기 위하여 사용될 수 있다. 다른 실시예에서, HLBVH 구현은 GPU 상에서 완전히 수행될 수 있다. 이러한 방식으로, CPU와 GPU 간의 동기화 및 메모리 사본들이 제거될 수 있다. 예를 들면, 이러한 오버헤드들의 제거를 고려할 때, 결과적인 빌더는 이전의 테크닉들보다 (예를 들면, 5 내지 10 배 더 빠를 수 있는 등) 더 빠를 수 있다. 다른 예에서, 단지 커널 시간만을 고려하는 경우에도 또한 이전의 테크닉들보다 (예를 들면, 3 배 정도까지 더 빠를 수 있는 등) 더 빠를 수 있다.
또한, 일 실시예에서, 적당히 복잡한 모델들에 대하여 조차 고 품질 바운딩 볼륨 계층들이 실시간으로 생성될 수 있다. 다른 실시예에서, 알고리즘들은 이전의 HLBVH 구현들에 비하여 더 빠를 수 있다. 이는 작업 큐들의 채용에 의해 제공되는 일반적인 단순화 덕분에 가능할 수 있는데, 이는 높은 레이턴시 커널 개시의 횟수를 상당히 감소시키도록 허용할 수 있고 데이터 변형 패스들을 감소시킬 수 있다.
또한, 일 실시예에서, 계층적 선형 바운딩 볼륨 계층들(HLBVHs)은 수백만의 완전히 동적인 트라이앵글들의 존재에도 불구하고, 실시간 광선 추적을 위해 필요한 공간 인덱스를 재구성할 수 있을 수 있다. 다른 실시예에서, 전술한 알고리즘들은 HLBVH의 더 단순하고 더 빠른 변형을 가능하게 할 수 있고, 여기서 공간 파티셔닝에 필요한 프리픽스 합들, 압축(compaction) 및 부분적 폭-우선 트리 순회(traversal)의 모든 복잡한 북키핑(bookkeeping)이 효율적인 작업 큐들 및 이진 검색 위에 구성된 우아한 파이프라인으로 대체될 수 있다. 또다른 실시예에서, 신규의 알고리즘은 더 빠르고 더 메모리 효율적일 수 있는데, 이는 중간 단계의 산출을 위한 기하 데이터의 임시 저장에 대한 필요를 제거할 수 있다. 또한, 일 실시예에서, 동일한 파이프라인이 GPU 상의 최상위 레벨 SAH 최적화된 트리의 구성을 병렬화하기 위해 확장될 수 있는데, 이는 CPU로의 라운드 트립들(round-trips)을 제거할 수 있으며, 이에 의해 전체 구성 속도를 (예를 들면, 다섯 내지 열 배 정도 만큼 등) 가속화할 수 있다.
다른 실시예에서, 단순하고, 빠르며, 일반화하기 용이한, 계층적 선형 바운딩 볼륨 계층들(HLBVHs)의 새로운 변형이 제공될 수 있다. 일 실시예에서, 실제의 객체 파티셔닝 단계를 수행하기 위해 사용되는 프리픽스-합들, 압축 및 부분적 폭-우선 트리 순회 프리미티브들의 즉석의 복잡한 혼합이 효율적인 작업-큐들에 기초한 단일의 우아한 파이프라인으로 대체될 수 있다. 이러한 방식으로, 원래의 HLBVH 알고리즘이 단순화될 수 있고, 우수한 속도들이 제공될 수 있다. 또한, 일 실시예에서, 신규의 파이프라인이 또한 이전에 요구되었을 수 있는 모든 부가적인 임시 저장소에 대한 필요성을 제거할 수 있다.
더 나아가, 일 실시예에서, 표면 영역 휴리스틱(SAH) 최적화된 HLBVH 하이브리드가 병렬화될 수 있다. 예를 들면, 작업-기반 파이프라인의 부가된 유연성이 병렬 비닝 스킴의 효율성과 결합될 수 있다. 이러한 방식으로, 전통적인 방법들의 열 배 만큼에 이르는 속도 향상 인자가 얻어질 수 있다. 또한, 전체 파이프라인을 병렬화함에 의해, 모든 가속 구조 구성이 GPU 상에서 실행될 수 있으며, 이는 CPU와 GPU 메모리 공간들 사이에서 비용이 드는 사본들을 제거할 수 있다.
또한, 일 실시예에서, 가속 구조를 구성하기 위해 사용되는 모든 알고리즘들이 CUDA 병렬 컴퓨팅 아키텍처를 사용하여 구현될 수 있다. 예를 들면, 본 명세서에서 참조로서 그 전체가 포함되며, CUDA로 병렬 계산을 구현하는 것을 기술하는 "Scalable parallel programming with cuda" (Nickolls, et al., ACM Queue 6, 2, 40-53)를 참조한다. 또한, 가속 구조의 구성은 효율적인 소팅 프리미티브들을 활용하여 수행될 수 있다. 예를 들면, 본 명세서에서 참조로서 그 전체가 포함되며, 효율적인 소팅 프리미티브들을 기술하는 "Revisiting sorting for GPGPU stream architectures" (Merrill, et al., Tech. Rep. CS2010-03, 버지니아 대학, 전산학과, 2월)을 참조한다.
또한, 일 실시예에서, 가속 구조는 BVH를 구성하는 것을 포함할 수 있다. 예를 들어, 장면의 3D 범위는 차원 당 n 비트를 이용하여 구분될 수 있고, 각각의 포인트는 (구분된 좌표들의 이진 디지트들을 인터리빙(interleaving)함으로써 산출될 수 있는) n차의 공간-채움 모톤 커브(space-filling Morton curve)를 따라 선형 좌표로 할당될 수 있다. 다른 실시예에서, 프리미티브들은 그들의 중심의 모톤 코드에 따라 소팅될 수 있다. 또 다른 실시예에서, 동일한 3n 비트 코드를 갖는 클러스터들의 프리미티브들을 그룹핑함으로써 계층이 구축될 수 있고, 그리고 나서 동일한 (3n-1) 고차 비트들을 갖는 클러스터들을 그룹핑하고, 이런 식으로 완전한 트리가 구축될 때까지 계속된다. 또 다른 실시예에서, 모톤 코드의 3m 고차 비트들은 측면 당 2m 분할들을 갖는 대략적 그리드(coarse grid) 내의 부모 복셀(parent voxel)을 식별할 수 있고, 따라서 이러한 프로세스는 공간 중간에서 반복적으로 프리미티브들을 철저히 분할하는 것에 대응할 수 있다.
또한, 일 실시예에서, HLBVH는 다양한 방식들로 기본 알고리즘을 개선할 수 있다. 예를 들어, 입력 메시(mesh)에서의 공간적 및 시간적 일관성을 이용하기 위해 압축-소트-압축해제 전략을 적용하여 보다 빠른 구성 알고리즘을 제공할 수 있다. 다른 예에서, 고 품질 하이브리드 빌더를 도입할 수 있고, 여기에서 계층의 최상부는 레벨 m에서 복셀화에 의해 정의된 클러스터들에 대해 SAH(Surface Area Heuristic) 스윕 빌더를 이용하여 구축된다. 예를 들어, 본 명세서에 그 전체가 참조로서 포함되고 예시적인 SAH를 기술하는 "Automatic creation of object hierarchies for ray tracing" (Goldsmith, et al., IEEE Computer Graphics and Applications 7, 5, 14-20)을 참조하라.
다른 실시예에서, 커스텀 스케줄러가 태스크-큐들에 기초하여 구축되어 경량의(light-weight) 스레딩 모델을 구현할 수 있고, 이것은 하드웨어 스레드 지원에 있어서 구축의 오버헤드들을 회피할 수 있다. 예를 들어, 본 명세서에 그 자체가 참조로서 포함되고, 원형의 다수 코어 아키텍처에 대한 최적화된 병렬 비닝된 SAH BVH 빌더를 설명하는 "Fast Construction of SAH BVHs on the Intel Many Integrated Core (MIC) Architecture" (Wald, I, IEEE Transactions on Visualization and Computer Graphics)을 참조하라.
도 6은 다양한 아키텍처 및/또는 다양한 이전의 실시예들의 기능이 구현될 수 있는 예시적인 시스템(600)을 예시한다. 도시된 바와 같이, 시스템(600)은 통신 버스(602)에 접속되는 적어도 하나의 호스트 프로세서(601)를 포함하는 것으로 제공된다. 시스템(600)은 또한 주 메모리(604)를 포함한다. 제어 로직(소프트웨어) 및 데이터는 RAM(random access memory)의 형태를 취할 수 있는 주 메모리(604)에 저장된다.
시스템(600)은 또한 그래픽 프로세서(606) 및 디스플레이(608), 즉, 컴퓨터 모니터를 포함한다. 일 실시예에서, 그래픽 프로세서(606)는 복수의 쉐이더(shader) 모듈, 래스터화(rasterization) 모듈 등을 포함할 수 있다. 전술한 모듈들 각각은 단일 반도체 플랫폼에 배치되어 그래픽 프로세싱 유닛(GPU)을 형성할 수도 있다.
본 명세서에서, 단일 반도체 플랫폼은 단일의 통합된(sole unitary) 반도체 기반 집적 회로 또는 칩을 지칭할 수 있다. 단일 반도체 플랫폼이라는 용어는 또한 온-칩 동작을 시뮬레이트하고, 종래의 CPU(central processing unit)와 버스 구현을 이용하는 것에 대해 실질적인 개선을 이루는 증가된 접속성을 갖는 멀티-칩 모듈을 지칭할 수도 있다. 물론, 다양한 모듈들이 사용자의 희망에 따라 개별적으로 배치될 수 있거나, 반도체 플랫폼들의 다양한 조합으로 배치될 수 있다.
시스템(600)은 또한 보조 저장소(610)를 포함할 수 있다. 보조 저장소(610)는, 예를 들어, 하드 디스크 드라이브 및/또는 플로피 디스크 드라이브, 자기 테이프 드라이브, 콤팩트 디스크 드라이브 등을 나타내는 착탈가능한 저장 드라이브를 포함한다. 착탈가능한 저장 드라이브는 공지된 방법으로 착탈 가능한 저장 유닛으로부터 판독하거나 및/또는 착탈 가능한 저장 유닛으로 기입한다.
컴퓨터 프로그램들 또는 컴퓨터 제어 로직 알고리즘들은 메인 메모리(604) 및/또는 보조 저장소(610)에 저장될 수 있다. 이러한 컴퓨터 프로그램들은, 실행될 때, 시스템(600)으로 하여금 다양한 기능들을 수행할 수 있게 한다. 메모리(604), 저장소(610) 및/또는 임의의 다른 저장소는 컴퓨터 판독가능한 매체의 가능한 예들이다.
일 실시예에서, 이전의 다양한 도면들의 기능 및/또는 아키텍처는, 호스트 프로세서(601), 그래픽 프로세서(606), 호스트 프로세서(601)와 그래픽 프로세서(606) 모두의 성능(capability)들 중 적어도 일부가 가능한 집적 회로(도시되지 않음), 칩셋(즉, 관련된 기능들 등을 수행하기 위한 유닛으로서 작동하고 판매되도록 설계된 집적 회로들의 그룹) 및/또는 그러한 사안을 위한 임의의 다른 집적 회로의 맥락에서 구현될 수 있다.
그러나, 이전의 다양한 도면들의 기능 및/또는 아키텍처는, 일반적인 컴퓨터 시스템, 회로 보드 시스템, 오락을 위한 전용의 게임 콘솔 시스템, 애플리케이션 특정적(application-specific) 시스템 및/또는 임의의 다른 원하는 시스템의 맥락에서 여전히 구현될 수 있다. 예를 들어, 시스템(600)은 데스크탑 컴퓨터, 랩톱 컴퓨터 및/또는 임의의 다른 유형의 로직의 형태를 취할 수 있다. 그러나, 시스템(600)은 PDA(personal digital assistant) 디바이스, 모바일 폰 디바이스, 텔레비전 등을 포함하는 다양한 다른 디바이스들의 형태를 여전히 취할 수 있지만 이에 한정되는 것은 아니다.
또한, 도시되지 않지만, 시스템(600)은 통신을 위한 네트워크(예를 들어, 인터넷, 피어 투 피어(peer-to-peer) 네트워크, 케이블 네트워크 등과 같은 WAN(wide area network), 무선 네트워크, LAN(local area network), 전화통신 네트워크)에 결합될 수 있다.
다양한 실시예들을 상술하였지만, 다양한 실시예들은 한정이 아니라 단지 예시를 위해 개시되었음을 이해해야 한다. 따라서, 바람직한 실시예의 범위 및 범주는 전술된 예시적인 실시예들 중 임의의 실시예에 한정되지 않아야 하며, 후속하는 청구범위 및 그 등가물들에 따라서만 정의되어야 한다.

Claims (20)

  1. 장면(scene)과 연관된 복수의 프리미티브(primitive)를 식별하는 단계; 및
    상기 프리미티브들을 이용하여 가속 구조(acceleration structure)를 구성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 장면은 상기 복수의 프리미티브로 이루어지는 방법.
  3. 제1항에 있어서,
    GPU(graphic processing unit)는 상기 가속 구조의 전체 구성(construction)을 수행하는 방법.
  4. 제1항에 있어서,
    상기 가속 구조는 HLBVH(hierarchical linearized bounding volume hierarchy)를 포함하는 방법.
  5. 제1항에 있어서,
    상기 가속 구조는 복수의 노드를 포함하는 방법.
  6. 제5항에 있어서,
    상기 가속 구조는 노드들의 계층을 포함하고, 자식 노드(child node)들은 각각의 부모 노드 바운딩 박스(parent node bounding box)들 내에 위치한 바운딩 박스들을 나타내고, 리프 노드(leaf node)들은 각각의 부모 노드 바운딩 박스들 내에 상주하는 하나 이상의 프리미티브들을 나타내는 방법.
  7. 제1항에 있어서,
    상기 가속 구조를 구성하는 단계는 상기 프리미티브들을 소팅(sorting)하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 프리미티브들은 상기 장면의 바운딩 박스를 스패닝(span)하는 공간-채움 곡선(space-filling curve)을 따라 소팅되는 방법.
  9. 제8항에 있어서,
    상기 공간-채움 곡선은 상기 장면 내의 각각의 프리미티브의 중심의 모톤 코드(Morton code)를 산출함으로써 결정되는 방법.
  10. 제1항에 있어서,
    상기 소팅은 적어도 중요 디지트 래딕스 소팅 알고리즘(significant digit radix sorting algorithm)을 이용하여 수행되는 방법.
  11. 제1항에 있어서,
    상기 가속 구조를 구성하는 단계는 상기 장면 내에 프리미티브들의 클러스터(cluster)들을 형성하는 단계를 포함하는 방법.
  12. 제11항에 있어서,
    상기 클러스터들은 런-길이 인코딩 압축 알고리즘(run-length encoding compression algorithm)을 이용하여 형성되는 방법.
  13. 제11항에 있어서,
    상기 가속 구조를 구성하는 단계는 각각의 형성된 클러스터 내의 프리미티브들을 파티셔닝하는 단계를 포함하는 방법.
  14. 제11항에 있어서,
    상기 가속 구조를 구성하는 단계는 공간 중간 분할(spatial middle split)들을 사용하여 각각의 클러스터 내의 모든 프리미티브들을 파티셔닝하는 단계를 포함하는 방법.
  15. 제11항에 있어서,
    상기 가속 구조를 구성하는 단계는 상기 클러스터들을 이용하여 트리(tree)를 생성하는 단계를 포함하는 방법.
  16. 제14항에 있어서,
    상기 가속 구조를 구성하는 단계는 상기 클러스터들을 파티셔닝함으로써 최상위 레벨 트리를 생성하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 프리미티브들 및 상기 클러스터들을 파티셔닝하는 단계는 하나 이상의 작업 큐(task queue)들을 이용하여 수행되는 방법.
  18. 컴퓨터 프로그램 제품을 저장한 컴퓨터 판독가능한 기록 매체로서,
    상기 컴퓨터 프로그램 제품은,
    장면과 연관된 복수의 프리미티브를 식별하기 위한 코드; 및
    상기 프리미티브들을 이용하여 가속 구조를 구성하기 위한 코드
    를 포함하는, 컴퓨터 판독가능한 기록 매체.
  19. 장면과 연관된 복수의 프리미티브를 식별하고, 상기 프리미티브들을 이용하여 가속 구조를 구성하기 위한 GPU를 포함하는 시스템.
  20. 제19항에 있어서,
    버스를 통해 상기 GPU에 결합된 메모리를 더 포함하는 시스템.
KR1020120085248A 2011-08-04 2012-08-03 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체 KR20130016120A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/198,656 2011-08-04
US13/198,656 US20130033507A1 (en) 2011-08-04 2011-08-04 System, method, and computer program product for constructing an acceleration structure

Publications (1)

Publication Number Publication Date
KR20130016120A true KR20130016120A (ko) 2013-02-14

Family

ID=46799698

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120085248A KR20130016120A (ko) 2011-08-04 2012-08-03 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체

Country Status (6)

Country Link
US (1) US20130033507A1 (ko)
JP (1) JP2013037691A (ko)
KR (1) KR20130016120A (ko)
CN (1) CN103106681A (ko)
DE (1) DE102012213292A1 (ko)
GB (1) GB2493425A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170048003A (ko) * 2015-10-26 2017-05-08 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
KR20170064977A (ko) * 2015-12-02 2017-06-12 삼성전자주식회사 Bvh 트리를 구성하기 위한 방법 및 시스템

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103765481B (zh) * 2011-08-05 2016-06-29 想象技术有限公司 用于3-d场景加速结构创建和更新的系统和方法
US9595074B2 (en) 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
CN107833268B (zh) 2012-11-02 2021-05-14 想象技术有限公司 用于图形渲染的几何图形处理方法和图形渲染系统
US20140340412A1 (en) * 2013-05-14 2014-11-20 The Provost, Fellows, Foundation Scholars, & the other members of Board, et al. Hardware unit for fast sah-optimized bvh constrution
US9946658B2 (en) 2013-11-22 2018-04-17 Nvidia Corporation Memory interface design having controllable internal and external interfaces for bypassing defective memory
US8842117B1 (en) 2014-02-13 2014-09-23 Raycast Systems, Inc. Computer hardware architecture and data structures for lookahead flags to support incoherent ray traversal
US9990758B2 (en) * 2014-03-31 2018-06-05 Intel Corporation Bounding volume hierarchy generation using a heterogeneous architecture
US20160139919A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 3D Z-Curve Index from 3D Coordinates
US20160139924A1 (en) * 2014-11-14 2016-05-19 Intel Corporation Machine Level Instructions to Compute a 4D Z-Curve Index from 4D Coordinates
US9984492B2 (en) * 2015-04-02 2018-05-29 Qualcomm Incorporated Efficient hierarchy traversal in ray tracing applications
EP3271809B1 (en) * 2015-07-31 2023-01-11 Hewlett-Packard Development Company, L.P. Parts arrangement determination for a 3d printer build envelope
US10559125B2 (en) * 2015-12-02 2020-02-11 Samsung Electronics Co., Ltd. System and method of constructing bounding volume hierarchy tree
KR102604737B1 (ko) 2016-01-11 2023-11-22 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
EP3206190A1 (en) * 2016-02-15 2017-08-16 Thomson Licensing Device and process for improving efficiency of image rendering
TWI636422B (zh) * 2016-05-06 2018-09-21 國立臺灣大學 間接照明方法以及三維繪圖處理裝置
KR20180050124A (ko) * 2016-11-04 2018-05-14 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
KR20180069461A (ko) * 2016-12-15 2018-06-25 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10740952B2 (en) * 2018-08-10 2020-08-11 Nvidia Corporation Method for handling of out-of-order opaque and alpha ray/primitive intersections
US20200211259A1 (en) 2018-12-28 2020-07-02 Intel Corporation Apparatus and method for acceleration data structure refit
GB2612147A (en) * 2022-01-12 2023-04-26 Imagination Tech Ltd Building an acceleration structure for use in ray tracing
US20240144581A1 (en) * 2022-10-28 2024-05-02 Advanced Micro Devices, Inc. Variable bit morton codes

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570578B1 (en) * 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6583787B1 (en) * 2000-02-28 2003-06-24 Mitsubishi Electric Research Laboratories, Inc. Rendering pipeline for surface elements
JP4947394B2 (ja) * 2006-08-15 2012-06-06 メンタル イメージズ ゲーエムベーハー 準モンテカルロ法を使用するマルコフ連鎖の同時シミュレーション
US7830379B2 (en) * 2006-09-19 2010-11-09 Caustic Graphics, Inc. Architectures for parallelized intersection testing and shading for ray-tracing rendering
CN102037497B (zh) * 2008-03-21 2014-06-11 柯斯提克绘图公司 用于光线追踪渲染的并行相交测试及着色的架构
US8749552B2 (en) * 2008-10-17 2014-06-10 Imagination Technologies Limited Synthetic acceleration shapes for use in ray tracing
US9483864B2 (en) * 2008-12-05 2016-11-01 International Business Machines Corporation System and method for photorealistic imaging using ambient occlusion
US8669977B2 (en) * 2009-10-01 2014-03-11 Intel Corporation Hierarchical mesh quantization that facilitates efficient ray tracing
EP2494518A4 (en) * 2009-10-30 2016-08-10 Intel Corp GRAPHIC DISPLAY WITH A HIERARCHICAL ACCELERATION STRUCTURE
CN101819684B (zh) * 2010-04-12 2012-06-20 长春理工大学 一种动画电影虚拟三维场景的空间加速结构及其创建与更新方法
CN101819675B (zh) * 2010-04-19 2011-08-10 浙江大学 一种基于gpu的层次包围盒的快速构造方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170048003A (ko) * 2015-10-26 2017-05-08 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
KR20170064977A (ko) * 2015-12-02 2017-06-12 삼성전자주식회사 Bvh 트리를 구성하기 위한 방법 및 시스템

Also Published As

Publication number Publication date
GB201212642D0 (en) 2012-08-29
JP2013037691A (ja) 2013-02-21
DE102012213292A8 (de) 2013-04-18
GB2493425A (en) 2013-02-06
US20130033507A1 (en) 2013-02-07
DE102012213292A1 (de) 2013-02-07
CN103106681A (zh) 2013-05-15

Similar Documents

Publication Publication Date Title
KR20130016120A (ko) 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체
Garanzha et al. Simpler and faster HLBVH with work queues
US8072460B2 (en) System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
Bédorf et al. A sparse octree gravitational N-body code that runs entirely on the GPU processor
Benthin Realtime ray tracing on current CPU architectures
Karras Maximizing parallelism in the construction of BVHs, octrees, and k-d trees
Martinez-Rubi et al. Taming the beast: Free and open-source massive point cloud web visualization
TW201403542A (zh) 圖形處理單元中3d加速結構之完全並列原地建構
Prasad et al. GPU-based Parallel R-tree Construction and Querying
CN104050706A (zh) 用于低功率图形渲染的像素着色器旁路
CN111186139B (zh) 一种3d打印模型的多层次并行切片方法
Liu et al. Exact and adaptive signed distance fieldscomputation for rigid and deformablemodels on gpus
Zellmann et al. A linear time BVH construction algorithm for sparse volumes
CN102426710A (zh) 图形处理器上的表面积启发式构建kd树并行方法
Kang et al. gkDtree: A group-based parallel update kd-tree for interactive ray tracing
Martin et al. Load-Balanced Isosurfacing on Multi-GPU Clusters.
Feng et al. Scalable 3D hybrid parallel Delaunay image-to-mesh conversion algorithm for distributed shared memory architectures
Pätzold et al. Grid-free out-of-core voxelization to sparse voxel octrees on GPU
Andrysco et al. Implicit and dynamic trees for high performance rendering
Sopin et al. Real-time SAH BVH construction for ray tracing dynamic scenes
Frolov et al. Multiple reference octrees for a GPU photon mapping and irradiance caching
CN106570934A (zh) 针对大场景的空间隐函数建模方法
Schmidtke et al. Chunked bounding volume hierarchies for fast digital prototyping using volumetric meshes
Preto et al. Object identification in binary tomographic images using gpgpus
Binyahib Scientific visualization on supercomputers: A survey

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application