KR20170105885A - 렌더링 수행 방법 및 장치 - Google Patents

렌더링 수행 방법 및 장치 Download PDF

Info

Publication number
KR20170105885A
KR20170105885A KR1020160029111A KR20160029111A KR20170105885A KR 20170105885 A KR20170105885 A KR 20170105885A KR 1020160029111 A KR1020160029111 A KR 1020160029111A KR 20160029111 A KR20160029111 A KR 20160029111A KR 20170105885 A KR20170105885 A KR 20170105885A
Authority
KR
South Korea
Prior art keywords
rendering
color
objects
buffer
current pixel
Prior art date
Application number
KR1020160029111A
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 KR1020160029111A priority Critical patent/KR20170105885A/ko
Publication of KR20170105885A publication Critical patent/KR20170105885A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/16Using real world measurements to influence rendering

Landscapes

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

Abstract

일 실시 예에 따른 렌더링 장치는, 하나의 장면(scene) 내에서 렌더링이 수행될 복수의 객체들을 그룹화하여 그룹을 생성하는 그룹화부, 그룹에 포함된 복수의 객체들 각각에 대응하는 스텐실 버퍼(Stencil buffer) 및 깊이 버퍼(depth buffer) 중 적어도 하나를 사용하여 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 결정부, 및 컬러를 설정하기로 결정된 픽셀에 대한 정보를 저장하는 렌더링 버퍼를 포함할 수 있다.

Description

