KR20150042095A - 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법 - Google Patents

드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법 Download PDF

Info

Publication number
KR20150042095A
KR20150042095A KR20130120871A KR20130120871A KR20150042095A KR 20150042095 A KR20150042095 A KR 20150042095A KR 20130120871 A KR20130120871 A KR 20130120871A KR 20130120871 A KR20130120871 A KR 20130120871A KR 20150042095 A KR20150042095 A KR 20150042095A
Authority
KR
South Korea
Prior art keywords
draw commands
commands
current draw
processing order
current
Prior art date
Application number
KR20130120871A
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 삼성전자주식회사
Priority to KR20130120871A priority Critical patent/KR20150042095A/ko
Priority to US15/028,277 priority patent/US10297067B2/en
Priority to PCT/KR2014/009479 priority patent/WO2015053557A1/en
Publication of KR20150042095A publication Critical patent/KR20150042095A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery

Abstract

일 실시 예에 따른 렌더링 방법은 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하는 단계; 상기 결정된 드로우 커맨드들의 깊이 정보를 이용하여 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 단계; 및 상기 처리 순서에 따라 상기 현재 드로우 커맨드들에 대한 Z-테스트를 수행하고, 상기 Z-테스트의 결과에 기초하여 쉐이딩하는 단계를 포함한다.

Description

