KR20100042052A - 영상처리를 위한 데이터 처리 장치 및 방법 - Google Patents

영상처리를 위한 데이터 처리 장치 및 방법 Download PDF

Info

Publication number
KR20100042052A
KR20100042052A KR1020080101171A KR20080101171A KR20100042052A KR 20100042052 A KR20100042052 A KR 20100042052A KR 1020080101171 A KR1020080101171 A KR 1020080101171A KR 20080101171 A KR20080101171 A KR 20080101171A KR 20100042052 A KR20100042052 A KR 20100042052A
Authority
KR
South Korea
Prior art keywords
node
ray
packets
data processing
child nodes
Prior art date
Application number
KR1020080101171A
Other languages
English (en)
Other versions
KR101610194B1 (ko
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 삼성전자주식회사
Priority to KR1020080101171A priority Critical patent/KR101610194B1/ko
Priority to US12/382,750 priority patent/US8253738B2/en
Priority to EP09163369.3A priority patent/EP2178050B1/en
Priority to JP2009160930A priority patent/JP5572340B2/ja
Publication of KR20100042052A publication Critical patent/KR20100042052A/ko
Application granted granted Critical
Publication of KR101610194B1 publication Critical patent/KR101610194B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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/52Parallel processing

Landscapes

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

Abstract

복수 개의 레이에 대한 충돌 체크를 수행하는 데이터 처리 장치가 제공된다. 제어부는 공간 데이터 구조 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성한다. 그리고 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함한다. 그리고 처리부는 상기 복수 개의 패킷을 순차적으로 제공받아, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한다.
3D 렌더링, 레이 트레이싱, 3D Rendering, Ray Tracing, SIMD, stream packet.

Description

영상처리를 위한 데이터 처리 장치 및 방법{Data Processing Apparatus and Method for Image Processing}
본 발명에 따른 실시예들은 3D 렌더링(Rendering) 중, Ray Tracing 등에서 사용되는 충돌 체크(Collision Check)를 위해 데이터를 처리하는 방법 및 장치에 관한 것이다.
레이 트레이싱(Ray Tracing)을 가속하는 알고리즘으로 최근 하드웨어의 SIMD(Single Instruction Multiple Data) 특성을 활용하려는 연구가 가장 활발하다. 레이 트레이싱의 연산 복잡도는 레이 수와 geometry 수의 곱으로 이루어지는데, SIMD 연산을 통해 연산 속도를 향상시킬 수 있다.
현재 SIMD 대역폭은 128bit까지 개발되었고, 인텔, nVidia 등 여러 하드웨어 제조사들의 로드맵에 따르면, 2010년에는 512bit까지 확대될 예정이다.
이러한 하드웨어의 발전과 함께, 레이 트레이싱에서 높은 coherency를 갖는 레이들, 즉 출발지점, 목표지점과 진행방향이 비슷한 레이들에 대한 충돌 체크를 한꺼번에 수행하는 연구의 중요성도 높아지고 있다.
그런데 기존의 SIMD 가속 알고리즘들은 primary ray들만을 고려하고 있다. 레이 트레이싱에서 primary ray는 높은 coherency를 보이나, 연산의 대부분을 차지하는 secondary ray부터는 급격하게 coherency가 떨어지는 특성을 지니고 있다.
그리고 레이 트레이싱은, CPU의 특성인 branching/recursion에 적합한 알고리즘인데, 높은 FLOP 성능을 보이는 GPU, Cell 등의 프로세서는 기본적으로 streaming 방식을 이용하므로, 이러한 점을 레이 트레이싱에서 고려할 필요가 있다.
본 발명의 일부 실시예들은, primary ray 뿐만 아니라, secondary ray를 포함하는 SIMD 가속 방법 및 연산 장치를 제공하기 위한 것이다.
본 발명의 다른 실시예들은, SIMD bit 수가 늘어남에 따라, 비례한 성능 향상을 가져올 수 있도록, 레이의 coherent 정도에 거의 영향을 받지 않는 SIMD 연산을 위한 데이터 처리 방법 및 장치를 제공하기 위한 것이다.
본 발명의 일 실시예에 따르면, 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 장치에 있어서, 공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하는 제어부 -상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -, 및 상기 복수 개의 패킷을 순차적으로 제공받아, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 처리부(Processor)를 포함한 데이터 처리 장치가 제공된다.
상기 처리부는, SIMD(Single instruction multiple data) 방식의 프로세서일 수 있다.
본 발명의 일 실시예에서는, 상기 데이터 처리 장치는, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되 는지 결정되는 경우, 넓이 우선 탐색(Breadth-first search) 방법에 따라, 상기 제1 노드와 공간 데이터 구조 내에서의 깊이(depth)가 동일한 제2 노드와 연관된 복수 개의 레이 각각이 상기 제2 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한다.
그러나 본 발명의 다른 실시예에서는, 상기 데이터 처리 장치는, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정되는 경우, 깊이 우선 탐색(Depth-first search) 방법에 따라, 상기 제1 노드의 제1 차일드 노드와 연관된 복수 개의 레이 각각이 상기 제1 차일드 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한다.
한편, 상기 공간 데이터 구조는 kd-tree 또는 BVH일 수 있고, 이 경우 상기 제1 노드의 차일드 노드는 2개이다.
본 발명의 일 실시예에 따르면, 상기 처리부(processor)는 128bit 프로세서이고, 상기 k는 4이다.
본 발명의 또 다른 일 실시예에 따르면, 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 장치에 있어서, 공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하는 제어부 - 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -, 상기 제어부로부터 제공되는 상기 복수 개의 패킷을 임시로 저장하는 제1 버퍼 메모리, 및 상기 제1 버퍼 메모리로부터 상기 복수 개의 패킷을 순차적으로 수신하여, 상기 제1 노드와 연관된 복수 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 처리부를 포함하는 데이터 처리 장치가 제공된다.
한편 상기 데이터 처리 장치는, 상기 제1 노드와 연관된 복수 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지에 관한 정보를 포함한 레이 데이터를 저장하는 제2 버퍼 메모리를 더 포함할 수 있다.
본 발명의 일 실시예에 따르면, 상기 처리부는, 상기 제1 버퍼로부터 상기 복수 개의 패킷을 순차적으로 제공받아, 매 연산 마다 상기 제1 노드와 연관된 복수 개의 레이 중 k 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 SIMD 방식의 연산을 수행한다.
본 발명의 또 다른 일 실시예에 따르면, 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 방법에 있어서, 공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하는 단계 - 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -, 및 상기 복수 개의 패킷을 처리부(Processor)에 제공해서, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 단계를 포함하는 데이터 처리 방법이 제공된다.
본 발명의 일 실시예에 따르면, 상기 데이터 처리 방법은, 상기 공간 데이터 구조상의 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한 후에, 넓이 우선 탐색(Breadth-first search) 방법에 따라, 상기 제1 노드와 공간 데이터 구조 내에서의 깊이(depth)가 동일한 제2 노드와 연관된 복수 개의 레이 각각이 상기 제2 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한다.
한편, 상기 데이터 처리 방법은, 상기 공간 데이터 구조상의 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한 후에, 깊이 우선 탐색(Depth-first search) 방법에 따라, 상기 제1 노드의 제1 차일드 노드와 연관된 복수 개의 레이 각각이 상기 제1 차일드 노드의 차일드 노드 중 어느 노드와 연관되는지 결정할 수도 있다.
본 발명의 또 다른 일 실시예에 따르면, 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 방법에 있어서, 공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하여 제1 버퍼 메모리에 저장하는 단계 - 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -, 상기 제1 노드와 연관된 복수 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하기 위해, 상기 제1 버퍼로부터 상기 복수 개의 패킷을 순차적으로 독출하여 SIMD 방식의 처리부(Processor)에 제공하는 단계, 및 상기 SIMD 방식의 처리부에 의해 추가되는 정보를 포함한 복수 개의 레이 데이터를 제2 버퍼 메모리에 저장하는 단계를 포함한 데이터 처리 방법이 제공된다.
본 발명에 따른 일부 실시예들에 따르면, Ray Tracing에 있어서, SIMD 가속 성능이 개선된다.
본 발명의 다른 실시예들에 따르면, 레이 트레이싱에서 레이의 coherent 정도에 거의 영향을 받지 않으면서 SIMD 연산이 가능하므로, SIMD bit 수가 늘어남에 따라, 비례한 성능 향상이 가능하다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 장치를 도시하는 블록도이다.
데이터 처리 장치(100)의 제어부(110)는 입력되는 복수 개의 레이에 대해 복수 개의 패킷을 생성한다. 상기 복수 개의 레이는 앞선 과정에서 동일한 노드들에 연관되었던 복수 개의 레이이다.
그리고 상기 각 패킷은 k 개(단, k는 자연수)의 레이(Ray)를 포함한다. 상기 k는 처리부(130)가 병렬적으로, 한 번에 처리할 수 있는 데이터의 수이다.
본 발명의 일 실시예에 따르면, 데이터 처리 장치(100)는 제1 버퍼 메모리(120)를 포함한다. 상기 제1 버퍼 메모리(120)은, 상기 복수 개의 패킷을 저장한다. 그리고, 상기 복수 개의 패킷은 상기 제어부(110)에 의해 순차적으로 처리부(130)으로 제공된다.
레이 트레이싱 과정에서, 어느 레이가 3D 모델 내의 어느 지오메트 리(geometry)와 충돌하는 지 결정하기 위해, 상기 3D 모델과 연관된 공간 데이터 구조(spatial data structure)에서 tree traversal(트리 탐색)을 수행한다.
본 발명의 일 실시예에 따르면, 상기 처리부(130)은 SIMD(Single Instruction Multiple Data) 방식의 프로세서이다. 따라서 k 개의 레이 데이터(즉, 하나의 패킷)에 대해 자손 노드를 결정할 수 있다.
본 발명의 일 실시예에 따르면, 자손 노드가 결정된 상기 복수 개의 레이는 제2 버퍼 메모리(140)에 저장된다. 한편, 제2 버퍼 메모리 내에서 상기 복수 개의 레이는 자손 노드가 동일한 것끼리 분리되어 저장될 수 있다.
본 발명의 또 다른 실시예에 따르면, 상기 제2 버퍼 메모리는 2 개 이상의 메모리 구조를 포함하고, 자손 노드가 결정된 상기 복수 개의 레이는, 자손 노드가 같은 것끼리 동일한 메모리 구조에 저장된다.
도 2는 본 발명의 일 실시예에 따라 충돌 체크를 하는 모습을 도시한다.
3D 모델(200)이 레이 트레이싱 방법에 의해 렌더링 된다. 상기 3D 모델(200)은 메쉬 기반(mesh-based 3D) 모델일 수도 있고, 포인트 기반(point-based 3D) 모델일 수도 있다.
레이 Ri(210)에 대해 충돌 체크가 수행된다. 레이 트레이싱에서 충돌 체크(Collision check)는, 특정 레이가 3D 모델의 오브젝트(object) 공간(200) 내에서, 어디에 충돌할지 결정하는 것이다. 또한, 상기 충돌 체크에 의해, 충돌하는 지점에서 반사(Reflection)의 정도, 투과(Transmission)의 정도, 및 광원의 직접 반사(Direct illumination)의 정도도 결정된다.
본 발명의 일 실시예에 따른 데이터 처리 장치 및 방법은, 특정 레이, 이를테면 레이 Ri(210)가 3D 모델과 충돌하는 지오메트리(geometry)(220)를 결정하도록 한다. 상기 지오메트리(220)는, 상기 3D 모델을 구성하는 단위 구조(unit structure)이며, 메쉬 기반(mesh-based 3D) 모델에서는 다각형(이를 테면 삼각형)이고, 포인트 기반(point-based 3D) 모델에서는 포인트이다.
도 3은 본 발명의 일 실시예에 따라 도 2의 3D 모델과 연관되는 공간 데이터 구조의 모습을 도시한다.
3D 모델(200) 내에서, 도 2의 레이 Ri(210)가 어느 부분과 충돌할 지 결정하기 위해 상기 3D 모델(200)을 2분할 하면서, 상기 레이 Ri(210)가 분할된 부분 중 어느 부분에 연관되는지 판단하는 과정을 반복한다.
본 발명의 일 실시예에 따르면, 공간 데이터 구조(Spatial data structure)(300)는 kd-tree이다.
한편 본 발명의 다른 실시예에서는, 상기 공간 데이터 구조는 BVH(Bounding Volume Hierarchies)이다. 상기 BVH 에서는, 상기 3D 모델을 부피에 따라 2 분할 하는데, 바운딩 박스로 구획된다. 그러나 kd-tree와 BVH가 생성하는 공간 데이터 구조는 모두 트리 구조(300)과 같은 형태로 표현될 수 있다.
이하에서는 상기 공간 데이터 구조가 kd-tree인 실시예만을 설명한다. 그러나 상기 공간 데이터 구조의 실시예는 kd-tree뿐만 아니라 상기 BVH도 가능하다. 따라서, 본 발명은 특정한 공간 데이터 구조에 관한 것으로 한정되지 않으며, 본 발명의 사상을 유지하면서 다양한 변형이 가능하다.
상기 kd-tree를 생성하기 위해, 상기 3D 모델(200)을 객체(object)의 지오메트리(geometry) 수에 따라 2분할 한다.
경계(boundary)(310)을 기준으로 L(Left) 부분과 R(Right) 부분으로 2 분할 한다. 발명의 일 실시예에 따르면, 분할된 L 부분 내에 포함되는 지오메트리의 수와 분할된 R 부분 내에 포함되는 지오메트리의 수는 동일하다. 그러나, 다른 실시예에서는 3D 모델(200) 내의 공간 부피(spatial volume)이 동일하도록 분할(이 경우는 생성되는 공간 트리 구조가 unbalanced할 수 있다)하는 등 여러 가지 변형이 가능하다.
그리고, 경계(310)에 의해 분할된 L 부분과, 경계(310)에 의해 분할된 R 부분 역시 각각 2분할 된다. 상기 L 부분은 경계(320)에 의해 분할되고, 상기 R 부분은 경계(330)을 통해 분할된다. 이로써 3D 모델(200)이 4분할 되었다.
마찬가지로 분할된 부분들 각각을 다시 2분할 해서, 상기 3D 모델(200)이 총 8분할 되었다.
공간 데이터 구조(300)의 노드(301)은 3D 모델(200) 전체와 연관된다. 그리고 경계(310)에 3D 모델(200)을 2 분할하여 생성된 L 부분은 노드(311)와 연관된다. 또한 경계(310)에 의해 3D 모델(200)을 2분할하여 생성된 R 부분은 노드(312)와 연관된다.
도 2의 레이 Ri(210)는 경계(310)을 기준으로 왼쪽인, L 부분과 충돌하기 때문에, 노드(311)와 연관된다.
그리고, 경계(310)에 3D 모델(200)을 2 분할하여 생성된 L 부분은, 경 계(320)을 기준으로, 다시 2 분할 되어 각각 노드(321)와 노드(322)와 연관된다. 마찬가지로 경계(310)에 3D 모델(200)을 2 분할하여 생성된 R 부분도, 경계(330)을 기준으로, 다시 2 분할 되어 각각 노드(331)와 노드(332)에 연관된다.
상기 레이 Ri(210)는 경계(320)을 기준으로 R 부분에 충돌하기 때문에, 노드(322)와 연관된다.
마찬가지로, 4 분할 된 부분들 각각이, 경계(340), 경계(350), 경계(360) 및 경계(370)에 의해 2 분할되어, 상기 3D 모델(200)은 총 8 분할 되며, 이는 각각 노드(341), 노드(342), 노드(351), 노드(352), 노드(361), 노드(362), 노드(371), 및 노드(372)에 연관된다.
상기 레이 Ri(210)는 경계(350)을 기준으로 L 부분에 충돌하기 때문에, 노드(351)와 연관된다.
도 4는 본 발명의 다른 실시예에 따라, 복수 개의 레이에 대해 복수 개의 패킷을 생성하고, 데이터 처리 방법을 수행하는 과정을 도시한다.
공간 데이터 구조(401)은 도 3을 참고하여 설명한 과정에 따라, 3D 공간을 2 분할하면서 생성되었다.
노드(410)에 연관되는 3D 공간을 2 분할 한 경우, 왼쪽 부분(L)은 상기 노드(410)의 자손 노드(child node)인 노드(421)에 대응하고, 오른쪽 부분(R)은 상기 노드(410)의 자손 노드인 노드(422)에 대응한다.
본 발명의 일 실시예에 따라 처리되는 데이터인, 레이 R1 내지 R12는 현재 노드(452)에 연관되어 있다. 상기 레이 R1 내지 레이 R12는 모두, 노드(410)의 자 손 노드(child node)인 노드(421)와 노드(422) 중 노드(421)에 연관되었다. 그리고, 상기 노드(421)의 자손 노드 중에서는 노드(432)와 연관되었다. 또한 상기 노드(432)의 자손 노드 중에서는 노드(452)와 연관되었다.
즉, 레이 R1 내지 R12는 상기 공간 데이터 구조(401)의 depth 1에서는 L에, depth 2에서는 R에, 그리고 depth 3에서는 R에 연관된다.
본 발명의 일 실시예에 따른 데이터 처리 장치는, depth 4에서 레이 R1 내지 R12가 노드(452)의 자손 노드 중 노드(461)에 연관되는지, 노드(462)에 연관되는지를 결정한다.
본 발명의 일 실시예에 따르면, 도 1의 제어부(110)에 의해, 레이 R1 내지 R12는 3 개의 패킷으로 그룹핑된다. 예를 들어, R1 내지 R4가 하나의 패킷, R5 내지 R8이 다른 하나의 패킷, 그리고 R9 내지 R12가 또 다른 하나의 패킷으로 생성된다.
그리고, 상기 패킷들이 순차적으로 처리부(130)에 제공되고, 상기 처리부(130)는 한 번에 4 개의 레이에 대해, L인지 R인지 판단한다.
표(400)의 depth 4 행(raw)은, 본 발명의 일 실시예에 따른 데이터 처리 장치에 의해, 노드(452)와 연관된 상기 레이(R1 내지 R12) 각각이 노드(461)와 노드(462) 중 어느 노드에 연관되는지 판단한 결과를 도시한다.
표(400)의 depth 4에서 "L"로 표기된 R1, R2, R5, R7, R9, R10, R11, 및 R12는 노드(461)에 연관된다. 그리고, "R"로 표기된 R3, R4, R6, 및 R8은 노드(462)에 연관된다.
한편, 본 발명의 일 실시예에 따르면, 상기 충돌 체크는, 넓이 우선 탐색(breadth first search) 방식에 의해 수행된다. 예를 들어, 노드(410)에 연관되는 복수 개의 레이에 대해 본 발명의 데이터 처리 방법을 적용하여, 일부는 노드(421)에, 나머지는 노드(422)에 연관된다. 그리고 노드(421)에 연관되는 상기 일부 레이에 대해 본 발명의 데이터 처리 방법을 적용하고, 노드(422)에 연관되는 상기 나머지 레이에 대해 본 발명의 데이터 처리 방법을 적용한다. 그 다음은, 노드(431), 노드(432), 노드(441), 및 노드(442)에 대해 본 발명의 데이터 처리 방법을 적용한다. 즉, tree depth가 동일한 노드에 대해 본 발명의 데이터 처리 방법을 적용한 후, 그 다음 tree depth의 노드에 대해 본 발명의 데이터 처리 방법을 적용한다.
그러나, 본 발명의 다른 실시예에 따르면, 상기 충돌 체크는, 깊이 우선 탐색(depth first search) 방식에 의해 수행된다. 상기 예에서, 노드(410)에 대해 본 발명의 데이터 처리 방법을 적용한 후, 노드(421)에 대해, 적용하고, 그 다음은 노드(431)에 대해 적용하는 방식이다. 즉, 리프 노드(leaf node)를 만날 때까지는, 자손 노드(child node) 방향으로만 본 발명의 데이터 처리 방법을 적용하는 것이다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 장치 내에서, 복수 개의 패킷이 처리부에서 처리되는 모습을 도시한다.
본 발명의 일 실시예에 따르면, 제1 버퍼 메모리(510) 내에 3 개의 패킷이 저장되어 있다. 상기 3 개의 패킷은 도 1의 제어부(110)이 입력되는 복수 개의 레 이(이를 테면, R1 내지 R12)를 4 개씩 그룹핑하여 생성된 것이다.
상기 제1 버퍼 메모리(510)에 저장된 패킷들은 현 단계에서 같은 노드(이를 테면, 도 4의 노드(452))에 연관되어 있다. 따라서 현재까지의 tree traversal 과정이 모두 동일하다. 앞서 예를 든 노드(452)에 연관되었다고 하면, R1 내지 R12는 지금까지의 tree traversal 과정이 (LRR)이다. 따라서, 제어부(110)이 현 단계에서 입력된 레이 데이터(R1 내지 R12)를 임의로 4개씩 그룹핑 하여, 3개의 패킷을 생성한다.
물론 도 5에서 도시된 패킷의 형태, 한 패킷 당 레이의 개수는 변경될 수 있으며, 본 발명은 특정한 실시예에 한정되지 않는다. 상기한 바와 같이, 처리부(520)가 몇 개의 데이터를 한 번에 처리할 수 있는지의 하드웨어적 특성에 따라, 한 패킷 당 레이의 수 k개(단, k는 자연수)는 변경될 수 있다.
본 발명의 일 실시예에서는 처리부(520)가 128 bit 프로세서이고, 4 wide 특성(한 번에 4개의 데이터를 병렬 처리)을 가지므로, 4 개의 데이터에 동일한 instruction을 처리할 수 있다.
상기 처리부(520)가 상기 패킷 들에 대해 자손 노드(노드(462) 또는 노드(463))를 결정하는 경우, 상기 레이 R1 내지 R12는 제2 버퍼 메모리(530)에 저장된다.
본 발명의 다른 일 실시예에 따르면, "LRRL" 특성을 갖는 R1, R2, R5, R7, R9, R10, R11, 및 R12는, "LRRR" 특성을 갖는 R3, R4, R6, 및 R8과 서로 다른 메모리에 저장될 수 있다.
도 6은 본 발명의 일 실시예에 따른 데이터 처리 방법을 도시하는 흐름도이다.
단계(S610)에서 복수 개의 레이가 입력된다. 상기 복수 개의 레이는 현재 동일한 노드에 연관된 레이로서, 지금까지의 tree traversal 과정은 동일한 레이이다. 예를 들면, 도 4의 레이 R1 내지 R12이다.
단계(S620)에서 상기 복수 개의 레이를 복수 개의 패킷으로 그룹핑 한다. 이 경우, 하나의 패킷은 k 개(단, k는 자연수)의 레이로 구성된다. 상기 k는 프로세서(Processor)의 하드웨어적 특성에 의해 결정될 수 있는데, 이를테면, SIMD 방식의 프로세서 중, 128 bit 프로세서(4 wide 특성)에서는 상기 k는 4로 결정된다.
본 발명의 일 실시예에 따르면, 생성된 상기 복수 개의 패킷은 제1 버퍼 메모리에 저장된다.
단계(S630)에서 상기 복수 개의 패킷이 순차적으로 상기 프로세서(Processor)로 제공되고, 상기 프로세서는 상기 각 패킷에 포함된 k 개의 레이에 대해 자손 노드(child node)를 결정한다.
본 발명의 일 실시예에 따르면, 단계(S630) 에서 자손 노드가 결정되면, 상기 복수 개의 레이는, 각자 자손 노드에 연관된 메모리에 저장된다. 그리고, 그 다음 과정에서 상기 자손 노드에서 상기 단계(S610) 내지 단계(630)이 반복된다.
본 발명에 따른 영상 처리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단 독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 장치를 도시하는 블록도이다.
도 2는 본 발명의 일 실시예에 따라 충돌 체크를 하는 모습을 도시한다.
도 3은 본 발명의 일 실시예에 따라 도 2의 3D 모델과 연관되는 공간 데이터 구조의 모습을 도시한다.
도 4는 본 발명의 일 실시예에 따라, 복수 개의 레이에 대해 복수 개의 패킷을 생성하고, 데이터 처리 방법을 수행하는 과정을 도시한다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 장치 내에서, 복수 개의 패킷이 처리부에서 처리되는 모습을 도시한다.
도 6은 본 발명의 일 실시예에 따른 데이터 처리 방법을 도시하는 흐름도이다.

Claims (20)

  1. 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 장치에 있어서,
    공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하는 제어부 -상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -; 및
    상기 복수 개의 패킷을 순차적으로 제공받아, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 처리부(Processor)
    를 포함한 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 처리부는, SIMD(Single instruction multiple data) 방식의 프로세서인 것을 특징으로 하는 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 데이터 처리 장치는, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정되는 경우, 넓이 우선 탐색(Breadth-first search) 방법에 따라, 상기 제1 노드와 공간 데이터 구조 내에서의 깊이(depth)가 동일한 제2 노드와 연관된 복수 개의 레이 각각이 상기 제2 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 것을 특징으로 하는 데이터 처리 장치.
  4. 제1항에 있어서,
    상기 데이터 처리 장치는, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정되는 경우, 깊이 우선 탐색(Depth-first search) 방법에 따라, 상기 제1 노드의 제1 차일드 노드와 연관된 복수 개의 레이 각각이 상기 제1 차일드 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 것을 특징으로 하는 데이터 처리 장치.
  5. 제1항에 있어서,
    상기 공간 데이터 구조는 kd-tree이고, 상기 제1 노드의 차일드 노드는 2개인 것을 특징으로 하는 데이터 처리 장치.
  6. 제1항에 있어서,
    상기 공간 데이터 구조는 BVH이고, 상기 제1 노드의 차일드 노드는 2개인 것을 특징으로 하는 데이터 처리 장치.
  7. 제1항에 있어서,
    상기 처리부(processor)는 128bit 프로세서이고, 상기 k는 4인 것을 특징으로 하는 데이터 처리 방법.
  8. 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 장치에 있어서,
    공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하는 제어부 - 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -;
    상기 제어부로부터 제공되는 상기 복수 개의 패킷을 임시로 저장하는 제1 버퍼 메모리; 및
    상기 제1 버퍼 메모리로부터 상기 복수 개의 패킷을 순차적으로 수신하여, 상기 제1 노드와 연관된 복수 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 처리부
    를 포함하는 데이터 처리 장치.
  9. 제8항에 있어서,
    상기 제1 노드와 연관된 복수 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지에 관한 정보를 포함한 레이 데이터를 저장하는 제2 버퍼 메모리를 더 포함하는 데이터 처리 장치.
  10. 제8항에 있어서,
    상기 처리부는, 상기 제1 버퍼로부터 상기 복수 개의 패킷을 순차적으로 제공받아, 매 연산 마다 상기 제1 노드와 연관된 복수 개의 레이 중 k 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 SIMD 방식의 연산을 수행하는 것을 특징으로 하는 데이터 처리 장치.
  11. 제8항에 있어서,
    상기 공간 데이터 구조는 kd-tree 또는 BVH 중 하나인 것을 특징으로 하는 데이터 처리 장치.
  12. 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 방법에 있어서,
    공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하는 단계 - 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -; 및
    상기 복수 개의 패킷을 처리부(Processor)에 제공해서, 상기 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 단계
    를 포함하는 데이터 처리 방법.
  13. 제12항에 있어서,
    상기 처리부는 SIMD(Single instruction multiple data) 방식의 연산을 수행하는 것을 특징으로 하는 데이터 처리 방법.
  14. 제12항에 있어서,
    상기 데이터 처리 방법은, 상기 공간 데이터 구조상의 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한 후에, 넓이 우선 탐색(Breadth-first search) 방법에 따라, 상기 제1 노드와 공간 데이터 구조 내에서의 깊이(depth)가 동일한 제2 노드와 연관된 복수 개의 레이 각각이 상기 제2 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 것을 특징으로 하는 데이터 처리 방법.
  15. 제12항에 있어서,
    상기 데이터 처리 방법은, 상기 공간 데이터 구조상의 제1 노드와 연관된 복수 개의 레이 각각이 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정한 후에, 깊이 우선 탐색(Depth-first search) 방법에 따라, 상기 제1 노드의 제1 차일드 노드와 연관된 복수 개의 레이 각각이 상기 제1 차일드 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하는 것을 특징으로 하는 데이터 처리 방법.
  16. 제12항에 있어서,
    상기 공간 데이터 구조는 kd-tree이고, 상기 제1 노드의 차일드 노드는 2개인 것을 특징으로 하는 데이터 처리 방법.
  17. 제12항에 있어서,
    상기 공간 데이터 구조는 BVH이고, 상기 제1 노드의 차일드 노드는 2개인 것을 특징으로 하는 데이터 처리 방법.
  18. 제12항에 있어서,
    상기 처리부(processor)는 128bit 프로세서이고, 상기 k는 4인 것을 특징으로 하는 데이터 처리 방법.
  19. 복수 개의 레이에 대한 충돌 체크(Collision check)를 수행하는 데이터 처리 방법에 있어서,
    공간 데이터 구조(Spatial data structure) 내의 제1 노드와 연관된 복수 개의 레이에 대해 복수 개의 패킷을 생성하여 제1 버퍼 메모리에 저장하는 단계 - 상기 복수 개의 패킷 중 적어도 하나는 k 개(단, k는 자연수)의 레이에 관한 정보를 포함함 -;
    상기 제1 노드와 연관된 복수 개의 레이가 상기 제1 노드의 차일드 노드 중 어느 노드와 연관되는지 결정하기 위해, 상기 제1 버퍼로부터 상기 복수 개의 패킷을 순차적으로 독출하여 SIMD 방식의 처리부(Processor)에 제공하는 단계; 및
    상기 SIMD 방식의 처리부에 의해 추가되는 정보를 포함한 복수 개의 레이 데이터를 제2 버퍼 메모리에 저장하는 단계
    를 포함한 데이터 처리 방법.
  20. 제12항 내지 제 18항 중 어느 한 항에 있어서,
    상기 데이터 처리 방법을 구현하는 프로그램을 수록하는 컴퓨터로 판독 가능한 기록 매체.
KR1020080101171A 2008-10-15 2008-10-15 영상처리를 위한 데이터 처리 장치 및 방법 KR101610194B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020080101171A KR101610194B1 (ko) 2008-10-15 2008-10-15 영상처리를 위한 데이터 처리 장치 및 방법
US12/382,750 US8253738B2 (en) 2008-10-15 2009-03-23 Data processing apparatus and method
EP09163369.3A EP2178050B1 (en) 2008-10-15 2009-06-22 Data processing apparatus and method
JP2009160930A JP5572340B2 (ja) 2008-10-15 2009-07-07 データ処理装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080101171A KR101610194B1 (ko) 2008-10-15 2008-10-15 영상처리를 위한 데이터 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20100042052A true KR20100042052A (ko) 2010-04-23
KR101610194B1 KR101610194B1 (ko) 2016-04-07

Family

ID=41590993

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080101171A KR101610194B1 (ko) 2008-10-15 2008-10-15 영상처리를 위한 데이터 처리 장치 및 방법

Country Status (4)

Country Link
US (1) US8253738B2 (ko)
EP (1) EP2178050B1 (ko)
JP (1) JP5572340B2 (ko)
KR (1) KR101610194B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110124834A (ko) * 2010-05-12 2011-11-18 삼성전자주식회사 하드웨어를 이용한 케이디 트리 생성 방법 및 장치
US9342919B2 (en) 2010-09-30 2016-05-17 Samsung Electronics Co., Ltd. Image rendering apparatus and method for preventing pipeline stall using a buffer memory unit and a processor
US9355491B2 (en) 2010-08-26 2016-05-31 Samsung Electronics Co., Ltd. Ray tracing apparatus and method

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9965821B2 (en) * 2012-03-09 2018-05-08 Nvidia Corporation Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit
KR20140033256A (ko) 2012-07-11 2014-03-18 삼성전자주식회사 전송 스트림 패킷 생성 장치 및 그것의 ts 패킷 생성 방법
KR20160071774A (ko) * 2014-12-12 2016-06-22 삼성전자주식회사 영상 처리를 위한 영상 처리 장치, 방법 및 기록 매체
CN107609217B (zh) * 2017-08-09 2020-05-12 中建钢构有限公司 碰撞校核数据的处理方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528280A (ja) * 1991-07-22 1993-02-05 Nippon Telegr & Teleph Corp <Ntt> 光線追跡方法
JP3513562B2 (ja) * 2000-04-20 2004-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 形状解析システム、3次元形状モデルの差分検出システム、類似形状検索システム、形状解析方法及び記憶媒体
US7952583B2 (en) * 2000-06-19 2011-05-31 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
DE10239672B4 (de) * 2002-08-26 2005-08-11 Universität des Saarlandes Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur
JP2005218055A (ja) * 2004-02-02 2005-08-11 Toshiba Corp 画像処理装置、画像処理方法および画像処理プログラム
US20070132754A1 (en) * 2005-12-12 2007-06-14 Intel Corporation Method and apparatus for binary image classification and segmentation
JP4858795B2 (ja) * 2006-04-19 2012-01-18 メンタル イメージズ ゲーエムベーハー 瞬時光線追跡
KR100831553B1 (ko) 2006-08-24 2008-05-21 주식회사 케이티 쿼드 트리를 이용한 3차원 광선 추적 방법 및 해쉬테이블을 이용한 전파 특성 예측 방법
KR100894136B1 (ko) 2006-08-31 2009-04-20 세종대학교산학협력단 광선 추적을 위한 비 스택 방식의 케이디 트리 탐색알고리즘을 적용한 영상검출 장치 및 방법
KR100889602B1 (ko) 2006-12-05 2009-03-20 한국전자통신연구원 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치
KR100843292B1 (ko) 2006-12-15 2008-07-03 연세대학교 산학협력단 룩업 테이블을 이용한 레이 트레이싱 장치 및 방법
US8072460B2 (en) * 2007-10-17 2011-12-06 Nvidia Corporation System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
US8065288B1 (en) * 2007-11-09 2011-11-22 Nvidia Corporation System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110124834A (ko) * 2010-05-12 2011-11-18 삼성전자주식회사 하드웨어를 이용한 케이디 트리 생성 방법 및 장치
US9355491B2 (en) 2010-08-26 2016-05-31 Samsung Electronics Co., Ltd. Ray tracing apparatus and method
US9342919B2 (en) 2010-09-30 2016-05-17 Samsung Electronics Co., Ltd. Image rendering apparatus and method for preventing pipeline stall using a buffer memory unit and a processor

Also Published As

Publication number Publication date
EP2178050A2 (en) 2010-04-21
KR101610194B1 (ko) 2016-04-07
EP2178050A3 (en) 2016-08-17
US8253738B2 (en) 2012-08-28
US20100091019A1 (en) 2010-04-15
EP2178050B1 (en) 2020-03-18
JP2010097591A (ja) 2010-04-30
JP5572340B2 (ja) 2014-08-13

Similar Documents

Publication Publication Date Title
US9355491B2 (en) Ray tracing apparatus and method
EP3002732B1 (en) Method and apparatus for generating and traversing acceleration structure
TWI546770B (zh) 圖形處理單元中3d加速結構之完全並列原地建構
Ihmsen et al. A parallel SPH implementation on multi‐core CPUs
KR101610194B1 (ko) 영상처리를 위한 데이터 처리 장치 및 방법
Lauterbach et al. Fast BVH construction on GPUs
EP2927877B1 (en) Method and apparatus for rendering same regions of multi frames
KR102080851B1 (ko) 레이 추적의 스케쥴링을 위한 장치 및 방법
JP4778561B2 (ja) 2値に基づく画像の分類および分割のための方法、プログラム、およびシステム
US20170200303A1 (en) Rendering method and apparatus
Steinberger et al. Parallel generation of architecture on the GPU
Wang et al. GPU-based out-of-core many-lights rendering
US10460506B2 (en) Method and apparatus for generating acceleration structure
KR102651125B1 (ko) 경로 렌더링을 수행하는 방법 및 장치
CN104714784A (zh) 用于mic架构协处理器的光子映射并行方法
US9715758B2 (en) Image processing apparatus and method using virtual point light (VPL) information
EP2827302A2 (en) Image processing apparatus and method
US20170061673A1 (en) Method of generating and traversing acceleration structure
Gissler et al. Efficient Uniform Grids for Collision Handling in Medical Simulators.
Krajecki et al. BFS traversal on multi-GPU cluster
US20230351697A1 (en) Approximate hierarchical convex decomposition
US11861785B2 (en) Generation of tight world space bounding regions
Zhdanov et al. Using Multilevel Hash Tables to Speed up Rendering
Alghamdi Developing the parallelization techniques for finding the all-pairs shortest paths in graphs
Olivares et al. Complete Quadtree Based Construction of Bounding Volume Hierarchies for Ray Tracing.

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20150225

Effective date: 20151201

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190319

Year of fee payment: 4