렌더링 수행 방법 및 장치{Method and apparatus for performing rendering}
렌더링을 수행하는 방법 및 장치에 관한 것이다.
최근, 스크린 내의 픽셀 밀도(pixel density)가 증가함으로서, 벡터 그래픽 렌더링 분야에서 중앙 처리 장치(Central Processing Unit, CPU) 와 GPU(Graphics Processing Unit, GPU) 사이에 전송되는 대용량 데이터의 메모리 오버 헤드 문제가 발생하고 있다.
벡터 그래픽스(vector graphics)는 그래픽 분야에서 최근 많은 연구가 수행되고 있는 분야로서, 그 중 경로 렌더링(Path rendereing) 방법은 토큰(token) 및 포인트(point)들의 시퀀스로 기술된 장면(scene)을 텍스처(texture) 또는 비트맵의 래스터(raster) 형식으로 변환하는 것으로, 벡터 그래픽스의 가속 성능을 향상시키기 위한 렌더링 방법이다.
CPU는 실시간 렌더링의 목적을 위해서는 충분하지 않으며, 특히 모바일 디바이스에서 그러하다. 또한, CPU의 처리 능력의 발전 속도는 GPU의 처리 능력의 발전 속도보다 느리며 특히, CPU는 에너지 효율적인 측면에서 GPU보다 좋지 않으므로, GPU특징들을 사용하여 렌더링하는 벡터 그래픽 영역과 GPU상의 벡터 그래픽 렌더링(vector graphic rendering)에 대한 효율적인 솔루션에 대한 연구가 활발히 진행되고 있다.
벡터 그래픽 렌더링에서는 벡터 그래픽은 OpenVG, Postscript, SVG, PDF, TrueType and OpenType fonts, HTML 5 canvas 또는 그 밖의 다른 것과 같은 표준에 의해 정의되는 이미지들의 해상도 독립적인 2D 렌더링 방법이다. 벡터 그래픽 렌더링에서 해상도 독립적인 이미지 표현 방법이 사용되므로, 벡터 경로 객체(vector path object)들은 멀티 플랫폼 시스템 상에서의 개발에 적합할 수 있다.
벡터 그래픽의 렌더링은 커맨드(command)와 정점(vertex)들의 집합을 래스터 형식으로 변환하기 위해 렌더링 프로세스이다. 벡터 그래픽 렌더링 엔진의 효율성은 시스템 성능에 영향을 미칠 수 있다. 하지만, 최근 모바일 디바이스에서 사용되는 픽셀의 밀도에 따라 커짐에 따라, 사용자 경험을 만족시키고 렌더링 성능을 향상시키기 위한 벡터 그래픽 렌더링의 새로운 수행 방법이 제안되고 있다.
일반적으로, 벡터 그래픽 객체는 객체의 기하학적 모양을 정의하는 포인트들의 집합 및 포인트들과 관계되는 커맨드(command)들의 집합으로 설명된다. 각 객체는 칼라와 같은 어트리뷰트 또는 드로잉 방법(예. 영역 채우기 또는 영역 아웃라인)을 정의하는 드로잉 스타일을 가질 수 있다.
기존에는, 벡터 그래픽을 렌더링하는 주된 솔루션은 CPU 유닛들에 기초하였으며, 최종적인 시각적 결과를 생성하기 위해, 솔루션은 벡터 그래픽 객체 서술(vector graphic object description)에 포함된 명령어에 기초하여 비트맵 생성을 수행하였다. 결과적으로, 비트맵은 GPU에 전송되고 텍스처로서 디스플레이 될 수 있다.
벡터 그래픽 분야에서 하나의 장면(scene)은 경로(Path)들로 불리는 객체들의 집합으로부터 구성될 수 있다. 각 장면은 수(자연수)개의 경로들을 포함할 수 있다. 그러한 경우, 하나의 신을 렌더링하기 위해, [W*H] 픽셀들의 사이즈인 N이미지들을 생성해야만 한다. RGBA의 채널 당 8 비트의 4 채널 이미지의 경우, 사이즈 W*H*4 바이트의 데이터가 생성될 수 있다. 풀 HD 해상도는 [1920*1080] 픽셀이고, 생성되어 GPU에 전달되기 위해 요구되는 메모리 양은 1920 x 1080 x 4 = 8294400 bytes = 8 MB 이다.
8MB 의 데이터를 생성하고 전송하기 위해 하나의 풀 HD 사이즈의 텍스처가 필요하다. 따라서, 비트맵 생성 프로세스와 CPU와 GPU 사이의 메모리 전송은 하나의 프레임을 렌더링하는데 있어서 높은 오버헤드를 발생시킬 수 있다.
N개의 경로로부터 이루어지는 하나의 장면의 표현에 대해 두 가지 가능한 시나리오(모든 경로들에 대해 하나의 텍스처를 사용, 각 경로에 대해 N 텍스처를 사용)가 존재할 수 있다.
하나의 텍스처를 사용하는 시나리오는 장면 내부의 모든 경로들이 하나의 비트맵으로 결합되어 있음을 가정한다. 이러한 접근은 시간의 흐름에 따라 어떠한 경로들도 변하지 않는 정적(static) 장면에 사용될 수 있다. 하나의 텍스처 사용은 CPU와 GPU 측의 점유 메모리를 감소시킬 뿐 아니라, 한번 생성된 장면은 모든 프레임에서 호스트와 디바이스 사이의 메모리 전송을 필요로 하지 않고 빠르게 리-드로우를 할 수 있도록 텍스처로서 GPU측에 저장될 수 있다.
상술한 두 번째 시나리오에서 각 경로는 서로 분리된 텍스처로 준비된다. 렌더링의 최종 단계에서, 텍스처들은 첫 번째부터 N 번째 경로까지 순서대로 드로우되어 최종 장면을 생성할 수 있다. 이러한 시나리오는 CPU 및 GPU 측의 메모리를 더욱 많이 점유할 수 있다.
텍스처에 기초한 렌더링은 픽셀 바이 픽셀로 비트맵의 준비가 요구되며, 계산의 핵심적인 부분은 CPU 측에서 수행될 수 있다. 에너지 소비 및 성능 관점에서, 텍스처 준비는 특히 모바일 디바이스 상에서 부담이 큰 프로세스이다. 상기 계산 뿐만 아니라, 장면을 재생성하는 경우에, CPU 와 GPU 사이의 메모리 전송 시간도 커질 수 있다.
따라서, 벡터 그래픽 렌더링 분야에서 GPU 디바이스 개발이 촉진되고 있으며, 스텐실 버퍼(Stencil buffer)를 사용하는 스텐실-덴-커버(stencil-then-cover) 방법은 경로 렌더링의 새로운 방법으로 널리 사용되었다. 스텐실 버퍼는 벡터 객체들의 기하학적 형상을 해결하기 위해 많은 솔루션에서 사용되었다. 유효한 픽셀의 칼라링을 위해 스텐실 버퍼에 마스크(mask)가 적용되고, 래스터화 프로세스에서 역시 마스크를 사용할 수 있다.
경로 렌더링을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
개시된 일 실시 예에 따른 렌더링 장치는, 하나의 장면(scene) 내에서 렌더링이 수행될 복수의 객체들을 그룹화하여 그룹을 생성하는 그룹화부, 상기 그룹에 포함된 복수의 객체들 각각에 대응하는 스텐실 버퍼(Stencil buffer) 및 깊이 버퍼(depth buffer) 중 적어도 하나를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 결정부, 및 상기 컬러를 설정하기로 결정된 픽셀에 대한 정보를 저장하는 렌더링 버퍼를 포함할 수 있다.
상기 그룹화부는, N개의 객체들을 포함하는 그룹을 생성하고, Z-버퍼를 사용하여 상기 N개의 객체들의 렌더링 순서를 결정하고, 상기 N은 2 이상의 자연수인 것을 특징으로 할 수 있다.
상기 N개의 객체들의 렌더링 순서는, 상기 N개의 객체들 각각의 깊이 값에 기초하여 상기 N개의 객체들을 나열한 순서에 대응하고, 상기 깊이 값은 스크린으로부터 객체 사이의 거리에 대응하는 값인 것을 특징으로 할 수 있다.
상기 결정부는, 제1객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하고, 제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼 및 상기 깊이 버퍼 중 적어도 하나를 사용하여, 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하고, 상기 제 1 객체 및 상기 제 2 객체는 각각 상기 그룹에 포함된 복수의 객체들 중 어느 하나를 포함하고, 상기 제 1 객체의 렌더링이 수행된 후에 상기 제 2 객체의 렌더링이 수행되는 것을 특징으로 할 수 있다.
상기 결정부는, 상기 제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼에 기초하여, 상기 장면에 포함된 픽셀들 중 컬러 설정 여부를 결정하여야 하는 현재 픽셀에 대해 제1테스트를 수행하고, 상기 현재 픽셀이 상기 제1테스트를 통과하지 못하면 상기 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정하고, 상기 현재 픽셀이 상기 제1테스트를 통과하면, 상기 깊이 버퍼 내에 기록된 상기 현재 픽셀 위치에 대한 깊이 정보에 기초하여, 상기 현재 픽셀에 대해 칼라를 설정할 지 여부를 결정하는 제2테스트를 수행하고, 상기 제2테스트를 통과하지 못하면, 상기 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정하고, 상기 제2테스트를 통과하면 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 할 수 있다.
상기 스텐실 버퍼에 기록된 기하학적 정보는, 상기 장면 내에 포함된 픽셀들 각각의 위치와 상기 복수의 객체들 중 어느 하나에 포함된 정점(vertex)들이 연결된 적어도 하나의 경로 진행 방향 사이의 관계에 기초하여 연산된 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)에 대한 정보를 포함하고, 상기 제1테스트는 상기 주회 횟수가 0이 아닌 값을 가질 경우, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 할 수 있다.
상기 제2테스트는, 상기 현재 픽셀의 깊이 값이 상기 깊이 버퍼 내에 기록된 상기 현재 픽셀의 위치에 대한 깊이 값보다 크다면, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 할 수 있다.
개시된 일 실시 예에 따른 렌더링 방법은, 하나의 장면(scene) 내에서 렌더링이 수행될 복수의 객체들을 그룹화하여 그룹을 생성하는 단계, 상기 그룹에 포함된 복수의 객체들 중 각각의 객체에 대한 렌더링을 위한 렌더링 버퍼를 생성하는 단계, 상기 그룹에 포함된 복수의 객체 각각에 대응하는 스텐실 버퍼(Stencil buffer) 및 깊이 버퍼(depth buffer) 중 적어도 하나를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계, 및 상기 컬러를 설정하기로 결정된 픽셀에 대한 정보를 상기 렌더링 버퍼에 저장하는 단계를 포함할 수 있다.
상기 렌더링 방법을 컴퓨터에서 실행시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 제공될 수 있다.
도1은 일 실시 예에 따른 렌더링 장치의 블록도이다.
도2은 일 실시 예에 따른 객체들의 리스트로 구성되는 하나의 렌더링 객체를 나타낸다.
도3은 하나의 장면(scene)에서 오버래핑(overlapping)되는 객체들의 드로우을 나타낸다.
도4는 두 개의 객체들 간에 오버래핑되는 영역 간의 경쟁(race)를 나타낸다.
도5는 N개의 객체들 간의 Z-순서(Z-ordering)의 개념을 나타낸다.
도6은 3 개의 오버래핑 사각형이 존재할 때, 드로잉 순서의 예를 나타낸다.
도7는 별(Star) 모양의 객체를 삼각화(triangulation)하는 예를 나타낸다.
도8는 일 실시 예에 따른 렌더링 수행 방법을 나타내는 흐름도이다.
도9은 일 실시 예에 따른 채우기(filling)와 스트로크(stroking) 동작을 나타낸다.
도10a는 논-제로(Non-zero) 채우기 규칙을 설명하기 위한 도면이다.
도10b은 이븐-오드(Even-odd) 채우기 규칙을 설명하기 위한 도면이다.
도11는 "스텐실, 덴 커버(Stencil, then Cover)"방법의 일 예를 나타낸다.
도 12은 N 개의 객체를 포함하는 하나의 렌더링 객체의 트리플 삼각화 과정을 나타낸다.
도13은 렌더링 장치의 경로 굽기(paths baking) 과정의 흐름도를 나타낸다.
도14는 렌더링 장치가 커버 지오메트리를 구성하는 방법의 흐름도를 나타낸다.
도 15은 렌더링 장치가 트리플 삼각화를 수행하는 방법의 전체적인 흐름도를 나타낸다.
도16는 CPU와 GPU의 관계도를 나타낸다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다. 본 발명의 하기 실시 예는 본 발명을 구체화하기 위한 것일 뿐 본 발명의 권리 범위를 제한하거나 한정하지 않는다. 또한, 본 발명의 상세한 설명 및 실시 예로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 유추할 수 있는 것은 본 발명의 권리범위에 속하는 것으로 해석된다.
도1은 일 실시 예에 따른 렌더링 장치의 블록도이다.
렌더링 장치(100)는 그룹화부(110), 결정부(120), 및 렌더링 버퍼(130)를 포함할 수 있다. 도 1에 도시된 경로 렌더링을 수행하는 장치(100)에는 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다.
또한, 도 1에 도시된 렌더링을 수행하는 장치(100)의 그룹화부(110), 결정부(120)는 하나 또는 복수 개의 프로세서에 해당할 수 있다. 프로세서는 다수의 논리 게이트들의 어레이로 구현될 수도 있고, 범용적인 마이크로 프로세서와 이 마이크로 프로세서에서 실행될 수 있는 프로그램이 저장된 메모리의 조합으로 구현될 수도 있다. 또한, 다른 형태의 하드웨어로 구현될 수도 있음을 본 실시 예가 속하는 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
이하, 객체(object)라고 함은 렌더링의 대상을 의미하고, 객체는 적어도 하나의 경로를 포함할 수 있다. 다시 말해, 객체는 적어도 하나의 경로에 의하여 구성될 수 있다.
그룹화부(110)는 하나의 장면 내에 존재하는 복수의 객체를 그룹화할 수 있다. 렌더링 장치(100)는 N개(N은 2이상의 자연수)의 객체들을 포함하는 하나의 그룹을 하나의 렌더링 대상으로서 취급할 수 있다. 일 실시 예에 따른 렌더링 장치(100)는 그룹에 속한 N 개의 객체의 렌더링을 하나의 드로우 커맨드(draw command)를 사용하여 수행할 수 있다. 이하, 도2을 참조하여, 하나의 그룹에 포함된 복수의 객체들이 하나의 렌더링 대상으로 취급되는 예를 설명한다.
도2는 일 실시 예에 따른 객체들의 리스트로 구성되는 하나의 렌더링 객체를 나타낸다.
일 실시 예에 따른 렌더링 장치(100)는 하나의 장면에서 객체1(210)부터 객체 N(220)까지 N 개의 객체들을 렌더링하기 위해 요구되는 드로우 동작의 개수를 최소화시킬 수 있다. 최종적으로 사람에게 보여지는 시각적 효과를 획득하기 위해, 벡터 그래픽의 장면은 객체들의 큐(Queue, 230)로서 구성될 수 있다.
렌더링 장치(100)는 하나의 장면 안에 포함된 복수의 객체들을 그룹화할 수 있다. 다시 말해, 렌더링 장치(100)는 하나의 그룹 안에 포함된 객체들을 하나의 렌더링 대상으로 취급할 수 있다. 따라서, 렌더링 장치(100)는 그룹화된 객체들을 렌더링하는데 필요한 드로우 동작의 수를 최소화할 수 있다. 예를 들어, N개의 드로우 동작이 아닌, 하나의 드로우 동작에 의하여 하나의 장면을 렌더링할 수 있다.
일 실시 예에 따른 그룹화부(110)는 N개의 객체를 포함하는 그룹을 생성하고, Z-버퍼를 사용하여 N개의 객체들이 렌더링되어야 하는 순서를 결정할 수 있다. 다만, 그룹에 포함된 각 객체는 서로 다른 인스턴스로 취급될 수 있다. 따라서, 하나의 장면 내에 포함된 객체들 간에는 렌더링이 수행되어야 하는 순서가 결정될 필요가 있다. 복수의 객체 간의 렌더링 순서를 해결하기 위해, 렌더링 장치(100)는 Z-버퍼(Z-buffer)와 Z-순서(Z-ordering)을 사용할 수 있다. 장면 내의 객체의 순서는 스크린 상에서 나타나야 하는 순서를 의미할 수 있다.
예를 들어, 장면 내에 N개의 객체들이 포함되어 있다고 가정하면, 객체들은 첫 번째 객체부터 N 번째 객체까지 순차적으로 렌더링될 수 있다. 만약, 객체들 사이에 오버래핑(overlapping)되는 영역들이 존재하는 경우, 객체들 사이의 렌더링 순서는 매우 중요한 고려 사항이 된다. 예를 들어, 장면 내에 포함된 N번째 객체와 M번째 객체가 오버래핑되는 영역을 가지고 있고, N번째 객체가 M번째 객체 전에 드로우된다고 가정하면, N번째 객체가 렌더링되는 때의 픽셀 드로우는 M번째 객체로부터의 픽셀들에 의해 오버래핑될 수 있고 이에 따라 오버드로우가 발생할 수 있다. 오버드로우란, 이미 칼라 값이 설정된 픽셀의 위치에 새로운 칼라 값이 덮어 써지는 것을 말한다.
그룹화부(110)는 하나의 그룹에 포함된 N개의 객체들이 렌더링되어야 하는 순서를, 깊이 값이 가장 작은 객체부터 깊이 값이 가장 큰 객체까지의 순차적인 순서로 결정할 수 있다. 여기에서, 깊이 값은 스크린으로부터 객체 사이의 거리를 나타내는 값을 의미한다. 예를 들어, 관찰자가 스크린을 통하여 객체를 응시하는 경우, 깊이 값의 크기는 관찰자로부터 스크린을 향하는 방향에 기초하여 결정될 수 있다. 이 경우, 관찰자에게 가깝게 위치하는 것으로 출력된 제 1 객체의 깊이 값은 관찰자로부터 먼 곳에 위치하는 것으로 출력된 제 2 객체의 깊이 값보다 작다.
일 실시 예에 따른 깊이 값은, 스크린으로부터의 객체 사이의 거리를 나타내는 절대 값이 아닌, 객체들 간의 상대적인 깊이 값을 나타내는 정보일 수 있다. 다시 말해, 깊이 값은 객체들 간의 깊이 차이만을 나타내는 값일 수 있다. 예를 들어, 관찰자에게 가장 가깝게 위치하는 것으로 출력된 제1객체와 그 다음으로 먼 곳에 위치하는 것으로 출력된 제2객체, 가장 먼 곳에 위치하는 것으로 출력된 제3객체가 존재할 경우, 깊이 값은 객체들 간의 깊이 값의 상대적인 관계인 "제3객체의 깊이 값 > 제2객체 깊이 값 > 제1객체의 깊이 값"를 나타내도록, 제3객체의 깊이 값은 3, 제2객체의 깊이 값은 2, 제1객체의 깊이 값은 1이 될 수 있다.
일 실시 예에 따른 렌더링 장치(100)는 가장 앞 쪽에 위치한 객체부터 가장 뒤 쪽에 위치한 객체까지 순차적으로 렌더링을 수행하여, 객체들 간의 오버래핑 영역들이 오버드로우되는 것을 방지할 수 있다. 이하, 도 3 내지 도 5를 참조하여, 하나의 장면 내에서 복수의 객체들이 오버래핑 되는 예들을 설명한다.
도3을 참조하면, 도3는 하나의 장면에서 오버래핑되는 객체들의 드로우를 나타낸다.
예를 들어, 사각형(310)의 드로우는 사각형(320)이 드로우되기 이전에 수행 될 수 있다. 이 경우, 최종 장면을 생성하는 과정에서, 사각형(320)은 사각형(310) 및 사각형(320)의 공통 영역(330)에 오버-드로잉될 수 있다. 일 실시 예에 따른 렌더링 장치(100)는 하나의 드로우 동작에서 하나의 장면을 렌더링하는 그룹화 개념을 사용한다. 따라서, 하나의 드로우 동작에 의하여 다수의 오버래핑되는 객체들이 렌더링됨에 따라 경쟁(race)이 발생할 수 있다. 이하, 도 4를 참조하여 경쟁이 발생되는 예를 설명한다.
도4는 두 개의 객체들 간에 오버래핑되는 영역 간의 경쟁(race)를 나타낸다.
렌더링 장치(100)는 동시에 렌더링되는 객체들(410, 420) 사이의 경쟁(430)을 해결하기 위해 깊이-버퍼를 사용할 수 있다. 예를 들어, 렌더링 장치(100)는 깊이-버퍼를 사용함에 따라 Z-오프셋(Z-offset)을 획득할 수 있다. 렌더링 장치(100)가 Z-오프셋을 이용하여 스크린 상에 표현될 객체들의 순서를 결정함에 따라, 하나의 드로우 동작이 일어나는 동안 오버래핑 영역이 발생되는 문제가 해소될 수 있다. 스크린 상에서 나타나는 객체의 순서를 결정할 수 있다.
도5는 N개의 객체들 간의 렌더링 순서를 결정하기 위한 Z-순서(Z-ordering)의 개념을 나타낸다. 렌더링 장치(100)는 Z-버퍼를 사용하여 N 개의 객체들 간의 렌더링 순서를 결정하고, 도6을 참조하여 후술할 바와 같이 N번째 객체(즉, 스크린 상에서 가장 앞에 위치한 객체, 630)부터 첫 번째 객체(스크린 상에서 가장 뒤에 위치한 객체, 610)까지 드로우 할 수 있다. 이하, 도 6을 참조하여 렌더링 장치(100)가 렌더링 순서에 따라 객체들을 순차적으로 드로잉하는 예를 설명한다.
도6은 3 개의 오버래핑 사각형이 존재할 때, 드로잉 순서의 예를 나타낸 것이다.
예를 들어, 렌더링 장치(100)는, 장면 내의 N번째 객체(630)부터 첫 번째 객체(610)까지 드로잉을 수행할 수 있다. 이때, 스크린 상에 객체가 나타나는 순서는 z-오프셋에 의해 정의될 수 있다. 예를 들어, M 번째 객체가 처리되고, 그 후에 N 번째 객체가 처리된다고 가정하면, M번째 객체의 깊이 값은 깊이 버퍼에 기록되고 픽셀은 칼라 버퍼에 기록될 수 있다. 이 경우, N 번째 객체가 처리될 때, N 번째 객체와 M 번째 객체가 오버래핑되는 영역은 깊이 테스트에서 통과하지 못한다. 따라서, 칼라 버퍼에 최종적으로 할당되는 픽셀의 수가 효과적으로 감소될 수 있고, 렌더링 장치(100)는 픽셀 오버드로우가 발생되는 횟수를 0까지 감소시킬 수 있다.
도1를 다시 참조하면, 결정부(120)는 하나의 그룹에 포함된 복수의 객체들에 대해, 삼각화(triangulation)를 수행하여 삼각형들을 생성할 수 있다. 그리고, 결정부(120)는 스텐실 버퍼(Stencil buffer)와 깊이 버퍼 중 적어도 하나에 기초하여, 장면 내에 포함된 픽셀이 드로우되어야 하는지 여부를 결정할 수 있다. 그리고, 결정부(120)는 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 스텐실 버퍼는 객체에 대응하는 삼각형들 각각에 대한 기하학적 정보가 기록된 버퍼를 의미하고, 깊이 버퍼는 객체의 깊이 정보가 기록된 버퍼를 의미한다. 이하, 도 7을 참조하여, 결정부(120)가 객체에 대한 삼각화를 수행하는 예를 설명한다.
도7은 별(star) 형상에 대한 객체의 삼각화의 일 예를 나타낸다.
일 실시 예에 따른 렌더링 장치(100)의 결정부(120)는 별 형상의 객체(710)를 구성하는 정점들 중, 연속된 3개의 정점들을 연결함으로서, 객체(710)을 구성하는 세 개의 삼각형(720, 730, 740)을 생성할 수 있다.
삼각형(720)는 시계 반대 방향의 와인딩을 가지는 삼각형이고, 삼각형(730)은 시계 방향의 와인딩을 가지는 삼각형이고, 삼각형(740)는 시계 반대 방향의 와인딩을 가지는 삼각형이다.
렌더링 장치(100)는 도10a및 10b을 참조하여 후술할 채우기 법칙을 사용하여, 최종적으로 칼라가 설정되어야 하는 픽셀, 즉 객체(710) 내부에 존재하는 픽셀을 결정할 수 있다.
다시 도1을 참조하면, 일 실시 예에 따른 결정부(120)는 제1객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 스텐실 버퍼를 사용하여 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 그 이후에, 결정부(120)는 제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 스텐실 버퍼 및 깊이 버퍼 중 적어도 하나를 사용하여, 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다. 여기에서, 제 1 객체 및 제 2 객체는 각각 그룹에 포함된 N개의 객체들 중 어느 하나를 의미하고, 결정부(120)는 제 1 객체의 렌더링을 수행한 이후에 제 2 객체의 렌더링을 수행한다. 결정부(120)는 제1객체의 렌더링을 위한 픽셀 정보를 생성한 다음에, 제2객체의 렌더링을 위한 픽셀 정보를 생성하기 전에 스텐실 버퍼를 초기화시킬 수 있다.
결정부(120)는 제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 스텐실 버퍼에 기초하여, 장면에 포함된 픽셀들 중 컬러 설정 여부를 결정하여야 하는 현재 픽셀에 대해 제1테스트를 수행할 수 있다. 스텐실 버퍼에 기록된 기하학적 정보는, 주회 횟수(winding number)에 대한 정보를 포함하고, 제1테스트는 주회 횟수가 0이 아닌 값을 가질 경우, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정할 수 있다. 이를 스텐실 테스트(stencil test)라고 부를 수 있다. 여기에서, 주회 횟수는 장면 내에서의 픽셀의 위치와 장면에 포함된 복수의 객체들 중 어느 하나를 구성하는 정점(vertex)들이 연결된 적어도 하나의 경로 진행 방향 사이의 관계에 기초하여 연산된 값이며, 장면 내에 포함된 픽셀들 각각에는 주회 횟수가 할당될 수 있다.
구체적으로, 주회 횟수란, 특정 픽셀의 위치에서 일 측면을 바라볼 때, 경로가 그려지는 동안 몇 바퀴가 회전되는가를 나타내는 미리 결정된 값(N)을 의미한다.
주회 횟수는 경로가 시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 증산하고, 경로가 반시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 감산함으로써 연산될 수 있으나, 이에 한정되지 않는다. 다시 말해, 주회 횟수는 경로가 시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 감산하고, 경로가 반시계 방향으로 회전하는 경우에는 미리 결정된 값(N)을 증산함으로써 연산될 수도 있다.
일 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +1이 될 수 있다. 이때, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -1이 될 수 있다.
다른 예로, 경로가 시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 -1이 될 수 있다. 이때, 경로가 반시계 방향으로 한 바퀴 회전한다면, 픽셀의 주회 횟수는 +1이 될 수 있다.
결정부(120)는 현재 픽셀이 제1테스트를 통과하지 못하면 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정할 수 있다. 결정부(120)는 현재 픽셀이 제1테스트를 통과하면, 깊이 버퍼 내에 기록된 현재 픽셀 위치에 대한 깊이 정보에 기초하여, 현재 픽셀에 대해 칼라를 설정할 지 여부를 결정하는 제2테스트를 수행할 수 있다. 제2테스트는, 현재 픽셀의 깊이 값이 깊이 버퍼 내에 기록된 현재 픽셀의 위치에 대한 깊이 값보다 크다면, 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 테스트를 말한다. 이를 깊이 테스트(depth test)라고 부를 수 있다.
도8는 일 실시 예에 따른 렌더링 장치가 렌더링을 수행하는 방법을 나타내는 흐름도이다.
각 단계의 구체적인 설명은 도1를 참조하여 렌더링 장치(100)에서 상술한 부분과 중복되므로 생략한다.
단계 810에서, 렌더링 장치(100)는 하나의 장면(scene) 내에서 렌더링이 수행될 복수의 객체들을 그룹화하여 그룹을 생성할 수 있다. 렌더링 장치(100)는 N개(N은 2이상의 자연수)의 객체들을 포함하는 하나의 그룹을 하나의 렌더링 대상으로 취급할 수 있다. 일 실시 예에 따른 렌더링 장치(100)는 그룹에 속한 N 개의 객체들의 렌더링을 하나의 드로우 커맨드(draw command)를 사용하여 수행할 수 있다. 단계 810에서, 렌더링 장치(100)는 Z-버퍼를 참조하여, N개의 객체들 간에 렌더링 순서를 결정할 수 있다.
단계 820에서, 렌더링 장치(100)는 복수의 객체들 중 각각의 객체에 대한 렌더링을 위한 하나의 렌더링 버퍼를 생성할 수 있다. 렌더링 버퍼는 그룹에 속한 복수의 객체들을 하나의 렌더링 버퍼로 취급하여 드로우하기 위한 버퍼로, 하나의 그룹에서 공동으로 사용하는 버퍼를 말한다.
단계 830에서, 렌더링 장치(100)는 복수의 객체 중 각각의 객체에 대한 스텐실 버퍼(Stencil buffer) 및 깊이 버퍼(depth buffer) 중 적어도 하나를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정할 수 있다.
단계840에서, 컬러를 설정하기로 결정된 픽셀에 대한 정보를 상기 렌더링 버퍼에 저장할 수 있다.
도9은 일 실시 예에 따른 채우기(filling)와 스트로킹(stroking) 동작을 나타낸다.
일 실시 예에 따른 렌더링 장치(100)의 결정부(120)는 벡터 그래픽 객체 렌더링의 핵심 동작인 채우기(filling, 910)와 스트로크(stroke, 920) 동작을 수행할 수 있다. 채우기 동작은 객체의 내부 영역에 포함된 픽셀들에 컬러를 설정하는 동작을 의미한다. 또한, 스트로크 동작은 객체의 아웃라인(outline)에 대응하는 픽셀들에 컬러를 설정하는 동작을 의미한다. 렌더링 장치(100)는 하나의 객체에 대하여 채우기 동작 및/또는 스트로크 동작을 수행할 수 있고, 이에 따라 객체를 나타내는 다양한 시각적인 표현들이 가능해진다. 예를 들어, 렌더링 장치(100)는 객체에 대해 채우기 동작을 수행한 이후에 스트로크 동작을 수행(930)할 수 있다.
채우기 동작은 논-제로(Non-Zero) 규칙 또는 이븐-오드(Even-Odd) 규칙에 의하여 수행될 수 있다. 예를 들어, 채우기 동작들은 SVG 1.1 표준에 개시된 바에 따라 수행될 수 있다.
채우기-규칙은 스크린의 어느 부분이 객체 내부에 포함되는지를 결정하기 위해 사용되는 알고리즘을 의미한다. 만약, 복수의 객체들이 서로 겹치지 않는 경우라면, 객체들 각각의 내부 영역은 명확하게 식별될 수 있다. 그러나, 하나의 객체가 자체적으로 교차하여 겹쳐진 경우 또는 하나의 객체가 다른 객체를 에워싸는 경우와 같이, 복수의 객체들 각각의 위치가 어디인지에 따라, 객체의 내부 영역은 명확하게 식별되지 않을 수도 있다.
도10a는 논-제로(Non-zero) 채우기 규칙을 설명하기 위한 도면이다.
논-제로(Non-zero) 채우기 규칙(1010)은, 소정의 픽셀로부터 특정 방향으로 광선이 드로잉된 경우, 드로잉된 광선을 교차하는 객체의 세그먼트의 위치를 검출함으로서 스크린 상의 픽셀의 "내부성"(즉, 객체의 내부 영역인지 여부)을 결정하는 규칙을 말한다. 예를 들어, 초기 교차 횟수를 제로 카운트라고 할 때, 객체의 세그먼트가 왼쪽부터 오른쪽으로 광선을 교차할 때 교차 횟수를 더해질 수 있고, 객체의 세그먼트가 오른쪽부터 왼쪽까지 광선을 교차할 때마다 교차 횟수가 감해질 수 있다. 교차 횟수를 카운트 하여, 만약 최종 카운트의 결과가 0면, 픽셀은 객체의 외부에 있는 것으로 결정되고, 그렇지 않으면 포인트는 객체의 내부에 있는 것으로 결정될 수 있다.
도10b는 이븐-오드(Even-odd) 채우기 규칙을 설명하기 위한 도면이다.
이븐-오드(Even-odd) 채우기 규칙(1020)은, 소정의 픽셀로부터 특정 방향으로 광선이 드로잉된 경우, 광선이 교차하는 객체 세그먼트의 개수를 카운팅하여 스크린 상의 픽셀의 "내부성"을 결정할 수 있다. 만약 최종 카운트된 객체 세그먼트의 개수가 홀수 개이면, 픽셀은 경로 내부에 있고 짝수 개이면 픽셀은 경로 외부에 있는 것으로 결정할 수 있다.
랜더링 장치(100)는 도10a 및 10b를 참조하여 상술한 규칙들을 이용하여, 스크린 상의 픽셀에 칼라 값을 설정하여야 하는지 여부를 결정할 수 있다. 예를 들어, 렌더링 장치(100)는 하나의 공통 포인트(앵커 포인트)로부터 출발하는 삼각형들의 집합으로 경로 객체를 표현할 수 있다.
상술한 바와 같이, 렌더링 장치(100)의 결정부(120)는 연속된 3개의 정점들을 연결함으로써 객체를 구성하는 삼각형들을 생성할 수 있다(삼각화, triangulation). 삼각화는 객체를 구성하는 서로 다른 와인딩(winding)의 삼각형들을 생성하는 것을 말한다. 와인딩이란, 삼각형의 정점(vertex)를 나열하는 순서를 뜻한다. 따라서, 도10a 내지 도10b를 참조하여 상술한 채우기 규칙은, 현재 픽셀이 칼라 값이 설정되어야 하는 것으로 결정되기 위해서, 삼각형의 와인딩을 고려하여, 현재 픽셀에 수행되는 오버드로잉(over drawing)의 개수를 카운팅하는 문제가 될 수 있다.
이븐-오드 규칙에서, 렌더링 장치(100)의 결정부(120)는 픽셀의 오버드로우의 총 개수가 짝수인지 여부에 따라, 칼라를 설정하기로 결정하는 픽셀을 정의할 수 있다. 즉, 렌더링 장치(100)의 결정부(120)는 [수학식1]을 사용하여 픽셀의 오버드로우의 총 개수가 짝수인지 여부를 판단할 수 있다.
[수학식 1]
(
Figure pat00001
) mod 2 == 1
여기서, N은 객체를 구성하는 삼각형의 개수를, T는 주어진 픽셀이 i번째 삼각형에 속하는지 여부를 가리키는 팩터(factor)를 가리킨다.
논-제로 규칙에서, 렌더링 장치(100)의 결정부(120)는 픽셀의 칼라를 설정하는지 여부에 대한 정보를 결정하기 위해, 서로 다른 와인딩의 삼각형에 의해 수행되는 픽셀의 오버드로우의 개수가 동일한지 여부를 [수학식2]에 따라 판단할 수 있다.
[수학식 2]
Figure pat00002
Figure pat00003
여기서, N 은 시계 방향의 삼각형에 의해 수행되는 픽셀 오버드로우들의 개수, M은 시계 반대 방향의 삼각형에 의해 수행되는 픽셀 오버드로우들의 개수를, Tcw 는 시계 방향으로 드로우 된 i 번째 삼각형에 현재 픽셀이 속하는지 여부를 가리키는 팩터, Tccw 는 시계 반대 방향으로 드로우 된 j 번째 삼각형에 현재 픽셀이 속하는지 여부를 가리키는 팩터를 가리킬 수 있다.
일 실시 예에 따른 렌더링 장치(100)는 스텐실 버퍼를 사용함으로서, GPU상에서 래스터화 프로세스가 수행되는 동안 칼라가 설정되어야 하는 픽셀들을 선택할 수 있으며, 이러한 방법을 "스텐실, 덴 커버(Stencil, then Cover)"로 부른다.
도11은 "스텐실, 덴 커버(Stencil, then Cover)"방법의 일 예를 나타낸다.
스텐실 단계(1110)에서, 렌더링 장치(100)는 스텐실 버퍼의 동작과 삼각형 와인딩을 통해 객체 지오메트리를 분석할 수 있다.
커버 단계(1120)에서, 렌더링 장치(100)는 스텐실 버퍼에 기록된 마스크(mask)에 기초하여 스텐실 테스트를 통과한 픽셀들을 드로우할 수 있다. 스텐실 테스트를 통과한 픽셀들에 대한 정보는 칼라/프레임 버퍼(1130)에 저장될 수 있다.
"스텐실, 덴 커버" 방법에 의해서 스텐실 단계를 통해 객체 지오메트리가 분석될 수 있다. 또한, 삼각형 와인딩에 기초하여 스텐실 값들이 수정될 수 있다. 커버 단계에서, 렌더링 장치(100)는 경계 내부에 객체를 포함하는 컨벡스 홀(convex hull) 또는 바운딩 박스(bounding box)를 생성하고 스텐실 버퍼에 저장된 마스크에 기초하여 칼라가 설정되어야 하는 유효한 픽셀을 기록할 수 있다.
일 실시 예에 따른 렌더링 장치(100)는 스텐실 버퍼와 깊이 버퍼의 상태를 적절히 변경하고, 삼각화를 수행하여 하나의 드로우 동작과 논-제로 채우기 규칙(non-zero fill rule)을 사용하여 하나의 렌더 객체로서의 N개의 객체들을 렌더링할 수 있다.
일 실시 예에 따른 렌더링 장치(100)는 "스텐실, 덴 커버(Stencil, then Cover)" 솔루션과 상술된 논-제로 채우기 규칙을 사용하여 하나의 드로우 동작 내의 N 개의 객체들의 동시 드로잉을 수행할 수 있다.
트리플 삼각화(Triple triangulation)는 논-제로 채우기 규칙을 사용하여 N 개의 객체들에 대한 동시 드로잉 프로세스를 수행할 때, 하나의 객체에 대한 세 가지의 동작들을 수행하는 것이다. 상술한 바와 같이, N 개의 객체들은 하나의 렌더링 객체로 그룹화되어 하나의 버퍼로서 저장될 수 있다. 렌더링되는 각 경로 객체에 대해, 하기와 같은 세 개의 삼각화 타입들이 존재할 수 있다.
1. 객체 지오메트리(geometry)를 스텐실
2. 스텐실 된 지오메트리를 커버
3. 스텐실 단계와 커버 단계 동안 수정된 스텐실 값을 클리어(Clear)
도 12은 N 개의 객체를 포함하는 하나의 렌더링 객체의 트리플 삼각화 과정을 나타낸다.
렌더링 장치(100)는 객체1에 대한 스텐실 지오메트리(stencil geometry)를 수행(1210)할 수 있다. 그 다음, 렌더링 장치(100)는 객체1에 대한 커버 지오메트리(cover geometry)를 수행(1220)할 수 있다. 그 다음, 렌더링 장치(100)는 객체1에 대한 클리어 지오메트리(clear geometry)를 수행(1230)할 수 있다.
그 다음, 렌더링 장치(100)는 객체 2에 대한 스텐실 지오메트리, 커버 지오메트리, 클리어 지오메트리를 순차적으로 수행한다.
마지막 단계에서, 렌더링 장치(100)는 객체N에 대한 스텐실 지오메트리를 수행(1260)할 수 있다. 그 다음, 렌더링 장치(100)는 객체N에 대한 커버 지오메트리를 수행(1270)할 수 있다. 그 다음, 렌더링 장치(100)는 객체N에 대한 클리어 지오메트리(1280)를 수행할 수 있다.
렌더링 장치(100)는 하나의 렌더링 객체로서 포함된 모든 객체들에 대해, 트리플 삼각화 처리하여, 공통된 하나의 렌더링 버퍼에 기록될 수 있다. 이러한 프로세스는 경로 굽기(paths baking)이라고 불린다.
도13은 경로 굽기 과정의 흐름도를 나타낸다.
단계 1310에서, 렌더링 장치(100)는 그룹 ID를 수신받고, 현재 그룹과 관련된 객체들을 획득할 수 있다.
단계 1320에서, 렌더링 장치(100)는 렌더링에 필요한 렌더링 데이터 버퍼를 생성한다.
단계 1330에서, 렌더링 장치(100)는 렌더링 할 다음 객체가 존재하는지 판단할 수 있다. 렌더링할 다음 객체가 없으면 단계 1331로 넘어가고, 다음 객체가 존재하면 단계 1340으로 넘어간다.
단계 1331에서, 렌더링 장치(100)는 GPU 상의 데이터를 렌더링하기 위한 버퍼를 생성할 수 있다.
단계 1332에서, 렌더링 데이터는 CPU에서 GPU로 복사될 수 있다.
단계 1333에서, 렌더링 장치(100)는 그룹과 GPU 버퍼를 연관시킬 수 있다.
단계 1334에서, 렌더링 장치(100)는 객체를 구워진(baked) 것으로 표시할 수 있다.
단계 1340에서, 렌더링 장치(100)는 객체에 대한 깊이 오프셋(depth offset)을 설정할 수 있다.
단계 1350에서, 렌더링 장치(100)는 객체 내에 처리할 다음 세그먼트가 있는지 판단하고, 있으면 단계 1360으로 넘어가고 없으면 단계 1370으로 넘어갈 수 있다.
단계 1361에서, 렌더링 장치(100)는 삼각형들 상의 세그먼트를 분해할 수 있다.
단계 1362에서, 렌더링 장치(100)는 삼각형 와인딩을 설정할 수 있다.
단계 1363에서, 렌더링 장치(100)는 스텐실 삼각형들에 대한 정점들을 생성할 수 있다.
단계 1364에서, 렌더링 장치(100)는 렌더링 데이터 버퍼에 정점들을 할당할 수 있다. 할당이 끝나면 다시 단계 1350으로 넘어간다.
단계 1371에서, 렌더링 장치(100)는 커버 삼각형들에 대한 정점들을 생성할 수 있다.
단계 1372에서, 렌더링 장치(100)는 렌더링 데이터 버퍼에 정점들을 할당할 수 있다.
단계 1373에서, 렌더링 장치(100)는 클리어 삼각형들에 대한 정점들을 생성할 수 있다.
단계 1374에서, 렌더링 장치(100)는 렌더링 데이터 버퍼에 정점들을 할당할 수 있다. 할당이 끝나면, 다시 단계 1330으로 넘어간다.
렌더링 장치(100)는 굽기 프로세스를 통해, 각 경로에 대해 트리플 삼각화를 생성하고 GPU에 의한 하나의 드로우 동작 내에서 렌더링하기 위한 하나의 버퍼에 칼라가 설정되어야 하는 픽셀에 대한 정보들을 축적시킬 수 있다.
스텐실 지오메트리 삼각화(stencil geometry triangulation)는 서로 다른 와인딩 방향의 삼각형들로 구성될 수 있다. 렌더링 장치(100)는 공통 정점로부터 시작하는 어떠한 객체에 대한 삼각화를 생성할 수 있고, 객체를 구성하는 삼각형들은 서로 다른 와인딩의 삼각형들을 포함할 수 있다. 렌더링 장치(100)는 스텐실 버퍼를 사용하여 스텐실 테스트를 수행할 수 있다. 렌더링 장치(100)는 삼각형 와인딩에 기초하여, 스텐실 버퍼를 사용한 논-제로 채우기 규칙을 분석하기 위해 오버드로우 카운팅을 수행하면서 스텐실 값을 증가시키거나 감소시킬 수 있다.
커버 지오메트리 삼각화(cover geometry triangulation)는 공통된 와인딩 방향의 삼각형들로 구성될 수 있다. 그룹 내의 각 객체에 대해, 커버 지오메트리는 상술한 바와 같이, 렌더링된 장면 내의 위치를 결정하는 특정 Z-오프셋 값을 획득할 수 있다. 렌더링 장치(100)는 칼라를 설정해야 하는지 여부를 결정해야 하는 현재 픽셀에 대해 스텐실 테스트 및 깊이 테스트를 수행할 수 있다. 렌더링 장치(100)는 스텐실 테스트를 통해, 스텐실 버퍼의 현재 픽셀의 위치에 기록된 값이 0이 아니면 통과될 수 있다. 만약 스텐실 테스트가 통과된다면, 오버래핑(overlapping) 영역 문제를 해결하기 위해 깊이 테스트가 수행될 수 있다. 만약 현재 픽셀이 스텐실 테스트와 깊이 테스트를 통과한다면, 현재 픽셀은 칼라가 설정되어야 하는 것으로 결정되고, 칼라(color) 또는 프레임 버퍼(frame buffer)에 기록될 수 있다. 커버 단계는 클리어 단계의 준비를 위해 스텐실 버퍼를 수정할 수 있다.
클리어 지오메트리 삼각화(Clear geometry triangulation)는 공통된 와인딩 방향의 삼각형들로 구성될 수 있다. 렌더링 장치(100)는 스텐실 버퍼 내의 커버 단계의 스텐실 테스트와 깊이 테스트를 통과한 픽셀들이 있는 위치에서의 값을 초기 상태로 복귀시킬 수 있다.
도14는 렌더링 장치가 커버 지오메트리를 구성하는 방법의 흐름도를 나타낸다.
단계 1410에서, 렌더링 장치(100)는 현재 픽셀에 대한 와인딩을 체크할 수 있다. 와인딩은 정점이 나열된 방향으로 시계 방향과 반 시계 방향이 있을 수 있다.
단계 1420에서, 렌더링 장치(100)는 체크된 와인딩에 기초하여 스텐실 테스트와 동작을 선택할 수 있다.
단계 1430에서, 렌더링 장치(100)는 스텐실 테스트를 수행할 수 있다. 렌더링 장치(100)는 스텐실 버퍼의 값을 참조할 수 있다. 스텐실 테스트를 통과하지 못하면 단계 1440으로 넘어가고, 스텐실 테스트를 통과하면 단계 1450으로 넘어간다.
단계 1440에서, 렌더링 장치(100)는 현재 픽셀에 대한 스텐실 값을 변경할 수 있다.
단계 1450에서, 렌더링 장치(100)는 현재 픽셀에 대한 깊이 테스트를 수행할 수 있다. 깊이 테스트는 깊이 버퍼를 이용하여 수행될 수 있다. 깊이 테스트를 통과하지 못하면 단계 1460으로 넘어가고, 깊이 테스트를 통과하면 단계 1470으로 넘어간다.
단계 1460에서, 렌더링 장치(100)는 깊이 테스트를 통과하지 못한 현재 픽셀에 대한 스텐실 값을 변경할 수 있다.
단계 1470에서, 렌더링 장치(100)는 스텐실 버퍼 내의 스텐실 값을 변경할 수 있다.
단계 1480에서, 렌더링 장치(100)는 픽셀에 대한 깊이 값을 깊이 버퍼에 기록할 수 있다.
단계 1490에서, 렌더링 장치(100)는 칼라가 설정되어야 하는 픽셀을 칼라/프레임 버퍼에 기록할 수 있다.
도 15은 렌더링 장치가 트리플 삼각화를 수행하는 방법의 전체적인 흐름도를 나타낸다.
렌더링 장치(100)는 렌더링 프로세스 동안 트리플 삼각화를 사용할 수 있다. 각 삼각화(스텐실 지오메트리 삼각화, 커버 지오메트리 삼각화, 클리어 지오메트리 삼각화)는 다른 스텐실 테스트와 깊이 테스트 루트를 거칠 수 있다. 렌더링 장치(100)는 그룹 내의 픽셀 마다의 또한 객체마다의 스텐실 테스트와 깊이 테스트의 루트를 다르게 결정할 수 있다. 도15의 흐름도는 렌더링 객체의 하나의 객체에 대한 렌더링 프로세스에서, 스텐실, 깊이 및 칼라 값을 설정하기 위해 거쳐야 하는 결정 프로세스를 나타낼 수 있다.
단계 1510에서, 렌더링 장치(100)는 스텐실 지오메트리(stencil geometry)를 생성할 수 있다.
단계 1511에서, 렌더링 장치(100)는 현재 픽셀에 대해 스텐실 테스트를 수행할 수 있다. 스텐실 테스트를 통과한 픽셀은 단계 1512로 넘어간다.
단계 1512에서, 현재 픽셀은 깊이 버퍼에서 항상 탈락하게 되고, 단계 1513으로 넘어간다.
단계 1513에서, 렌더링 장치(100)는 스텐실 버퍼의 값을 변경할 수 있다. 단계 1513에서, 스텐실 버퍼의 값이 변경되면, 렌더링 장치(100)는 단계 1510을 멈추고 단계 1520로 넘어갈 수 있다.
단계 1520에서, 렌더링 장치(100)는 커버 지오메트리(cover geometry)를 생성할 수 있다.
단계 1521에서, 렌더링 장치(100)는 스텐실 테스트를 수행할 수 있다. 스텐실 테스트를 통과하지 못하면 단계 1522로 넘어가고 통과하면 단계 1523으로 넘어간다.
단계 1522에서, 렌더링 장치(100)는 스텐실 버퍼의 값을 변경할 수 있다. 단계 1522에서, 스텐실 버퍼의 값이 변경되면, 렌더링 장치(100)는 단계 1520을 멈추고 단계 1530로 넘어갈 수 있다.
단계 1523에서, 렌더링 장치(100)는 현재 픽셀에 대한 깊이 테스트를 수행할 수 있다. 깊이 테스트를 통과하지 못하면 단계 1522로 넘어가고, 깊이 테스트를 통과하면 단계 1524로 넘어간다.
단계 1524에서, 렌더링 장치(100)는 스텐실 버퍼의 값을 변경할 수 있다.
단계 1525에서, 렌더링 장치(100)는 픽셀에 대한 깊이 값을 깊이 버퍼에 기록한다.
단계 1526에서, 렌더링 장치(100)는 칼라 값이 설정되어야 하는 픽셀에 대한 정보를 칼라/프레임 버퍼에 기록할 수 있다. 칼라 값이 설정되어야 하는 픽셀에 대한 정보가 칼라/프레임 버퍼에 기록되면, 렌더링 장치(100)는 단계 1520을 멈추고 단계 1530으로 넘어갈 수 있다.
단계 1520에서, 렌더링 장치(100)는 클리어 지오메트리(clear geometry)를 생성할 수 있다.
단계 1531, 1532, 1533에 대한 설명은 단계 1511,1512, 1523 에 대한 설명과 동일하므로 생략한다.
단계 1533에서 스텐실 버퍼의 값이 변경되면, 렌더링 장치(100)는 트리플 삼각화의 과정을 멈춘다.
상술한 바와 같이, 렌더링 장치(100)의 결정부(120)는 깊이 버퍼(Z-버퍼)를 사용함으로서, 하나의 드로우 동작 내의 모든 경로의 렌더링 프로세스 동안에, 경로들 사이의 오버래핑 영역을 분석하고 오버래핑 영역 간의 경쟁을 방지할 수 있다. 또한, 깊이-버퍼를 사용함으로서, 커버 단계에서 각 경로 객체는 특정의 Z-오프셋 값을 획득할 수 있다. 획득된 Z-오프셋 값은 장면 내의 경로들이 발생하는 순서에 기초하여 설정될 수 있다. Z-오프셋과 Z-테스트로 드로잉의 최적화를 수행할 수 있다. 즉, 렌더링 장치(100)는 앞에 위치한 경로 객체(즉, 깊이 값이 작은 경로 객체)부터 드로잉함으로서, 오버래핑 영역을 오버드로잉하는 것을 피할 수 있다. 렌더링 장치(100)는 Z-테스트를 수행함으로서, 최종 장면에서 보여지지 않는 영역들은 렌더링 프로세스에서 드롭할 수 있다.
렌더링 장치(100)는 적절하게 스텐실 버퍼와 깊이 버퍼의 상태를 설정할 수 있다. OpenGL API 를 사용한 스텐실 및 깊이 함수와 동작들의 예는 하기와 같다.
glClearDepth (0);
glDepthFunc(GL GREATER);
glClearStencil(0);
glStencilOpSeparate(GL BACK, GL DECR WRAP, GL DECR WRAP, GL DECR WRAP);
glStencilOpSeparate(GL FRONT , GL INCR WRAP , GL INCR WRAP , GL REPLACE);
glStencilFuncSeparate(GL BACK, GL NEVER, 0 , 0xFF);
glStencilFuncSeparate(GL FRONT , GL LEQUAL, 1 , 0xFF);
상술한 OpenGL API를 사용하여, 일 실시 예에 따른 렌더링 장치(100)는 스텐실 버퍼의 디폴트 상태를 0으로 설정하고, 깊이 버퍼의 값을 0으로 설정하고 트리플 삼각화를 수행할 수 있다.
1. 스텐실 지오메트리(Stencil Geometry)
삼각형들 와인딩 방향에 기초하여, 스텐실 값들은 증가하거나 감소할 수 있다. 후면(Back-face) 삼각형들은 항상 스텐실 테스트에서 떨어지고 스텐실 값을 감소시킨다. 앞면(Front-face) 삼각형들은 스텐실 테스트를 떨어지거나 통과하므로 스텐실 값을 증가시킨다. 이러한 삼각형들은 깊이 테스트(Z-오프셋 < 0)를 항상 떨어지도록 구성될 수 있다. 최종 결과로서, 스텐실 버퍼는 [0. 255]의 범위의 값들로 구성되고 깊이 버퍼 값들은 0이 된다.
2. 커버 지오메트리(Cover Geometry)
스텐실 테스트에서 통과하지 못한 픽셀들의 스텐실 값은 0부터 1까지 증가할 수 있다. 스텐실 테스트를 통과하는 픽셀들은 깊이 테스트를 거칠 수 있다. 깊이 테스트를 통과하면, 상기 값들은 깊이 버퍼와 칼라/프레임 버퍼에 기록될 수 있다. 스텐실 값은 1로 설정된다. 깊이 테스트에서 떨어지면, 깊이 또는 칼라 버퍼에 쓸 것이 없고, 스텐실 값은 증가할 수 있다. N번째부터 첫 번째 객체까지 드로우할 때 수행되는 깊이 테스트를 통해 픽셀들은 탈락될 수 있다.
3. 클리어 지오메트리(Clear Geometry)
커버 지오메트리는 후면 삼각형들로부터 구성된다. 스텐실 테스트가 항상 실패함에 따라, 스텐실 버퍼의 모든 값들은 감소하고, 스텐실 버퍼를 디폴트 상태로 복귀시킨다 - 첫 번째부터 N 번째 경로를 드로우하는 경우에
이러한 컨피규레이션에서, 앞쪽에 위치한 객체부터 드로잉(N번째부터 첫 번째 경로까지 드로우)하는 것은 오버랩 영역들에서의 스텐실 버퍼 내의 값들을 예측 불가능하게 만들 수 있다. 스텐실 테스트를 통과하고 깊이 테스트를 통과하지 못하는 경우, 스텐실 값은 1로 교체되는 것 대신 증가할 수 있다. 따라서, 렌더링 객체의 렌더링 후에 명시적으로 스텐실 버퍼에 대한 클리어(Clear) 동작이 요구될 수 있다.
도16는 CPU, GPU 및 메모리의 관계를 나타낸다.
CPU(1610)는 렌더링에 필요한 명령어 및 데이터를 GPU(1630)에 전달하고, GPU(1630)는 전달받은 명령어 및 데이터에 기초하여 렌더링을 수행할 수 있다.
일 실시 예에 따른 렌더링 장치(100)는 CPU(1610) 내에 또는 GPU(1630) 내에 위치할 수 있으나 이에 제한되지 않는다.
한편, 상술한 렌더링 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
일 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (15)

  1. 하나의 장면(scene) 내에서 렌더링이 수행될 복수의 객체들을 그룹화하여 그룹을 생성하는 그룹화부;
    상기 그룹에 포함된 복수의 객체들 각각에 대응하는 스텐실 버퍼(Stencil buffer) 및 깊이 버퍼(depth buffer) 중 적어도 하나를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 결정부; 및
    상기 컬러를 설정하기로 결정된 픽셀에 대한 정보를 저장하는 렌더링 버퍼를 포함하는 렌더링 장치.
  2. 제1항에 있어서, 상기 그룹화부는,
    N개의 객체들을 포함하는 그룹을 생성하고, Z-버퍼를 사용하여 상기 N개의 객체들의 렌더링 순서를 결정하고,
    상기 N은 2 이상의 자연수인 것을 특징으로 하는 렌더링 장치.
  3. 제2항에 있어서, 상기 N개의 객체들의 렌더링 순서는,
    상기 N개의 객체들 각각의 깊이 값에 기초하여 상기 N개의 객체들을 나열한 순서에 대응하고,
    상기 깊이 값은 객체들 간의 상대적인 깊이 값을 나타내는 정보인 것을 특징으로 하는 렌더링 장치.
  4. 제1항에 있어서, 상기 결정부는,
    제1객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하고,
    제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼 및 상기 깊이 버퍼 중 적어도 하나를 사용하여, 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하고,
    상기 제 1 객체 및 상기 제 2 객체는 각각 상기 그룹에 포함된 복수의 객체들 중 어느 하나를 포함하고, 상기 제 1 객체의 렌더링이 수행된 후에 상기 제 2 객체의 렌더링이 수행되는 것을 특징으로 하는 렌더링 장치.
  5. 제4항에 있어서, 상기 결정부는,
    상기 제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼에 기초하여, 상기 장면에 포함된 픽셀들 중 컬러 설정 여부를 결정하여야 하는 현재 픽셀에 대해 제1테스트를 수행하고, 상기 현재 픽셀이 상기 제1테스트를 통과하지 못하면 상기 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정하고,
    상기 현재 픽셀이 상기 제1테스트를 통과하면, 상기 깊이 버퍼 내에 기록된 상기 현재 픽셀 위치에 대한 깊이 정보에 기초하여, 상기 현재 픽셀에 대해 칼라를 설정할 지 여부를 결정하는 제2테스트를 수행하고, 상기 제2테스트를 통과하지 못하면, 상기 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정하고, 상기 제2테스트를 통과하면 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 하는 렌더링 장치.
  6. 제5항에 있어서,
    상기 스텐실 버퍼에 기록된 기하학적 정보는, 상기 장면 내에 포함된 픽셀들 각각의 위치와 상기 복수의 객체들 중 어느 하나에 포함된 정점(vertex)들이 연결된 적어도 하나의 경로 진행 방향 사이의 관계에 기초하여 연산된 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)에 대한 정보를 포함하고,
    상기 제1테스트는 상기 주회 횟수가 0이 아닌 값을 가질 경우, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 하는 렌더링 장치.
  7. 제5항에 있어서,
    상기 제2테스트는, 상기 현재 픽셀의 깊이 값이 상기 깊이 버퍼 내에 기록된 상기 현재 픽셀의 위치에 대한 깊이 값보다 크다면, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 하는 렌더링 장치.
  8. 하나의 장면(scene) 내에서 렌더링이 수행될 복수의 객체들을 그룹화하여 그룹을 생성하는 단계;
    상기 그룹에 포함된 복수의 객체들 중 각각의 객체에 대한 렌더링을 위한 렌더링 버퍼를 생성하는 단계;
    상기 그룹에 포함된 복수의 객체 각각에 대응하는 스텐실 버퍼(Stencil buffer) 및 깊이 버퍼(depth buffer) 중 적어도 하나를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계; 및
    상기 컬러를 설정하기로 결정된 픽셀에 대한 정보를 상기 렌더링 버퍼에 저장하는 단계를 포함하는 렌더링 방법.
  9. 제8항에 있어서, 상기 그룹은 N개의 객체들을 포함하는 그룹이고,
    상기 그룹을 생성하는 단계는, Z-버퍼를 사용하여 상기 N개의 객체들의 렌더링 순서를 결정하는 단계를 더 포함하고,
    상기 N은 2 이상의 자연수인 것을 특징으로 하는 렌더링 방법.
  10. 제9항에 있어서, 상기 N개의 객체들의 렌더링 순서는,
    상기 N개의 객체들 각각의 깊이 값에 기초하여 상기 N개의 객체들을 나열한 순서에 대응하고,
    상기 깊이 값은 객체들 간의 상대적인 깊이 값을 나타내는 정보인 것을 특징으로 하는 렌더링 방법.
  11. 제8항에 있어서,
    상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계는,
    제1객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼를 사용하여 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계; 및
    제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼 및 상기 깊이 버퍼 중 적어도 하나를 사용하여, 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계를 포함하고,
    상기 제 1 객체 및 상기 제 2 객체는 각각 상기 그룹에 포함된 복수의 객체들 중 어느 하나를 포함하고, 상기 제 1 객체의 렌더링이 수행된 후에 상기 제 2 객체의 렌더링이 수행되는 것을 특징으로 하는 렌더링 방법.
  12. 제11항에 있어서, 상기 제2객체의 렌더링을 위해, 상기 장면에 포함된 픽셀들 각각에 컬러를 설정할지 여부를 결정하는 단계는,
    상기 제2객체를 구성하는 삼각형들에 대한 기하학적 정보가 기록된 상기 스텐실 버퍼에 기초하여, 상기 장면에 포함된 픽셀들 중 컬러 설정 여부를 결정하여야 하는 현재 픽셀에 대해 제1테스트를 수행하는 단계;
    상기 현재 픽셀이 상기 제1테스트를 통과하지 못하면 상기 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정하는 단계;
    상기 현재 픽셀이 상기 제1테스트를 통과하면, 상기 깊이 버퍼 내에 기록된 상기 현재 픽셀 위치에 대한 깊이 정보에 기초하여, 상기 현재 픽셀에 대해 칼라를 설정할 지 여부를 결정하는 제2테스트를 수행하는 단계;
    상기 제2테스트를 통과하지 못하면, 상기 현재 픽셀에 대해 컬러를 설정하지 않는 것으로 결정하는 단계; 및
    상기 제2테스트를 통과하면 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 단계를 포함하는 것을 특징으로 하는 렌더링 방법.
  13. 제12항에 있어서,
    상기 스텐실 버퍼에 기록된 기하학적 정보는, 상기 장면 내에 포함된 픽셀들 각각의 위치와 상기 복수의 객체들 중 어느 하나에 포함된 정점(vertex)들이 연결된 적어도 하나의 경로 진행 방향 사이의 관계에 기초하여 연산된 상기 픽셀들 각각에 대응하는 주회 횟수(winding number)에 대한 정보를 포함하고,
    상기 제1테스트는 상기 주회 횟수가 0이 아닌 값을 가질 경우, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 하는 렌더링 방법.
  14. 제12항에 있어서,
    상기 제2테스트는, 상기 현재 픽셀의 깊이 값이 상기 깊이 버퍼 내에 기록된 상기 현재 픽셀의 위치에 대한 깊이 값보다 크다면, 상기 현재 픽셀에 대해 컬러를 설정하는 것으로 결정하는 것을 특징으로 하는 렌더링 방법.
  15. 제8항 내지 14항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020160029111A 2016-03-10 2016-03-10 렌더링 수행 방법 및 장치 KR20170105885A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160029111A KR20170105885A (ko) 2016-03-10 2016-03-10 렌더링 수행 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160029111A KR20170105885A (ko) 2016-03-10 2016-03-10 렌더링 수행 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20170105885A true KR20170105885A (ko) 2017-09-20