드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법{Apparatus and Method for rendering frame by sorting processing sequence of draw commands}
3차원 영상을 렌더링하는 장치 및 방법에 관한 것이다.
3D 그래픽스 API(Application Program Interface) 표준들로는 OpenGL, OpenGL ES 또는 Direct 3 등이 있다. API 표준들은 각 프레임에 대한 렌더링(rendering)을 수행하고, 영상을 표시하는 방법을 포함한다. 각 프레임에 대한 렌더링을 수행할 때, 많은 연산이 수행되며, 많은 전력이 소모된다. 따라서, 렌더링을 수행할 때, 연산량을 줄이고, 메모리에 접속(access)하는 횟수를 줄일 필요가 있다.
효율적인 Z-테스트를 수행하여 쉐이딩 과정에서 발생하는 연산량을 줄이기 위한 렌더링 방법 및 장치를 제공하는 데 있다.
또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 실시 예에 따른 렌더링 방법은 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하는 단계; 상기 결정된 드로우 커맨드들의 깊이 정보를 이용하여 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 단계; 및 상기 처리 순서에 따라 상기 현재 드로우 커맨드들에 대한 Z-테스트를 수행하고, 상기 Z-테스트의 결과에 기초하여 쉐이딩하는 단계를 포함한다.
또 다른 실시 예에 따른 렌더링 장치는 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하고, 상기 결정된 드로우 커맨드들의 깊이 정보를 이용하여 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 처리 순서 결정부; 상기 처리 순서에 따라 상기 현재 드로우 커맨드들에 대한 Z-테스트를 수행하는 Z-테스터; 및 상기 Z-테스트의 결과에 기초하여 쉐이딩하는 쉐이더를 포함한다.
이전 프레임으로부터 획득된 오브젝트 또는 프리미티브의 깊이 정보를 현재 프레임의 오브젝트 또는 프리미티브에 적용하여 드로우 커맨드들의 처리 순서를 재조정할 수 있다.
깊이가 얕은 오브젝트부터 순차적으로 Z-테스트 및 쉐이딩하여, 깊이가 깊은 오브젝트에 대한 쉐이딩 연산량을 줄일 수 있다.
드로우 커맨드의 동일성을 판단하여 프레임간 중복되는 오브젝트의 포함여부를 결정할 수 있다.
도 1은 3차원 영상을 처리하는 과정을 설명하기 위한 도면이다.
도 2는 오브젝트의 깊이에 따라 Z-테스트 및 쉐이딩하는 것을 설명하기 위한 도면이다.
도 3은 일 실시 예에 따른 렌더링 장치를 설명하기 위한 도면이다.
도 4는 일 실시 예에 따른 렌더링 장치를 설명하기 위한 도면이다.
도 5는 일 실시 예에 따른 렌더링 방법을 설명하기 위한 도면이다.
도 6은 일 실시 예에 따른 렌더링 장치를 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 흐름도이다.
도 8은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 순서도이다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 3차원 영상을 처리하는 과정을 설명하기 위한 도면이다. 도 1을 참조하면, 11 내지 17단계를 통해 3차원 영상을 처리하는 과정을 나타낸다.
11단계는 영상을 나타내는 정점(vertex)들을 생성하는 단계이다. 정점들은 영상에 포함된 오브젝트(object)들을 나타내기 위해 생성된다.
12단계는 생성된 정점들을 쉐이딩(shading)하는 단계이다. 정점 쉐이더(vertex shader)는 10단계에서 생성된 정점들의 색(color)를 지정하여, 정점들에 대한 쉐이딩을 수행할 수 있다.
13단계는 프리미티브들(primitives)을 생성하는 단계이다. 프리미티브는 점, 선 또는 정점들로부터 형성되는 다각형(polygon)을 나타낸다. 일 예로서, 프리미티브들은 정점들을 연결하여 형성된 삼각형들을 나타낼 수도 있다.
14단계는 프리미티브를 래스터화(rasterization)하는 단계이다. 프리미티브를 래스터화하는 것은 프리미티브를 복수의 프레그먼트들(fragments)로 분할하는 것을 나타낸다. 프레그먼트는 프리미티브를 구성하는 단위이며, 영상 처리를 수행하기 위한 기본 단위일 수 있다. 프리미티브는 정점에 대한 정보만을 포함한다. 따라서, 래스터화하는 단계에서 정점과 정점 사이의 프레그먼트들을 생성할 때 보간(interpolation)이 수행된다.
15단계는 픽셀을 쉐이딩하는 단계를 나타낸다. 도 1에서는 픽셀 단위로 쉐이딩이 수행되는 것을 도시하고 있으나, 프레그먼트 단위로 쉐이딩이 수행될 수도 있다. 예를 들어, 픽셀 또는 프레그먼트를 쉐이딩하는 것은 픽셀 또는 프레그먼트의 색을 지정하는 것이다.
16단계는 픽셀 또는 프레그먼트를 텍스쳐링(texturing)하는 단계는 나타낸다. 텍스쳐링은 픽셀 또는 프레그먼트의 색을 지정할 때, 미리 생성된 이미지를 이용하는 방법이다. 예를 들어, 쉐이딩은 프레그먼트에 어떤 색을 지정할지 계산을 통해서 수행하지만, 텍스쳐링은 미리 생성된 이미지와 대응되는 프레그먼트에 이미지의 색과 동일한 색을 지정하는 방법이다.
15 또는 16단계의 경우, 각각의 픽셀 또는 프레그먼트를 쉐이딩 또는 텍스쳐링하기 위하여 많은 연산이 요구된다. 따라서, 쉐이딩 또는 텍스쳐링하는 단계를 보다 효율적으로 수행하여 연산량을 줄일 필요가 있다. 쉐이딩 과정에서 연산량을 줄이는 대표적인 방법으로 Z-테스트(또는, 깊이 테스트) 및 은면 제거 방법(hidden surface removal)가 있다.
17단계는 테스트 및 믹싱(testing and mixing) 단계를 나타낸다.
18단계는 프레임 버퍼에 저장된 프레임을 표시하는 단계를 나타낸다. 11 내지 17단계를 통해 생성된 프레임은 프레임 버퍼에 저장된다. 프레임 버퍼에 저장된 프레임은 디스플레이 장치를 통해 표시된다.
도 2는 오브젝트의 깊이에 따라 Z-테스트 및 쉐이딩하는 것을 설명하기 위한 도면이다.
Z-테스트를 이용한 쉐이딩 방법은 렌더링 과정에서 연산량을 줄이는 대표적인 방법이다. Z-테스트를 이용한 쉐이딩 방법은 앞에 위치한 오브젝트에 의해 가려진 오브젝트는 쉐이딩을 수행하지 않는 방법이다. 다시 말해서, Z-테스트를 이용한 쉐이딩 방법은 오브젝트들의 깊이 값을 비교하여, 앞에 위치한 오브젝트만을 쉐이딩하는 방법이다.
3차원 공간에 복수의 오브젝트들이 존재할 때, 복수의 오브젝트들은 중첩될 수 있다. 예를 들어, 도 2에서 3차원 공간에 복수의 오브젝트들(20, 30, 40)이 존재한다. 초점(50, focal point)에서 오브젝트들(20, 30, 40)을 보면, 복수의 오브젝트들은 서로 중첩된다. 따라서, 제2 오브젝트(30)는 제1 오브젝트(20)에 의해 일부 영역(35)이 가려진다. 또한, 제3 오브젝트(40)는 제1 및 제2 오브젝트(20, 30)에 의해 일부 영역(45)이 가려진다. 따라서, 앞에 위치한 오브젝트에 의해 가려지는 영역들(35, 45)는 프레임에서 표시되지 않으므로 색을 지정할 필요가 없다. 따라서, 영역들(35, 45)에 대한 쉐이딩을 수행하지 않는다.
Z-테스트를 이용한 쉐이딩 방법은 오브젝트 단위로 수행될 수 있다. 따라서, 시점으로부터 멀리 위치한 제3 오브젝트(40)가 먼저 처리되면, 제3 오브젝트(40)에서 제1 및 제2 오브젝트들(20, 30)에 의해 가려지는 영역들(35, 45)도 쉐이딩된다. 영역들(35, 45)들은 이후에 수행되는 제1 및 제2 오브젝트들(20, 30)에 의해 가려지게 되므로, 제3 오브젝트(40)를 먼저 쉐이딩하게 되면 영역들(35, 45)에 대한 쉐이딩 연산은 불필요한 연산이 된다. 따라서, 오브젝트들(20, 30, 40)의 처리 순서에 따라 쉐이딩 연산을 줄일 수 있다.
예를 들어, 제1 내지 제3 오브젝트(20, 30, 40)가 순서대로 처리되게 되면, 제2 오브젝트(30)의 영역(35)은 Z-테스트에서 제1 오브젝트(20)보다 큰 깊이 값을 갖는다. 따라서, 영역(35)는 쉐이딩 되지 않는다. 또한, 제3 오브젝트(40)의 영역(45)도 Z-테스트에서 제1 또는 제2 오브젝트(20, 30)보다 큰 깊이 값을 갖는다. 따라서, 영역(45)도 쉐이딩 되지 않는다.
도 3은 일 실시 예에 따른 렌더링 장치(300)를 설명하기 위한 도면이다. 도 3을 참조하면, 렌더링 장치(300)는 처리 순서 결정부(310), Z-테스터(320) 및 쉐이더(330)를 포함한다. 렌더링 장치(300)는 드로우 커맨드를 수신하고, 현재 프레임을 렌더링하여 이미지를 출력한다. 렌더링은 2차원 좌표계의 프레임의 색을 결정하여 프레임 버퍼에 저장하는 과정이다. 즉, 렌더링은 디스플레이될 2차원 영상을 생성하는 과정이다. 또한, 렌더링은 시점의 변경에 따라 바뀌는 2차원 영상을 생성하는 과정이라고 할 수 있다. 따라서, 렌더링을 통해 3차원 공간에서 보이지 않는 영역은 제거되고, 2차원 영상을 구성하는 픽셀 또는 프레그먼트들의 색이 결정된다.
Z-테스트를 이용한 쉐이딩 방법은 시점으로부터 가장 가까운 오브젝트부터 순서대로 드로우 커맨드가 처리될 때 가장 효율적이다. 개발자는 드로우 커맨드들의 처리 순서를 지정할 수 있으나, 개발자가 드로우 커맨드들의 처리 순서를 지정하지 않더라도 렌더링 장치(300)는 드로우 커맨드들의 처리 순서를 재조정하여 Z-테스트를 이용한 쉐이딩 방법의 연산량을 줄일 수 있다.
처리 순서 결정부(310)는 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하고, 결정된 드로우 커맨드들의 깊이 정보를 이용하여 현재 드로우 커맨드들의 처리 순서를 결정한다.
처리 순서 결정부(310)는 현재 드로우 커맨드의 바인딩 정보(binding information)와 이전 드로우 커맨드의 바인딩 정보를 비교하고, 비교 결과에 기초하여 현재 드로우 커맨드와 동일한 이전 드로우 커맨드를 결정한다. 처리 순서 결정부(310)는 드로우 커맨드 히스토리 버퍼에 저장된 이전 드로우 커맨드들과 입력된 현재 드로우 커맨드를 비교한다.
처리 순서 결정부(310)는 바인딩 정보를 이용하여 드로우 커맨드들이 동일한지 결정할 수 있다. 다시 말해서, 처리 순서 결정부(310)는 현재 드로우 커맨드의 바인딩 정보와 이전 드로우 커맨드의 바인딩 정보를 비교한다. 바인딩 정보는 드로우 커맨드가 어떤 데이터들을 입력으로 사용하는지를 표시하는 정보이다.
처리 순서 결정부(310)는 이전 드로우 커맨드의 깊이 값을 현재 드로우 커맨드의 깊이 값으로 결정한다. 보다 상세히 설명하면, 처리 순서 결정부(310)는 현재 드로우 커맨드의 바인딩 정보와 동일한 바인딩 정보를 갖는 이전 드로우 커맨드의 깊이 값을 현재 드로우 커맨드의 깊이 값으로 결정한다.
처리 순서 결정부(310)는 현재 드로우 커맨드의 깊이 값을 이용하여, 현재 드로우 커맨드의 처리 순서를 결정한다. 처리 순서 결정부(310)는 입력되는 드로우 커맨드들에 대하여 동일한 과정을 통하여 깊이 값을 결정하고, 결정된 깊이 값에 기초하여 드로우 커맨드들의 처리 순서를 업데이트한다.
처리 순서 결정부(310)는 결정된 이전 드로우 커맨드들에 포함된 오브젝트들의 깊이 값들을 비교하여, 깊이 값들의 크기의 순서대로 현재 드로우 커맨드들의 처리 순서를 결정할 수 있다. 오브젝트의 깊이 값은 시점으로부터 오브젝트의 가장 근접한 지점까지의 거리로 결정될 수 있다.
처리 순서 결정부(310)는 프리미티브 리스트들의 깊이 값들을 비교하여, 깊이 값들의 크기의 순서대로 현재 드로우 커맨드들의 처리 순서를 결정할 수 있다. 처리 순서 결정부(310)는 제1 드로우 커맨드의 프리미티브들의 깊이 값들 모두가 제2 드로우 커맨드의 프리미티브들의 깊이 값보다 큰 경우, 제1 드로우 커맨드를 제2 드로우 커맨드 보다 후순위 처리 순서를 부여한다. 또는, 처리 순서 결정부(310)는 제1 드로우 커맨드의 프리미티브들의 깊이 값들의 평균과 제2 드로우 커맨드의 프리미티브들의 깊이 값들의 평균을 비교하여 제1 및 제2 드로우 커맨드들의 처리 순서를 부여할 수 있다.
처리 순서 결정부(310)는 이외에도 다양한 방법으로 드로우 커맨드들의 깊이 값을 비교할 수 있다.
처리 순서 결정부(310)는 현재 드로우 커맨드들 중에서 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드에 대하여는 별도로 깊이 값을 획득하고, 획득된 깊이 값에 기초하여 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드의 처리 순위를 결정한다. 처리 순서 결정부(310)는 입력된 현재 드로우 커맨드가 이전 드로우 커맨드들과 동일하지 않으므로, 이전 드로우 커맨드들로부터 깊이 값을 획득할 수 없다. 따라서, 처리 순서 결정부(310)는 Z-테스트와는 별도로 현재 드로우 커맨드의 깊이 값을 계산할 수 있다.
또는, 처리 순서 결정부(310)는 현재 드로우 커맨드들 중에서 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드에 대하여 가장 선순위의 처리 순서를 부여하거나 가장 후순위의 처리 순서를 부여할 수도 있다.
처리 순서 결정부(310)는 이외에도 다양한 방법으로 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드에 처리 순서를 부여할 수 있다.
Z-테스터(320)는 결정된 처리 순서에 따라 현재 드로우 커맨드들에 대한 Z-테스트를 수행한다. Z-테스터(320)는 동일한 픽셀에서 중복되는 프레그먼트들의 깊이 값을 비교하고, 깊이 값이 가장 작은 프레그먼트만을 쉐이더(330)로 출력한다. 따라서, Z-테스터(320)는 동일한 픽셀에서 어느 오브젝트의 프레그먼트의 깊이 값이 더 작은지를 비교하고, 더 작은 깊이 값을 갖는 프레그먼트만을 쉐이더(330)로 출력한다.
쉐이더(330)는 Z-테스트의 결과에 기초하여 오브젝트를 쉐이딩한다. 즉, 쉐이더(330)는 Z-테스트의 결과에 따라 입력된 프레그먼트만 쉐이딩한다. 따라서, 쉐이더(330)는 프레그먼트가 중복된 픽셀에 대하여, 깊이 값이 더 큰 프레그먼트를 쉐이딩하지 않는다.
도 4는 일 실시 예에 따른 렌더링 장치(300)를 설명하기 위한 도면이다. 도 4의 렌더링 장치(300)는 도 3의 렌더링 장치(300)의 변형된 형태이다. 따라서, 이하 생략된 내용이라 하더라도 렌더링 장치(300)에 관하여 이상에서 기술된 내용은 도 4의 실시 예에 따른 렌더링 장치(300)에도 적용된다.
도 4를 참조하면, 도 4의 렌더링 장치(300)는 기하 처리부(315)를 더 포함한다. 렌더링 장치(300)는 입력된 드로우 커맨드를 기하 처리한 후에 드로우 커맨드의 처리 순서를 결정할 수 있다. 기하 처리는 3차원 좌표계의 물체를 시점에 따라 변환하고, 2차원 좌표계로 투영(projection) 처리 하는 과정이다. 기하 처리는 정점 쉐이딩(vertex shading)하는 과정을 포함한다. 즉, 3차원 좌표계의 물체들의 정점을 결정하고, 정점들의 위치를 결정한다. 기하 처리는 프리미티브를 생성하는 과정을 포함한다. 프리미티브는 정점들을 연결하여 생성된다. 예를 들어, 프리미티브는 삼각형, 사각형 등의 다각형일 수 있다.
기하 처리부(315)는 현재 드로우 커맨드에 대한 기하 처리를 수행하여 프리미티브 리스트를 생성할 수 있다. 또한, 기하 처리부(315)는 현재 드로우 커맨드와 동일한 이전 드로우 커맨드가 있는 경우, 이전 드로우 커맨드의 기하 처리의 결과를 현재 드로우 커맨드의 기하 처리로 대체할 수 있다. 다시 말해서, 기하 처리부(315)는 이전 드로우 커맨드의 기하 처리의 결과와 현재 드로우 커맨드의 기하 처리의 결과가 동일할 것이기 때문에, 기하 처리부(315)는 현재 드로우 커맨드에 대한 기하 처리를 수행하지 않는다. 2개의 드로우 커맨드들이 있을 때, 두 개의 드로우 커맨드들이 사용하는 데이터들이 동일하다면 두 개의 드로우 커맨드들의 실행 결과는 동일하다. 즉, 두 개의 드로우 커맨드들에 의해 생성된 프리미티브 리스트(primitive list)가 동일하다.
기하 처리부(315)는 기하 처리의 결과에 기초하여 현재 드로우 커맨드의 깊이 값을 결정할 수 있다. 또한, 처리 순서 결정부(310)는 결정된 깊이 값을 이용하여 현재 드로우 커맨드의 처리 순서를 결정한다.
도 5는 일 실시 예에 따른 렌더링 방법을 설명하기 위한 도면이다. 도 5를 참조하면, 현재 프레임의 렌더링을 위해 제1 내지 제4 드로우 커맨드들이 렌더링 장치(300)에 입력된다.
렌더링 장치(300)는 제1 내지 제4 드로우 커맨드들의 처리 순서를 재조정한다. 렌더링 장치(300)는 드로우 커맨드 히스토리 버퍼에 제1 내지 제4 드로우 커맨드들과 동일한 이전 드로우 커맨드들이 있는지 탐색한다. 탐색 결과, 드로우 커맨드 히스토리 버퍼에 동일한 이전 드로우 커맨드들이 있으면, 렌더링 장치(300)는 제1 내지 제4 드로우 커맨드들의 오브젝트들(510 내지 540)의 깊이 값을 획득한다. 렌더링 장치(300)는 제1 내지 제4 오브젝트들(510 내지 540)의 깊이 값의 순서대로 오브젝트들(510 내지 540)의 처리 순서를 재조정한다.
만약, 제4 오브젝트(540), 제3 오브젝트(530), 제1 오브젝트(510), 제2 오브젝트(520)의 순서로 깊이 값이 점점 커진다면, 렌더링 장치(300)는 제4 오브젝트(540), 제3 오브젝트(530), 제1 오브젝트(510), 제2 오브젝트(520)의 순서로 처리 순서를 재조정한다. 재조정된 오브젝트들(510 내지 540)은 순차적으로 래스터화(rasterization)되고, Z-테스트를 수행하고 텍스쳐링 및 쉐이딩 처리된다.
도 6은 일 실시 예에 따른 렌더링 장치(300)를 설명하기 위한 도면이다. 도 6의 렌더링 장치(300)는 도 3의 렌더링 장치(300)의 변형된 형태이다. 따라서, 이하 생략된 내용이라 하더라도 렌더링 장치(300)에 관하여 이상에서 기술된 내용은 도 6의 실시 예에 따른 렌더링 장치(300)에도 적용된다.
도 6의 렌더링 장치(300)는 처리 순서 결정부(310)가 현재 드로우 커맨드와 이전 드로우 커맨드를 비교하고, 비교 결과를 기하 처리부(315)로 출력한다. 드로우 커맨드 히스토리 버퍼(410)는 드로우 커맨드의 바인딩 정보, ID 및 깊이 정보를 저장한다. 처리 순서 결정부(310)는 드로우 커맨드 히스토리 버퍼(410)에 저장된 바인딩 정보를 검색하여, 현재 처리해야 하는 드로우 커맨드의 바인딩 정보와 동일한 바인딩 정보를 찾는다. 현재 드로우 커맨드의 바인딩 정보와 동일한 바인딩 정보가 드로우 커맨드 히스토리 버퍼(410)에 저장되어 있는 경우, 처리 순서 결정부(310)는 드로우 커맨드 히스토리 버퍼(410)에 저장된 현재 드로우 커맨드와 동일한 이전 드로우 커맨드의 깊이 정보를 획득한다.
현재 드로우 커맨드와 동일한 이전 드로우 커맨드가 있는 경우, 처리 순서 결정부(310)는 이전 드로우 커맨드의 깊이 정보를 이용하여 현재 드로우 커맨드의 처리 순서를 결정한다. 즉, 처리 순서 결정부(310)는 깊이 값이 더 작은 순서로 현재 드로우 커맨드들의 처리 순서를 결정한다. 또한, 처리 순서 결정부(310)는 현재 드로우 커맨드와 동일한 이전 드로우 커맨드의 ID를 기하 처리부(315)로 출력한다.
기하 처리부(315)는 이전 드로우 커맨드의 기하 처리 결과를 이용한다. 보다 상세히 설명하면, 기하 처리부(315)는 이전 드로우 커맨드의 ID와 동일한 ID를 갖는 프리미티브 리스트를 씬 버퍼(420)에서 검색하고, 검색된 프리미티브 리스트를 래스터라이저(317)로 출력한다. 따라서, 기하 처리부(315)는 현재 드로우 커맨드에 대한 기하 처리 과정을 생략할 수 있다.
드로우 커맨드 히스토리 버퍼(410)에는 n개의 이전 프레임들의 드로우 커맨드들을 저장한다. 드로우 커맨드 히스토리 버퍼(410)에 저장된 드로우 커맨드들은 고유의 ID를 갖는다. 따라서, 처리 순서 결정부(310)는 드로우 커맨드의 ID를 기하 처리부(315)로 출력하여, 현재 드로우 커맨드와 동일한 이전 드로우 커맨드가 무엇인지를 나타내는 정보를 기하 처리부(315)로 출력할 수 있다.
씬 버퍼(420)에는 n개의 이전 프레임들의 드로우 커맨드들에 대한 프리미티브 리스트들을 저장한다. 씬 버퍼(420)에 저장된 프리미티브 리스트들은 대응되는 드로우 커맨드들의 ID로 식별된다. 따라서, 기하 처리부(315)는 이전 드로우 커맨드의 ID와 씬 버퍼(420)에 저장된 프리미티브 리스트의 ID를 비교하여 이전 드로우 커맨드의 기하 처리 결과인 프리미티브 리스트를 식별할 수 있다. 드로우 커맨드 ID는 드로우 커맨드들을 식별하기 위한 고유의 이름이다. 프리미티브 리스트 ID는 프리미티브 리스트들을 식별하기 위한 고유의 이름이다.
처리 순서 결정부(310)는 현재 드로우 커맨드들 중에서 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드의 정보를 드로우 커맨드 히스토리 버퍼(410)에 저장한다. 처리 순서 결정부(310)는 현재 드로우 커맨드와 동일한 이전 드로우 커맨드가 없는 경우, 현재 드로우 커맨드에 ID를 부여하고, 드로우 커맨드 히스토리 버퍼(410)에 현재 드로우 커맨드의 ID, 바인딩 정보 및 깊이 정보 등을 드로우 커맨드 히스토리 버퍼(410)에 저장한다. 드로우 커맨드 히스토리 버퍼(410)는 새로운 드로우 커맨드가 입력될 때마다 업데이트 된다.
래스터라이저(317)는 입력된 프리미티브 리스트에 포함된 프리미티브들을 프레그먼트들로 분할한다. 래스터라이저(317)는 프레그먼트들로 분할된 프리미티브들을 Z-테스터(320)로 출력한다.
Z-테스터(320)는 입력된 프리미티브들에 대한 Z-테스트를 수행한다. 즉, Z-테스터(320)는 처리 순서 결정부(310)에서 결정된 처리 순서에 따라 프리미티브들에 대한 Z-테스트를 수행한다. Z-테스터(320)는 현재 입력된 프리미티브의 프레그먼트의 깊이 값이 현재까지 입력된 프리미티브 리스트들의 프레그먼트들의 깊이 값보다 작은 프레그먼트만 쉐이더(330)로 출력한다. 다시 말해서, Z-테스터(320)는 동일한 위치에서 현재 Z-테스트 중인 프레그먼트의 깊이 값과 현재까지 입력된 프레그먼트들의 깊이 값을 비교하고, 현재 Z-테스트 중인 프레그먼트의 깊이 값이 가장 작을 때만 현재 Z-테스트 중인 프레그먼트를 쉐이더(330)로 출력한다.
Z-테스터(320)는 Z-테스트를 할 때 깊이 버퍼(430)를 이용한다.
쉐이더(330)는 Z-테스터(320)로부터 출력된 프레그먼트의 색을 지정한다. 쉐이더(330)는 현재 프레임에 대한 모든 드로우 커맨드에 대한 쉐이딩이 완료되면, 이미지를 출력한다.
도 7은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 흐름도이다. 도 7은 렌더링 장치(300)에서 수행되는 단계를 나타낸 도면이다. 따라서, 이하 생략된 내용이라 하더라도 렌더링 장치(300)에 관하여 이상에서 기술된 내용은 도 7의 실시 예에 따른 렌더링 방법에도 적용된다.
710단계에서, 렌더링 장치(300)는 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드를 수신한다.
720단계에서, 렌더링 장치(300)는 이전 프레임의 드로우 커맨드 히스토리 버퍼(410)에 현재 드로우 커맨드 히스토리 버퍼와 동일한 이전 드로우 커맨드가 포함되어 있는지 결정한다. 만약, 동일한 이전 드로우 커맨드가 있으면 730단계로 진행하고, 그렇지 않으면 750단계로 진행한다.
730단계에서, 렌더링 장치(300)는 이전 드로우 커맨드의 깊이 정보를 이용하여 현재 드로우 커맨드의 처리 순서를 결정한다. 렌더링 장치(300)는 현재까지 입력된 드로우 커맨드들의 깊이 정보와 현재 드로우 커맨드의 깊이 정보를 비교하여 현재 프레임에 대한 드로우 커맨드들의 처리 순서를 업데이트한다. 예를 들어, 현재까지 입력된 제1 내지 제3 드로우 커맨드들의 처리 순서가 제2 드로우 커맨드, 제3 드로우 커맨드, 제1 드로우 커맨드의 순이고, 현재 드로우 커맨드의 깊이 값이 제2 드로우 커맨드보다는 크고, 제3 드로우 커맨드보다 작으면, 렌더링 장치(300)는 제2 드로우 커맨드, 현재 드로우 커맨드, 제3 드로우 커맨드, 제1 드로우 커맨드의 순으로 처리 순서를 업데이트한다. 렌더링 장치(300)는 현재 프레임에 대한 드로우 커맨드가 입력될 때마다 드로우 커맨드들의 처리 순서를 업데이트한다.
740단계에서, 렌더링 장치(300)는 이전 드로우 커맨드의 프리미티브 리스트를 씬 버퍼(420)에 로딩한다. 현재 드로우 커맨드와 동일한 이전 드로우 커맨드가 있으므로, 렌더링 장치(300)는 현재 드로우 커맨드에 대한 프리미티브 리스트를 동일한 이전 드로우 커맨드의 프리미티브 리스트로 대체한다.
750단계에서, 렌더링 장치(300)는 현재 드로우 커맨드의 바인딩 정보를 드로우 커맨드 히스토리 버퍼(410)에 저장한다. 저장된 바인딩 정보는 이후에 입력되는 드로우 커맨드와 비교될 때 사용된다.
760단계에서, 렌더링 장치(300)는 현재 드로우 커맨드에 대한 프리미티브 리스트와 프리미티브 ID를 생성한다.
770단계에서, 렌더링 장치(300)는 현재 프레임에 대한 프리미티브 리스트를 씬 버퍼(420)에 저장한다.
780단계에서, 렌더링 장치(300)는 현재 프레임에 대한 추가 드로우 커맨드가 있는지 판단한다. 만약, 추가 드로우 커맨드가 있으면 720단계로 진행하고, 그렇지 않으면 790단계로 진행한다.
790단계에서, 렌더링 장치(300)는 현재 프레임에 대한 결과 영상을 렌더링하기 위해 선택적으로 씬 버퍼(420)를 처리한다. 즉, 렌더링 장치(300)는 씬 버퍼(420)에 저장된 프리미티브 리스트들을 처리하여 결과 영상을 생성한다.
도 8은 일 실시 예에 따른 렌더링 방법을 설명하기 위한 순서도이다. 도 8은 렌더링 장치(300)에서 수행되는 단계를 나타낸 도면이다. 따라서, 이하 생략된 내용이라 하더라도 렌더링 장치(300)에 관하여 이상에서 기술된 내용은 도 8의 실시 예에 따른 렌더링 방법에도 적용된다.
810단계에서, 렌더링 장치(300)는 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정한다.
820단계에서, 렌더링 장치(300)는 결정된 드로우 커맨드들의 깊이 정보를 이용하여 현재 드로우 커맨드들의 처리 순서를 결정한다. 렌더링 장치(300)는 이전 프레임을 렌더링하고, 렌더링을 수행하는 과정에서 오브젝트, 프리미티브 또는 프레그먼트의 깊이 정보를 저장한다. 렌더링 장치(300)는 현재 프레임을 렌더링할 때 저장된 깊이 정보를 이용하여 현재 드로우 커맨드들의 처리 순서를 결정한다.
830단계에서, 렌더링 장치(300)는 처리 순서에 따라 현재 드로우 커맨드들에 대한 Z-테스트를 수행하고, Z-테스트의 결과에 기초하여 쉐이딩한다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
300: 렌더링 장치
310: 처리 순서 결정부
320: Z-테스터
330: 쉐이더

Claims (15)

  1. 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하는 단계;
    상기 결정된 드로우 커맨드들의 깊이 정보를 이용하여 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 단계; 및
    상기 처리 순서에 따라 상기 현재 드로우 커맨드들에 대한 Z-테스트를 수행하고, 상기 Z-테스트의 결과에 기초하여 쉐이딩하는 단계를 포함하는 렌더링 방법.
  2. 제 1 항에 있어서,
    상기 처리 순서를 결정하는 단계는 상기 결정된 이전 드로우 커맨드들의 깊이 값들을 비교하여, 상기 깊이 값들의 크기의 순서대로 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 방법.
  3. 제 1 항에 있어서,
    상기 처리 순서를 결정하는 단계는 상기 결정된 이전 드로우 커맨드들에 포함된 오브젝트들의 깊이 값들을 비교하여, 상기 깊이 값들의 크기의 순서대로 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 방법.
  4. 제 1 항에 있어서,
    상기 현재 드로우 커맨드들에 대한 프리미티브 리스트들을 생성하는 단계를 더 포함하고,
    상기 처리 순서를 결정하는 단계는 상기 프리미티브 리스트들의 깊이 값들을 비교하여, 상기 깊이 값들의 크기의 순서대로 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 방법.
  5. 제 1 항에 있어서,
    상기 현재 드로우 커맨드들 중에서 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드를 기하 처리하여 깊이 값을 획득하는 기하 처리 단계를 더 포함하고,
    상기 처리 순서를 결정하는 단계는 상기 획득된 깊이 값에 기초하여 상기 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 방법.
  6. 제 1 항에 있어서, 상기 동일한 이전 드로우 커맨드들을 결정하는 단계는,
    상기 현재 드로우 커맨드들의 바인딩 정보와 상기 이전 드로우 커맨드들의 바인딩 정보를 비교하는 단계; 및
    상기 비교 결과에 기초하여 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하는 단계를 포함하는 것을 특징으로 하는 렌더링 방법.
  7. 제 1 항에 있어서,
    상기 현재 드로우 커맨드들 중에서, 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드의 정보를 드로우 커맨드 히스토리 버퍼에 저장하는 단계를 더 포함하는 것을 특징으로 하는 렌더링 방법.
  8. 현재 프레임을 렌더링하기 위한 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하고, 상기 결정된 드로우 커맨드들의 깊이 정보를 이용하여 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 처리 순서 결정부; 및
    상기 처리 순서에 따라 상기 현재 드로우 커맨드들에 대한 Z-테스트를 수행하는 Z-테스터; 및
    상기 Z-테스트의 결과에 기초하여 쉐이딩하는 쉐이더를 포함하는 렌더링 장치.
  9. 제 8 항에 있어서,
    상기 처리 순서 결정부는 상기 결정된 이전 드로우 커맨드들의 깊이 값들을 비교하여, 상기 깊이 값들의 크기의 순서대로 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 장치.
  10. 제 8 항에 있어서,
    상기 처리 순서 결정부는 상기 결정된 이전 드로우 커맨드들에 포함된 오브젝트들의 깊이 값들을 비교하여, 상기 깊이 값들의 크기의 순서대로 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 장치.
  11. 제 8 항에 있어서,
    상기 현재 드로우 커맨드들에 대한 프리미티브 리스트들을 생성하는 기하 처리부를 더 포함하고,
    상기 처리 순서 결정부는 상기 프리미티브 리스트들의 깊이 값들을 비교하여, 상기 깊이 값들의 크기의 순서대로 상기 현재 드로우 커맨드들의 처리 순서를 결정하는 것을 특징으로 하는 렌더링 장치.
  12. 제 8 항에 있어서,
    상기 현재 드로우 커맨드들 중에서 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드를 기하 처리하여 깊이 값을 획득하는 기하 처리부를 더 포함하고,
    상기 처리 순서 결정부는 상기 획득된 깊이 값에 기초하여 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드의 처리 순위를 결정하는 것을 특징으로 하는 렌더링 장치.
  13. 제 8 항에 있어서,
    상기 처리 순서 결정부는 상기 현재 드로우 커맨드들의 바인딩 정보와 상기 이전 드로우 커맨드들의 바인딩 정보를 비교하고, 상기 비교 결과에 기초하여 현재 드로우 커맨드들과 동일한 이전 드로우 커맨드들을 결정하는 것을 특징으로 하는 렌더링 장치.
  14. 제 8 항에 있어서,
    상기 처리 순서 결정부는 상기 현재 드로우 커맨드들 중에서 동일한 이전 드로우 커맨드가 없는 현재 드로우 커맨드의 정보를 드로우 커맨드 히스토리 버퍼에 저장하는 것을 특징으로 하는 렌더링 장치.
  15. 제 1 항 내지 제 7항 중의 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR20130120871A 2013-10-10 2013-10-10 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법 KR20150042095A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR20130120871A KR20150042095A (ko) 2013-10-10 2013-10-10 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