Family

ID=60033892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160029111A KR20170105885A (ko) 2016-03-10 2016-03-10 렌더링 수행 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20170105885A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114281441A (zh) * 2020-09-28 2022-04-05 西安诺瓦星云科技股份有限公司 画面显示方法和装置
CN114332311A (zh) * 2021-12-05 2022-04-12 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质
CN114972598A (zh) * 2022-05-17 2022-08-30 北京优锘科技有限公司 三维场景中相机可视区域渲染方法、装置、介质和设备
KR20230013339A (ko) 2021-07-19 2023-01-26 주식회사 케이티 애니메이팅 제어 장치, 방법 및 컴퓨터 프로그램
CN117496001A (zh) * 2024-01-02 2024-02-02 埃洛克航空科技(北京)有限公司 一种渲染自定义几何体依附模型的方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114281441A (zh) * 2020-09-28 2022-04-05 西安诺瓦星云科技股份有限公司 画面显示方法和装置
KR20230013339A (ko) 2021-07-19 2023-01-26 주식회사 케이티 애니메이팅 제어 장치, 방법 및 컴퓨터 프로그램
CN114332311A (zh) * 2021-12-05 2022-04-12 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质
CN114332311B (zh) * 2021-12-05 2023-08-04 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质
CN114972598A (zh) * 2022-05-17 2022-08-30 北京优锘科技有限公司 三维场景中相机可视区域渲染方法、装置、介质和设备
CN114972598B (zh) * 2022-05-17 2024-04-02 北京优锘科技有限公司 三维场景中相机可视区域渲染方法、装置、介质和设备
CN117496001A (zh) * 2024-01-02 2024-02-02 埃洛克航空科技(北京)有限公司 一种渲染自定义几何体依附模型的方法及装置
CN117496001B (zh) * 2024-01-02 2024-04-26 埃洛克航空科技(北京)有限公司 一种渲染自定义几何体依附模型的方法及装置

Similar Documents

Publication Publication Date Title
CN105321199B (zh) 图形处理流水线及其操作方法与介质
US8704830B2 (en) System and method for path rendering with multiple stencil samples per color sample
KR20170105885A (ko) 렌더링 수행 방법 및 장치
US10607400B2 (en) Graphics processing systems using a vertex shader to render plural images
US20130120391A1 (en) Triangulation for Accelerated Multi-Resolution Rendering of Stroked Paths
US10497085B2 (en) Graphics processing method and system
CN110036414B (zh) 在z-剔除之后去除或识别重叠片段
US20100231588A1 (en) Method and apparatus for rendering instance geometry
EP2317479A1 (en) Infinite complexity deep-framebuffer rendering
US10083514B2 (en) Stencil-then-cover path rendering with shared edges
US9558573B2 (en) Optimizing triangle topology for path rendering
US9773341B2 (en) Rendering cover geometry without internal edges
US20080122866A1 (en) Graphics system employing shape buffer
CN117501312A (zh) 图形渲染的方法及装置
CN104050619B (zh) 具有共享边缘的模板然后覆盖路径渲染
CN106846452A (zh) 一种gpu上针对延迟着色反走样绘制的优化方法
KR101467735B1 (ko) 볼륨데이터를 위한 4차원 실시간 렌더링 방법 및 장치
CN116670719A (zh) 一种图形处理方法、装置及电子设备
US10255717B2 (en) Geometry shadow maps with per-fragment atomics
US20240087078A1 (en) Two-level primitive batch binning with hardware state compression
US20220245883A1 (en) Method and system of decoupled object space shading
US20220319091A1 (en) Post-depth visibility collection with two level binning