US15/028,277 US10297067B2 (en) 2013-10-10 2014-10-08 Apparatus and method of rendering frame by adjusting processing sequence of draw commands
PCT/KR2014/009479 WO2015053557A1 (en) 2013-10-10 2014-10-08 Apparatus and method of rendering frame by adjusting processing sequence of draw commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130120871A KR20150042095A (ko) 2013-10-10 2013-10-10 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20150042095A true KR20150042095A (ko) 2015-04-20

Family

ID=52813327

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130120871A KR20150042095A (ko) 2013-10-10 2013-10-10 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법

Country Status (3)

Country Link
US (1) US10297067B2 (ko)
KR (1) KR20150042095A (ko)
WO (1) WO2015053557A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10332301B2 (en) 2015-11-06 2019-06-25 Samsung Electronics Co., Ltd. 3D graphic rendering method and apparatus

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106652007B (zh) * 2016-12-23 2020-04-17 网易(杭州)网络有限公司 虚拟海面渲染方法及系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07122908B2 (ja) 1991-03-12 1995-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 3次元のソリッド物体を表す表示可能情報を生成する装置と方法
JP3239975B2 (ja) 1994-11-29 2001-12-17 富士通株式会社 多角形描画装置
TW463120B (en) 2000-05-16 2001-11-11 Silicon Integrated Sys Corp Method for enhancing 3D graphic performance by pre-sorting
GB2378108B (en) 2001-07-24 2005-08-17 Imagination Tech Ltd Three dimensional graphics system
US7154502B2 (en) 2002-03-19 2006-12-26 3D Labs, Inc. Ltd. 3D graphics with optional memory write before texturing
KR100546383B1 (ko) 2003-09-29 2006-01-26 삼성전자주식회사 눈에 보이지 않는 프래그먼트를 처리하기 위한 3차원그래픽스 렌더링 엔진 및 그 방법
US7456846B1 (en) 2005-06-03 2008-11-25 Nvidia Corporation Graphical processing system, graphical pipeline and method for implementing subpixel shifting to anti-alias texture
US8860721B2 (en) 2006-03-28 2014-10-14 Ati Technologies Ulc Method and apparatus for processing pixel depth information
US8933933B2 (en) 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
KR100793990B1 (ko) 2006-09-18 2008-01-16 삼성전자주식회사 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템
US8243069B1 (en) 2006-11-03 2012-08-14 Nvidia Corporation Late Z testing for multiple render targets
US7586495B2 (en) 2006-12-29 2009-09-08 Intel Corporation Rendering multiple clear rectangles using a pre-rendered depth buffer
KR101661931B1 (ko) * 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
US9552665B2 (en) * 2013-03-18 2017-01-24 Arm Limited Hidden surface removal in graphics processing systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10332301B2 (en) 2015-11-06 2019-06-25 Samsung Electronics Co., Ltd. 3D graphic rendering method and apparatus

Also Published As

Publication number Publication date
US20160267701A1 (en) 2016-09-15
US10297067B2 (en) 2019-05-21
WO2015053557A1 (en) 2015-04-16

Similar Documents

Publication Publication Date Title
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US10102663B2 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
KR102101834B1 (ko) 영상 처리 장치 및 방법
JP5847159B2 (ja) タイル・ベース・レンダリング・システムにおけるサーフェスのパッチのテッセレーション
KR101609266B1 (ko) 타일 기반의 랜더링 장치 및 방법
KR102637736B1 (ko) 그래픽스 처리 방법 및 시스템
KR20160069801A (ko) 렌더링 방법 및 장치
KR20110093404A (ko) 3차원 그래픽스 랜더링 장치 및 그 방법
GB2500284A (en) Object list tile based computer graphics using modified primitives
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
US9530241B2 (en) Clipping of graphics primitives
KR20150060026A (ko) 이전 커맨드 정보를 이용하여 현재 커맨드를 처리하는 방법 및 장치.
US20160117855A1 (en) Rendering apparatus and method
KR20170025099A (ko) 렌더링 방법 및 장치
KR20150042095A (ko) 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
US20230082839A1 (en) Rendering scalable raster content
KR102116976B1 (ko) 렌더링 방법 및 장치
KR102147357B1 (ko) 커맨드들을 관리하는 장치 및 방법
JP6235926B2 (ja) 情報処理装置、生成方法、プログラム及び記録媒体
JP5106992B2 (ja) 霧効果を考慮して3次元グラフィックスデータをレンダリングする方法及び装置
US11776179B2 (en) Rendering scalable multicolored vector content
JP2010286906A (ja) グラフィックス処理装置、グラフィックス処理方法及びプログラム
KR20160131457A (ko) 커브 렌더링을 수행하는 방법 및 장치.

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid