KR20160112925A - Method and apparatus for performing tile-based rendering - Google Patents
Method and apparatus for performing tile-based rendering Download PDFInfo
- Publication number
- KR20160112925A KR20160112925A KR1020160001614A KR20160001614A KR20160112925A KR 20160112925 A KR20160112925 A KR 20160112925A KR 1020160001614 A KR1020160001614 A KR 1020160001614A KR 20160001614 A KR20160001614 A KR 20160001614A KR 20160112925 A KR20160112925 A KR 20160112925A
- Authority
- KR
- South Korea
- Prior art keywords
- tile
- tiles
- bezier curve
- rendering
- test
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
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
타일 기반 렌더링을 수행하는 방법 및 장치를 개시한다.A method and apparatus for performing tile-based rendering is disclosed.
근래에 벡터 그래픽스(vector graphics) 또는 경로 렌더링(path rendering)을 수행하는 경우 그래픽 처리 장치(Graphics Processing Unit, 이하 GPU 라고 함)의 가속 성능을 향상시키기 위한 방법이 연구되고 있다. 다만, 3차원 그래픽을 가속시키기 위해 모든 입력 데이터가 삼각형(triangle)으로 구성된다는 가정 하에 GPU의 하드웨어 구조가 설계되나, 경로 렌더링의 경우 입력 데이터가 삼각형들로 구성되지 않고 커맨드(command)와 정점(vertex) 들의 조합으로 구성되어 있다. 따라서, 경로 렌더링을 수행할 때에 GPU의 가속 성능을 향상시키기 어렵다.Recently, a method for improving the acceleration performance of a graphics processing unit (hereinafter referred to as a GPU) has been studied when vector graphics or path rendering is performed. However, in order to accelerate the 3D graphics, the hardware structure of the GPU is designed on the assumption that all the input data are composed of triangles. In the case of the path rendering, the input data is not composed of triangles, vertex). Therefore, it is difficult to improve the acceleration performance of the GPU when performing the path rendering.
예를 들어, GPU를 이용하여 하나의 커브를 그리기 위해서는, 먼저 CPU가 커브의 시작점을 중심으로 하여 커브를 다수의 삼각형들로 분할하고, OpenGL API를 이용하여 GPU에게 분할된 삼각형들을 커브로 재구성하도록 지시한다. 따라서, CPU가 커브를 다수의 삼각형들로 분할하는 데에 많은 시간이 소요되며, 많은 수의 OpenGL API를 호출할 때마다 GPU와의 통신이 필요하며, GPU 상에서 많은 상태 변화가 발생된다.For example, to draw a curve using the GPU, the CPU first divides the curve into a number of triangles around the starting point of the curve, and uses the OpenGL API to reconstruct the triangles into curves for the GPU Indicate. Therefore, it takes a long time for the CPU to divide the curve into multiple triangles, and communication with the GPU is required every time a large number of OpenGL API calls are made, and many state changes occur on the GPU.
타일 기반 렌더링을 수행하는 방법 및 장치를 제공하는 데 있다. 또한, 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.And to provide a method and apparatus for performing tile-based rendering. It is still another object of the present invention to provide a computer-readable recording medium on which a program for causing a computer to execute the above-described method is recorded.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.The technical problem to be solved by this embodiment is not limited to the above-described technical problems, and other technical problems can be deduced from the following embodiments.
일 실시예에 따른 타일 기반 렌더링(tile-based rendering)을 수행하는 방법은, 객체(object)의 기하학적 정보를 이용하여 상기 객체에 포함된 베지어 커브(Bezier curve)와 관련된 파라미터들을 연산하는 단계; 상기 파라미터들에 기초하여 프레임에 포함된 타일들을 분류하는 단계; 및 상기 타일들의 분류 결과에 기초하여 상기 타일 기반 렌더링을 수행하는 단계;를 포함한다.A method of performing tile-based rendering according to an exemplary embodiment includes computing parameters related to a Bezier curve included in the object using geometric information of the object; Classifying the tiles included in the frame based on the parameters; And performing the tile-based rendering based on the classification result of the tiles.
다른 실시예에 따른 컴퓨터로 읽을 수 있는 기록매체는 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.A computer-readable recording medium according to another embodiment includes a recording medium on which a program for causing a computer to execute the above-described method is recorded.
또 다른 실시예에 따른 타일 기반 렌더링(tile-based rendering)을 수행하는 장치는, 객체(object)의 기하학적 정보를 이용하여 상기 객체에 포함된 베지어 커브(Bezier curve)와 관련된 파라미터들을 연산하는 커브 전처리부; 상기 파라미터들에 기초하여 프레임에 포함된 타일들을 분류하는 분류부; 및 상기 타일들의 분류 결과에 기초하여 상기 타일 기반 렌더링을 수행하는 렌더링부;를 포함한다.According to another embodiment of the present invention, there is provided an apparatus for performing tile-based rendering, comprising: a curve generating unit for generating a curve for computing parameters related to a Bezier curve included in the object using geometric information of the object; A preprocessing unit; A classifier for classifying the tiles included in the frame based on the parameters; And a rendering unit that performs the tile-based rendering based on a classification result of the tiles.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.
도 2는 일 실시예에 따른 타일 기반 렌더링을 수행하는 방법의 일 예를 도시한 흐름도이다.
도 3a 내지 도 3b는 일 실시예에 따른 베지어 커브의 일 예를 설명하기 위한 도면들이다.
도 4는 일 실시예에 따른 베지어 커브와 관련된 파라미터의 예들을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 음함수 방정식 방식(implicit equation method)의 일 예를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 타일 기반 렌더링을 수행하는 방법의 다른 예를 도시한 흐름도이다.
도 7은 일 실시예에 따른 렌더링 장치의 다른 예를 도시한 구성도이다.
도 8은 일 실시예에 따른 전처리부가 동작하는 일 예를 나타내는 흐름도이다.
도 9는 일 실시예에 따른 분류부가 동작하는 일 예를 나타내는 흐름도이다.
도 10은 일 실시예에 따른 최대/최소 테스트 및 라인 테스트의 일 예를 설명하기 위한 흐름도이다.
도 11a 내지 도 11b는 일 실시예에 따른 최대/최소 테스트가 진행되는 과정에서 베지어 커브의 방향의 예들을 설명하기 위한 도면들이다.
도 12는 일 실시예에 따른 분류부가 타일을 분할하는 일 예를 설명하기 위한 흐름도이다.
도 13 내지 도 14b는 서브 타일링의 일 예를 설명하기 위한 도면들이다.
도 15는 일 실시예에 따른 렌더링부가 동작하는 일 예를 나타내는 흐름도이다.
도 16은 일 실시예에 따른 타일 기반 렌더링이 수행되는 일 예를 도시한 흐름도이다.
도 17a 내지 도 17e는 일 실시예에 따른 타일 기반 렌더링이 수행되는 일 예를 설명하기 위한 도면들이다.
도 18은 일 실시예에 따른 컴퓨팅 시스템의 일 예를 도시한 구성도이다.FIG. 1 is a configuration diagram illustrating an example of a rendering apparatus according to an embodiment.
2 is a flow diagram illustrating an example of a method for performing tile-based rendering in accordance with one embodiment.
3A and 3B are views for explaining an example of a Bezier curve according to an embodiment.
4 is a diagram for explaining examples of parameters related to a Bezier curve according to an embodiment.
FIG. 5 is a diagram for explaining an example of an implicit equation method according to an embodiment.
6 is a flowchart illustrating another example of a method of performing tile-based rendering according to an embodiment.
7 is a configuration diagram showing another example of a rendering apparatus according to an embodiment.
FIG. 8 is a flowchart illustrating an example of operation of the preprocessing unit according to an embodiment.
9 is a flowchart showing an example of the operation of the classifier according to an embodiment.
FIG. 10 is a flowchart illustrating an example of a maximum / minimum test and a line test according to an embodiment.
FIGS. 11A and 11B are views for explaining examples of a Bezier curve in a process of performing a maximum / minimum test according to an embodiment.
12 is a flowchart for explaining an example of dividing a tile according to an embodiment.
FIGS. 13 to 14B are views for explaining an example of subtilling.
15 is a flowchart illustrating an example of operation of a rendering unit according to an embodiment.
16 is a flowchart illustrating an example of performing tile-based rendering according to an embodiment.
17A to 17E are views for explaining an example in which tile-based rendering according to an embodiment is performed.
18 is a configuration diagram illustrating an example of a computing system according to an embodiment.
실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.Although the terms used in the embodiments have been selected in consideration of the functions in the present invention, it is possible to select general terms that are widely used at present. However, these may vary depending on the intention of the person skilled in the art or the precedent, the emergence of new technology. Also, in certain cases, there may be a term selected arbitrarily by the applicant, in which case the meaning thereof will be described in detail in the description of the corresponding invention. Therefore, the term used in the present invention should be defined based on the meaning of the term, not on the name of a simple term, but on the entire contents of the present invention.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.When an element is referred to as " including " an element throughout the specification, it is to be understood that the element may include other elements as well, without departing from the spirit or scope of the present invention. In addition, the term " "... Module " or the like means a unit for processing at least one function or operation, which may be implemented in hardware or software, or a combination of hardware and software.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily carry out the present invention. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
도 1은 일 실시예에 따른 렌더링 장치의 일 예를 도시한 구성도이다.FIG. 1 is a configuration diagram illustrating an example of a rendering apparatus according to an embodiment.
도 1을 참조하면, 렌더링 장치(100)는 전처리부(110), 분류부(120) 및 렌더링부(130)를 포함한다.Referring to FIG. 1, a
렌더링 장치(100)는 베지어 커브(Bezier curve)에 대한 타일 기반 렌더링(tile based rendering)을 수행한다. 또한, 렌더링 장치(100)는 타일의 끝점(endpoint)들 상에 소정의 테스트들을 선택적으로 수행할 수 있다. 따라서, 렌더링 장치(100)는 렌더링을 수행하는데 소모되는 연산 전력(computational power)을 감소시킬 수 있는바, 최적의 타일 비닝이 수행될 수 있다. 여기에서, 끝점은 타일의 모서리에 대응하는 포인트를 의미한다. 예를 들어, 타일의 형상이 사각형이라고 가정하면, 타일은 4개의 끝점들을 포함한다. The
렌더링 장치(100)는 루프-블린 테스트(loop-blinn test), 최대/최소 테스트(maximum-minimum text) 및 라인 테스트(line test)와 같은 음함수 방정식 방식들(implicit equation methods)를 이용하여 타일의 끝점들 전부가 베지어 커브의 내부에 위치하는지 또는 베지어 커브의 외부에 위치하는지를 결정한다. 또한, 렌더링 장치(100)는 타일의 사이즈에 기초하여 프레임에 포함된 타일들 각각을 서브 타일들로 분할할 수 있다. 여기에서, 루프-블린 테스트는 찰스 루프(Charles Loop)와 짐 블린(Jim Blinn)이 공동 저작한 “Resolution Independent Curve Rendering using Programmable Graphics Hardware”의 내용에 기초한 테스트를 의미한다.The
렌더링 장치(100)는 베지어 커브와 관련된 파라미터들을 연산할 수 있다. 이때, 베지어 커브는 외부 장치로부터 수신된 객체의 기하학적 정보(geometric information)를 이용하여 획득될 수 있다. 객체는 렌더링이 수행되는 대상을 의미한다. 렌더링 장치(100)는 연산된 파라미터들에 기초하여 프레임에 포함된 타일들 각각을 베지어 커브의 내부에 위치하는 타일(이하, ‘내부 타일’이라고 함), 외부에 위치하는 타일(이하, ‘외부 타일’이라고 함) 또는 부분적으로 내부에 위치하는 타일(이하, ‘부분 내부 타일’이라고 함)로 분류할 수 있다. 그리고, 렌더링 장치(100)는 분류 결과에 기초하여 베지어 커브에 대한 타일 기반 렌더링을 수행한다.Rendering
벡터 그래픽스 데이터는 메모리(미도시)에 저장될 수 있다, 또한, 벡터 그래픽스 데이터는 기하학적 프리미티브들(geometric primitives)에 의하여 구성된 하나 이상의 객체로 조작(manipulate)될 수 있다. 여기에서, 기하학적 프리미티브들(예를 들어, 포인트들, 라인들, 폴리곤들, 베지어 커브들 또는 텍스트 문자들)은 디지털 이미지 내에서의 벡터 그래픽스 데이터의 부분들을 나타내는 수학 방정식들에 기초한 것일 수 있다. 또한, 객체들은 2차원 또는 3차원 공간 상에 위치할 수 있다. 래스터 기반 영상 장치들(예를 들어, 디스플레이 장치들 또는 프린터들) 상에 벡터 그래픽스가 렌더링되기 위해서는, 객체들은 래스터라이제이션(rasterization)이라고 통용되는 프로세스에 따라 래스터 그래픽스 데이터(raster graphics data)로 변환된다.The vector graphics data may be stored in a memory (not shown), and the vector graphics data may be manipulated into one or more objects configured by geometric primitives. Here, the geometric primitives (e.g., points, lines, polygons, Bezier curves or text characters) may be based on mathematical equations representing parts of the vector graphics data in the digital image . Also, the objects may be located on a two-dimensional or three-dimensional space. In order for vector graphics to be rendered on raster-based imaging devices (e.g., display devices or printers), objects are converted to raster graphics data according to a process commonly referred to as rasterization do.
이미지 모델들에서 일반적으로 이용되는 객체의 한 종류가 베지어 커브이다. 2차 베지어 커브는 베지어 커브의 한 유형이고, 베지어 커브는 2차원 평면 또는 3차원 공간에서 3개의 컨트롤 포인트들(a, b, c)에 의하여 정의된다. 이때, 베지어 커브는 컨트롤 포인트 a에서 시작되며, 컨트롤 포인트 c에서 종료된다. 또한, 베지어 커브의 형상은 컨트롤 포인트 b의 위치에 의하여 영향을 받는다. 유리 2차 베지어 커브(rational quadratic Bezier curve)는 2차 다항식의 유리 분수(rational fraction)에 의하여 정의된 2차 베지어 커브다. 또한, 원뿔 베지어 커브(conic Bezier curve)는 타원, 포물선 또는 쌍곡선의 형태를 갖는 베지어 커브다. 일반적인 2차 베지어 커브는 원뿔 베지어 커브의 특별한 경우이다. 2차 베지어 커브는 변수 ‘t’에 의하여 정의되는 아래의 수학식 1에 의하여 나타낼 수 있다.One type of object commonly used in image models is the Bezier curve. The secondary Bezier curve is a type of Bezier curve, and the Bezier curve is defined by three control points (a, b, c) in a two-dimensional plane or three-dimensional space. At this time, the Bezier curve starts at control point a and ends at control point c. Also, the shape of the Bezier curve is influenced by the position of the control point b. The rational quadratic Bezier curve is a quadratic Bezier curve defined by the rational fraction of the second order polynomial. Also, a conic Bezier curve is a Bezier curve in the form of an ellipse, parabola or hyperbola. A typical secondary Bezier curve is a special case of a conic Bezier curve. The second Bezier curve can be represented by the following equation (1) defined by the variable " t ".
수학식 1에서 a, b 및 c는 베지어 커브의 컨트롤 포인트를 의미한다.In Equation (1), a, b and c denote control points of Bezier curves.
벡터 그래픽스에서 타일들을 렌더링하는 전통적인 방법들 중 하나가 타일 기반 렌더링 시스템이다. 타일 기반 렌더링 시스템은 프레임 버퍼를 타일들과 동일한 사이즈로 나누고, 타일 별로 장면 지오메트리(scene geometry)를 렌더링한다. 예를 들어, 타일 기반 렌더링 시스템은 타일 기반 렌더링 파이프라인을 진행할 수 있다. 타일 기반 렌더링 파이프라인에는 삼각형 또는 커브와 같은 각각의 프리미티브를 취하여, 프리미티브가 교차하는 각각의 타일 상에 놓는 비닝 단계가 포함된다. 또한, 타일 기반 렌더링 파이프라인에는, 상술한 비닝 단계가 수행된 이후에 어떤 타일들에 커브들 또는 프리미티브가 교차되는지를 검사(check)하는 단계와, 그 타일들에 대해서만 렌더링을 수행하는 단계가 포함된다. 벡터 그래픽스에서 타일들을 렌더링하는 전통적인 방법에 따르면, 각각의 프래그먼트(fragment)에 대하여 픽셀 검사를 수행하는 렌더러(renderer)가 필요하며, 렌더러는 과도한 연산 전력의 소모를 유발한다. 즉, 렌더러는 특정 타일의 프래그먼트가 베지어 커브의 내부에 위치하는지 또는 외부에 위치하는지를 결정하기 위하여 각각의 프래그먼트를 개별적으로 검사한다. One of the traditional methods of rendering tiles in vector graphics is the tile-based rendering system. The tile-based rendering system divides the frame buffer into the same size as the tiles and renders the scene geometry for each tile. For example, a tile-based rendering system may proceed with a tile-based rendering pipeline. The tile-based rendering pipeline includes a binning step of taking each primitive, such as a triangle or curve, and placing it on each tile where the primitive intersects. The tile-based rendering pipeline also includes a step of checking which tiles intersect the curves or primitives after the binning step is performed, and performing rendering only on those tiles do. According to the traditional method of rendering tiles in vector graphics, a renderer is required to perform pixel inspection for each fragment, which causes the renderer to consume excessive computational power. That is, the renderer checks each fragment individually to determine whether the fragment of a particular tile is located inside or outside the Bezier curve.
렌더링 장치(100)는, 음함수들을 이용하여, 장면(scene)내의 모든 포인트들에 대하여 수행되었던 검사를 타일들에 대하여 수행하는 검사로 대신하는 최적화된 프로세스를 수행한다. 예를 들어, 렌더링 장치(100)는 베지어 커브의 내부 또는 외부에 위치한 타일들을 식별하고, 식별된 타일들에 대해서만 픽셀 별 루프-블린 검사(per-pixel loop-blinn check)를 수행한다. 즉, 렌더링 장치(100)는 장면 내의 모든 픽셀들에 대하여 루프-블린 검사를 수행하지 않는다. 타일의 영역 전부가 베지어 커브의 내부 또는 외부에 위치하는 것으로 분류되지 않은 타일들에 대해서는, 렌더링 장치(100)는 그러한 타일들에 대하서만 픽셀 별 루프-블린 검사를 수행한다. 따라서, 타일 기반 렌더링이 수행되는 중에 소모되는 연산 전력이 감소한다. 또한, 렌더링 장치(100)는 복수의 바운딩 박스들(bounding boxes)을 생성하고, 바운딩 박스들을 비닝한다. 따라서, 렌더링 장치(100)는 단지 베지어 커브의 스트로크(즉, 외곽선을 그리는 것)을 위해서만 베지어 커브를 비닝하지 않고, 베지어 커브의 내부를 채우기(fill) 위해서 베지어 커브를 비닝한다. 다시 말해, 렌더링 장치(100) 베지어 커브의 내부에 컬러를 설정할 수 있다.The
도 2는 일 실시예에 따른 타일 기반 렌더링을 수행하는 방법의 일 예를 도시한 흐름도이다.2 is a flow diagram illustrating an example of a method for performing tile-based rendering in accordance with one embodiment.
도 2를 참조하면, 타일 기반 렌더링을 수행하는 방법은 도 1에 도시된 렌더링 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1에 도시된 렌더링 장치(100)에 관하여 이상에서 기술된 내용은 도 2의 타일 기반 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.Referring to FIG. 2, a method of performing tile-based rendering includes steps that are processed in a time-series manner in the
210 단계에서, 전처리부(110)는 객체의 기하학적 정보를 이용하여 객체에 포함된 베지어 커브와 관련된 파라미터를 연산한다. 예를 들어, 렌더링 장치(100)는 외부 장치로부터 객체의 기하학적 정보를 수신할 수 있다.In
베지어 커브와 관련된 파라미터의 예로는 바운딩 박스(bounding box), 컨벡스 홀(convex hull), 베지어 커브에 대응하는 루프-블린(loop-blinn) 데이터, 베지어 커브에 대응하는 극점(extreme point), 극점으로부터 컨벡스 홀까지 연결된 라인이 해당될 수 있다.Examples of parameters associated with Bezier curves include bounding boxes, convex hulls, loop-blinn data corresponding to Bezier curves, extreme points corresponding to Bezier curves, , And a line connected from the pole to the convex hole.
이하, 도 3a 내지 도 5를 참조하여, 베지어 커브 및 베지어 커브와 관련된 파라미터에 대하여 구체적으로 설명한다.Hereinafter, with reference to FIG. 3A to FIG. 5, parameters related to Bezier curves and Bezier curves will be described in detail.
도 3a 내지 도 3b는 일 실시예에 따른 베지어 커브의 일 예를 설명하기 위한 도면들이다. 3A and 3B are views for explaining an example of a Bezier curve according to an embodiment.
도 3a에는 베지어 커브의 오목한 영역이 채워진 베지어 커브(310)가 도시되어 있고, 도 3b에는 베지어 커브의 볼록한 영역이 채워진 베지어 커브(320)가 도시되어 있다.FIG. 3A illustrates a
도 3a 및 도 3b에 도시된 바와 같이, 베지어 커브는 컴퓨터 그래픽스 및 그와 관련된 분야에서 빈번하게 사용되는 파라메트릭 커브이다. 벡터 그래픽스에서, 베지어 커브들은 무한히 확대될 수 있는 매끄러운 커브를 모델링하는데 이용된다. 이미지 조작 프로그램들에서 일반적으로 언급되는 “경로”는 서로 연결된 베지어 커브들의 조합으로 표현된다. 베지어 커브들은 컨트롤 포인트들에 의하여 정의된다. 경로 렌더링의 2차원 컨텐트에서, 각각의 컨트롤 포인트는 2차원 지점에 위치한다. 경로에 포함된 휘어진 부분(curved segment)들은 2차 베지어 커브에 대한 경로 커맨드에 의하여 생성될 수 있다. 베지어 커브를 채우는(filling) 과정은 벡터 그래픽스 렌더링에서 중요하게 요구된다. 경로 렌더링 과정은 해상도에 무관한(resolution-independent) 방법이다. 즉, 장면은 프레임 버퍼의 픽셀 해상도에 관하지 않고 경로들에 의하여 도시된다. 경로 렌더링에서, 도 3a 및 도 3b에 도시된 바와 같은 2차원 그림이나 장면은 경로들의 배열(sequence)로 정해진다. 경로들 각각은 경로 커맨드들의 배열 및 그에 대응하는 스칼라 좌표의 세트에 의하여 정해진다. 경로 렌더링은 미술가가 펜이나 붓으로 그림을 그리는 과정과 유사하다. 경로는 서브 경로들의 조합으로 구성된다. 서브 경로들 각각(즉, 궤적(trajectory))는 라인 세그먼트들 및/또는 커브 세그먼트들의 연결된 배열이다. 서브 경로들 각각은 닫혀 있을 수 있다. 다시 말해, 스트로크(stroke)가 루프(loop)를 형성하는 것과 같이 서브 경로의 시작점과 종료점이 동일한 지점일 수 있다. 반대로, 서브 경로는 열려 있을 수 있다. 다시 말해, 서브 경로의 시작점과 종료점은 별개의 지점일 수 있다.As shown in FIGS. 3A and 3B, Bezier curves are parametric curves that are frequently used in computer graphics and related fields. In vector graphics, Bezier curves are used to model smooth curves that can be magnified infinitely. The "paths" commonly referred to in image manipulation programs are represented by a combination of Bezier curves linked together. Bezier curves are defined by control points. In the two-dimensional content of the path rendering, each control point is located at a two-dimensional point. The curved segments included in the path can be generated by the path command for the second Bezier curve. The filling process of Bezier curves is important in vector graphics rendering. The path rendering process is resolution-independent. That is, scenes are illustrated by paths rather than the pixel resolution of the frame buffer. In the path rendering, a two-dimensional picture or scene as shown in FIGS. 3A and 3B is defined as a sequence of paths. Each of the paths is defined by an array of path commands and a corresponding set of scalar coordinates. Route rendering is similar to the process by which an artist draws a picture with a pen or brush. The path consists of a combination of subpaths. Each of the sub-paths (i. E., The trajectory) is a concatenated array of line segments and / or curve segments. Each of the sub-paths may be closed. In other words, the starting and ending points of the subpath may be at the same point as the stroke forming the loop. Conversely, the subpath can be open. In other words, the starting and ending points of the subpath may be separate points.
특정 경로가 렌더링될 때, 경로는 스트로크되거나 채워지거나 또는 스트로크되고 채워질 수 있다. 도 3a 및 도 3b에 도시된 바와 같이, 장면을 구성하는 경로들은 채워질 수 있다. 일반적으로, 스트로킹 과정은, 채워진 영역의 외곽선을 스트로킹 하는 것과 같이, 채우는 과정이 수행된 직후에 수행된다. 채우는 과정은 경로의 닫힌 서브 경로들의 “내부”에 의치하는 픽셀들에 컬러를 설정하거나 색칠하는 과정을 의미한다. 채우는 과정은 어린이들이 도화지의 “라인들 사이에 색칠을 하는” 것과 유사한 과정이다.When a particular path is rendered, the path may be stroked, filled, or stroked and filled. As shown in Figs. 3A and 3B, the paths constituting the scene may be filled. In general, the stroking process is performed immediately after the filling process is performed, such as stroking the outline of the filled area. The filling process refers to the process of setting or coloring pixels on pixels that are " inside " the closed subpaths of the path. The filling process is a process similar to that in which children paint "between the lines" of the drawing paper.
렌더링 장치(100)는 당해 기술 분야에서의 일반적인 방법에 따라 베지어 커브를 채운다. 예를 들어, 렌더링 장치(100)는 “standard-fill” 방식 또는 “scan-line” 방식에 따라 채워질 수 있다.The
도 4는 일 실시예에 따른 베지어 커브와 관련된 파라미터의 예들을 설명하기 위한 도면이다.4 is a diagram for explaining examples of parameters related to a Bezier curve according to an embodiment.
도 4에 도시된 바와 같이, 그래픽 이미지 데이터는 4개의 끝점들(420)을 포함하는 동일한 크기의 타일들로 분할될 수 있다. 컨벡스 홀(410)은 2차 베지어 커브(430)의 3개의 컨트롤 포인트들을 잇는 3개의 라인들에 의하여 구성된다. 컨벡스 홀(410)은 모든 컨벡스(convex) 세트들의 교차점의 경계로 정의된다. 모든 컨벡스 세트들은 반 공간들(half spaces)의 교차점 또는 모든 버텍스들을 포함한다. 반 공간들은 평면을 구성하기 위하여 3개의 버텍스들을 한 번에 취하고, 한편에 다른 버텍스들을 갖음으로써 생성된다. 베지어 커브(430)의 전체는 컨벡스 홀(410)의 내부에 포함된다. 2차 베지어 커브(430)는 변수 ‘t’에 의하여 정의되는 아래의 수학식 2와 같이 나타낼 수 있다.As shown in FIG. 4, the graphical image data may be divided into tiles of equal size including four
수학식 2에서 a, b 및 c는 베지어 커브(430)의 컨트롤 포인트들을 의미한다.In Equation (2), a, b and c denote the control points of
베지어 커브(430)는 시계 방향으로 나열된 컨트롤 포인트들에 의하여 정해진다. 또한, 베지어 커브(430)의 루프-블린 파라미터는 (0, 0), (0, 0.5) 및 (1, 1)을 포함한다.The
또한, 베지어 커브(430)의 극점(440)은 아래의 수학식 3 및 4와 같이 베지어 방정식을 미분함으로써 획득된다.Also, the pole 440 of the
극점(440)이 획득되기 위해서는, 위의 수학식 4를 0으로 수렴한다. 최종적인 방정식은 아래의 수학식 5와 같다.In order for the pole 440 to be obtained, the above equation 4 is converged to zero. The final equation is shown in Equation 5 below.
수학식 5에 의하여 베지어 커브(430) 상의 2개의 극점들이 획득되는데, 하나는 x 축 방향이고, 다른 하나는 y축 방향이다. 유효한 극점(440)은 의 범위를 갖는다.Two poles are obtained on the
또한, 베지어 커브(430)의 시작점으로부터 종료점을 잇는 라인(즉, 기저(base)) 상의 어느 하나의 지점과 극점(440)이 만나는 라인(450)이 생성된다. 예를 들어, 베지어 커브(430)의 컨트롤 포인트들이 a, b 및 c라고 가정하면, 라인(450)의 최고점은 극점(440)에 대응한다. 또한, 라인(450)의 최저점은 컨트롤 포인트 a 로부터 컨트롤 포인트 c 까지 연결한 선의 어느 하나의 지점과 대응한다. 도 4에 도시된 바와 같이, 라인(450)은 베지어 커브(430)의 극점(440)으로부터 베지어 커브(430)의 기저(base) 상의 어느 하나의 지점까지 연결함에 따라 생성된다.In addition, a
바운딩 박스(460)는 당해 기술 분야의 일반적인 방식을 적용함으로써 컨트롤 포인트들의 최소 값 및 최대 값으로부터 설정된다. 예를 들어, 베지어 커브(430)의 컨트롤 포인트 삼각형(즉, 컨벡스 홀(410))은 maxY 및 minY를 찾은 이후에 비닝된다. 여기에서, maxY 및 minY는 베지어 커브(430)의 컨트롤 포인트들 중 어느 하나에 대응한다. Y축 방향으로의 이러한 범위에 의하여, 베지어 커브(430)의 컨벡스 홀(410)을 비닝하기 위하여 스캔 라인들(scan lines)과 수평 폭(horizontal span)이 생성된다. 이러한 범위들로부터, 교차하는 타일들은 1 (빈)로 획득된다. 그러나, 바운딩 박스(460)는 당해 기술 분야의 다른 방식에 따라 설정될 수도 있다.The
다시 도 2를 참조하면, 220 단계에서, 분류부(120)는 파라미터들에 기초하여 프레임에 포함된 타일들을 분류한다. 구체적으로, 분류부(120)는 전처리부(110)가 연산한 파라미터들을 이용하여 프레임에 포함된 타일들을 분류한다.Referring again to FIG. 2, in
예를 들어, 분류부(120)는 프레임에 포함된 타일들 중에서 끝점들(endpoints) 전부가 컨벡스 홀의 외부에 위치하는 적어도 하나의 타일을 제 1 위치 표식(position indicia)으로 분류한다. 여기에서, 끝점들은 타일의 모서리들에 대응하는 포인트들을 의미한다. For example, the
또한, 분류부(120)는 프레임에 포함된 타일들 중에서 끝점들 중 일부가 컨벡스 홀의 내부에 위치하는 타일들을 결정한다. 그리고, 분류부(120)는 결정된 타일들에 대하여 루프-블린 테스트를 수행하고, 루프-블린 테스트의 결과에 기초하여 타일들을 분류한다. In addition, the classifying
구체적으로, 루프-블린 테스트의 결과에 따라, 어느 타일의 끝점들 전부가 컨벡스 홀 및 베지어 커브의 내부에 위치하는 것으로 식별되면, 분류부(120)는 그 타일을 제 2 위치 표식으로 분류한다. 한편, 루프-블린 테스트의 결과에 따라, 어느 타일의 끝점들 전부가 베지어 커브의 외부에 위치하는 것으로 식별되면, 분류부(120)는 그 타일을 제 3 위치 표식으로 분류한다. 한편, 루프-블린 테스트의 결과에 따라, 어느 타일의 끝점들 중 일부가 베지어 커브의 내부에 위치하는 것으로 식별되면, 분류부(120)는 그 타일을 제 4 위치 표식으로 분류한다.Specifically, according to the results of the loop-blin test, if all of the end points of a tile are identified as being located inside the convex hole and the Bezier curve, the
도 5는 일 실시예에 따른 음함수 방정식 방식(implicit equation method)의 일 예를 설명하기 위한 도면이다.FIG. 5 is a diagram for explaining an example of an implicit equation method according to an embodiment.
도 5를 참조하면, 베지어 커브(510)의 내부 영역은 볼록 영역(520)이라고 하며, 아래의 수학식 6에 의하여 정의될 수 있다.5, an internal region of the
분류부(120)는 프레임(500)에 포함된 타일들 중에서 모든 끝점들이 볼록 영역(520)의 내부에 위치하는 타일들(540)을 결정하고, 그 타일들(540)을 내부 타일들로 표시한다. 이와 비슷하게, 베지어 커브(510)의 외부 영역은 오목 영역(530)이라고 하며, 아래의 수학식 7에 의하여 정의될 수 있다.The classifying
수학식 6 및 수학식 7의 u와 v는 루프-블린 테스트에 의하여 정의된다. 예를 들어, u와 v는 (0, 0), (0, 0.5) 및 (1, 1)가 될 수 있으나, 이에 한정되지 않는다. u와 v는 중간 값을 의미하며, 이러한 중간 값들은 컨벡스 홀의 보간(interpolation)이 수행됨에 따라 획득될 수 있다. 예를 들어, u와 v는 무게중심 보간(barycentric interpolation) 방식에 의하여 획득될 수 있다.U and v in Equations (6) and (7) are defined by a loop-blind test. For example, u and v may be (0, 0), (0, 0.5) and (1, 1), but are not limited thereto. u and v mean an intermediate value, which can be obtained as the interpolation of the convex hole is performed. For example, u and v can be obtained by a barycentric interpolation method.
분류부(120)는 프레임(500)에 포함된 타일들 중에서 모든 끝점들이 오목 영역(530)의 외부에 위치하는 타일들을 외부 타일들로 표시한다.The
이하에서는, 아래와 같은 원칙에 따라 서술한다.Hereinafter, the following principle will be described.
먼저, 베지어 커브(510)의 내부 영역은 볼록 영역(520)으로 정의한다. 만약, 타일의 모든 끝점들이 볼록 영역에 포함되었다면, 그 타일은 베지어 커브(510)의 내부에 위치하는 것으로 한다.First, the inner region of the
다음으로, 베지어 커브(510)의 극점의 외부에 위치한 타일들은 베지어 커브(510)의 외부에 위치하는 것으로 한다.Next, the tiles located outside the poles of the
그 다음으로, 모든 끝점들이 베지어 커브(510)의 외부에 위치하는 타일은 베지어 커브(510)의 극점으로부터 컨벡스 홀의 기저까지 연결된 라인과 만나지 않고서는 베지어 커브(510)와는 절대 교차하지 않는다.Next, the tiles where all the end points are located outside the
다시 도 2를 참조하면, 230 단계에서, 렌더링부(130)는 타일들의 분류 결과에 기초하여 타일 기반 렌더링을 수행한다.Referring back to FIG. 2, in
도 6은 일 실시예에 따른 타일 기반 렌더링을 수행하는 방법의 다른 예를 도시한 흐름도이다.6 is a flowchart illustrating another example of a method of performing tile-based rendering according to an embodiment.
도 6을 참조하면, 타일 기반 렌더링을 수행하는 방법은 도 1에 도시된 렌더링 장치(100)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 1에 도시된 렌더링 장치(100)에 관하여 이상에서 기술된 내용은 도 6의 타일 기반 렌더링을 수행하는 방법에도 적용됨을 알 수 있다.Referring to FIG. 6, a method of performing tile-based rendering is comprised of steps that are processed in a time-series manner in the
610 단계에서, 렌더링 장치(100)는 베지어 커브에 대하여 사전 렌더링 파이프라인(pre-rendering pipeline)을 진행한다. 사전 렌더링 파이프라인은 베지어 커브에 대한 정보를 수신하는 과정을 포함한다. 다시 말해, 사전 렌더링 파이프라인은 외부 장치로부터 객체의 기하학적 정보를 수신하는 과정을 포함한다.In
620 단계에서, 렌더링 장치(100)는 커브 전처리(prepocessing) 단계를 수행한다. 다시 말해, 전처리부(110)는 베지어 커브와 관련된 파라미터를 연산한다. 베지어 커브와 관련된 파라미터에는, 도 4를 참조하여 상술한 바운딩 박스(460), 컨벡스 홀(410), 루프-블린 파타미터, 극점(440) 또는 극점(440)으로부터 컨벡스 홀(410)의 기저까지 연결된 라인(450)이 포함된다.In
630 단계에서, 렌더링 장치(100)는 타일 비닝을 수행한다. 다시 말해, 분류부(120)는 후술할 다양한 테스트들을 이용하여 프레임 버퍼의 타일들 각각이 내부 타일인지 아니면 외부 타일인지로 분류한다.In
640 단계에서, 렌더링 장치(100)는 타일에 대한 렌더링 파이프라인을 진행한다. 다시 말해, 렌더링부(130)는 타일 비닝이 수행되는 동안 연산된 파라미터들을 이용하여 타일들에 교차하는 베지어 커브(또는, 프리미티브들)을 렌더링 한다. 그리고, 렌더링부(130)는 렌더링 결과를 프레임 버퍼에 저장한다. 다시 말해, 렌더링부(130)는 분류 결과에 따라 프레임 버퍼의 타일들을 채운다. 예를 들어, 어떤 타일이 외부 타일로 분류되었다고 가정하면, 렌더링부(130)는 그 타일을 렌더링 하지 않고, 다음 타일로 넘어간다. 반대로, 어떤 타일이 내부 타일로 분류되었다고 가정하면, 렌더링부(130)는 그 타일을 채우기 위하여 쉐이더 방법(shader method)을 적용한다. 렌더링이 수행된 결과는 픽셀 쉐이더 또는 그래픽 처리 장치(GPU) 파이프 라인의 다른 유닛들을 통과할 수 있다.In
도 7은 일 실시예에 따른 렌더링 장치의 다른 예를 도시한 구성도이다.7 is a configuration diagram showing another example of a rendering apparatus according to an embodiment.
도 7을 참조하면, 렌더링 장치(101)는 전처리부(110), 분류부(120), 렌더링부(130) 및 제어부(140)를 포함한다. 또한, 렌더링 장치(101)는 그래픽 처리 장치(GPU)로 구현될 수 있다.Referring to FIG. 7, the
전처리부(110)는 베지어 커브와 관련된 파라미터들을 연산한다. 이때, 베지어 커브는 외부 장치로부터 수신된 객체의 기하학적 정보에 기초하여 획득될 수 있다. 또한, 전처리부(110)는 도 4를 참조하여 상술한 바운딩 박스(460), 컨벡스 홀(410), 루프-블린 파타미터, 극점(440) 또는 극점(440)으로부터 컨벡스 홀(410)의 기저까지 연결된 라인(450)을 연산한다. 전처리부(110)는, 타일 비닝 프로세스가 진행되기 전에, 버텍스 쉐이더(vertex shader) 및 클리핑(clipping) 처리를 수행할 수도 있다.The
분류부(120)는 전처리부(110)에 의하여 연산된 파라미터들에 기초하여 프레임에 포함된 타일들을 내부 타일, 외부 타일 및 부분 내부 타일(partially inside tile) 중 어느 하나로 분류한다. 여기에서, 부분 내부 타일은 타일의 끝점들 중 일부가 베지어 커브의 내부에 위치하는 타일을 의미한다. 분류부(120)는 컨벡스 홀 검사를 수행하여 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일들을 결정한다. 그리고, 분류부(120)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일들을 외부 컨벡스 홀 타일(outside convex hull tile)로 분류하고, 분류된 타일을 제 1 위치 표식으로 표시한다. The classifying
분류부(120)는 컨벡스 홀 검사를 수행하여 적어도 하나의 끝점이 컨벡스 홀과 교차하는 타일들을 결정한다. 그리고, 분류부(120)는 적어도 하나의 끝점이 컨벡스 홀과 교차하는 타일들 각각에 대하여 루프-블린 테스트를 수행한다. 그리고, 분류부(120)는 루프-블린 테스트의 수행 결과에 기초하여 타일을 내부 타일, 외부 타일 및 부분 내부 타일 중 어느 하나로 분류한다. 구체적으로, 분류부(120)는 모든 끝점들이 컨벡스 홀 및 베지어 커브의 내부에 위치하는 타일을 내부 타일로 분류하고, 분류된 타일을 제 2 위치 표식으로 표시한다. 한편, 분류부(120)는 모든 끝점들이 베지어 커브의 외부에 위치하는 타일을 외부 타일로 분류하고, 분류된 타일을 제 3 위치 표식으로 표시한다. The
분류부(120)는 베지어 커브의 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 작은지 여부를 결정하고, 베지어 커브의 극점의 x 좌표 값이 타일의 모든 끝점들의 x 좌표 값보다 작은지 여부를 결정하고, 그 타일을 외부 타일로 분류한다. 또한, 분류부(120)는 베지어 커브의 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 큰지 여부를 결정하고, 베지어 커브의 극점의 x 좌표 값이 타일의 모든 끝점들의 x 좌표 값보다 큰지 여부를 결정하고, 그 타일을 외부 타일로 분류한다. 추가적으로, 분류부(120)는 라인 테스트를 수행하여, 베지어 커브의 극점으로부터 컨벡스 홀의 기저까지 연결된 라인의 일 측면에 위치하는 타일을 외부 타일로 분류한다.The
분류부(120)는 루프-블린 테스트의 결과에 기초하여 타일의 끝점들 중 일부가 베지어 커브의 내부에 위치하는 타일들을 식별한다. 그리고, 분류부(120)는 식별된 타일들을 부분 내부 타일로 분류하고, 분류된 타일을 제 4 위치 표식으로 표시한다. 그리고, 분류부(120)는 제 4 위치 표식으로 분류된 타일을 복수의 서브 타일들로 분할하고, 서브 타일들 각각의 끝점들을 이용하여 베지어 커브와 관련된 파라미터들에 대한 서브 타일들 각각의 위치를 식별한다. 그리고, 분류부(120)는 서브 타일들 각각을 내부 타일, 외부 타일 및 부분 내부 타일 중 어느 하나로 분류한다.The
제어부(140)는 복수의 프리미티브들을 렌더링하도록 렌더링 장치(101)에게 지시하는 커맨드들을 외부 장치로부터 수신한다. 제어부(140)는 수신된 커맨드들을 디코딩하고, 커맨드들에 따라 렌더링 장치(101)의 엘리먼트들을 제어한다. 또한, 제어부(140)는 커맨드에 포함된 정보(예를 들어, 프리미티브 또는 버텍스 정보)를 메모리(미도시)에 저장하거나 버퍼(미도시)에 저장하거나 렌더링 장치(101)의 엘리먼트들에 저장한다. 제어부(140)는 수신된 커맨드에 기초하여 타일 기반 렌더링 프로세스가 수행되도록 렌더링 장치(101)를 제어한다.The
렌더링부(130)는 타일 비닝이 수행된 베지어 커브를 렌더링한다. 렌더링부(130)는 타일 비닝이 수행된 베지어 커브를 렌더링 하기 위한 분류 결과에 기초하여 베지어 커브에 대하여 타일 기반 렌더링을 수행한다. 렌더링부(130)는 분류 결과에 기초하여 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록을 생성한다. The
렌더링부(130)는 위치 표식 목록에 기초하여 내부 타일로 분류된 타일을 식별하고, 식별된 내부 타일의 프래그먼트들 각각에 대하여 타일 기반 렌더링을 수행한다. 또한, 렌더링부(130)는 위치 표식 목록에 기초하여 외부 타일로 분류된 타일을 식별하고, 식별된 외부 타일의 프래그먼트들에 대해서는 타일 기반 렌더링을 수행하지 않는다. The
렌더링부(130)는 위치 표식 목록에 기초하여 부분 내부 타일로 분류된 타일을 식별하고, 부분 내부 타일의 각각의 프래그먼트에 대하여 루프-블린 테스트를 수행한다. 그리고, 렌더링부(130)는 루프-블린 테스트 결과에 기초하여 프래그먼트를 베지어 커브의 내부에 위치하는 프래그먼트(이하, ‘내부 프래그먼트’라고 함) 또는 베지어 커브의 외부에 위치하는 프래그먼트(이하, ‘외부 프래그먼트’라고 함)로 분류한다. 그리고, 렌더링부(130)는 프래그먼트의 분류 결과에 기초하여 부분 내부 타일에 대한 타일 기반 렌더링을 수행한다.The
렌더링부(130)는 타일의 분류 결과에 따라 타일들을 채운다. 예를 들어, 어떤 타일이 외부 타일로 분류되었다면, 렌더링부(130)는 그 타일을 채우지 않고, 다음 타일로 진행한다. 반대로, 어떤 타일이 내부 타일로 분류되었다면, 렌더링부(130)는 그 타일에 대해서 쉐이더를 적용한다.The
도 1 및 도 7에 도시된 렌더링 장치(100, 101)에는 본 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1 및 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다. 또한, 렌더링 장치(100, 101)는 다른 하드웨어 또는 소프트웨어 성분들과 통신하기 위한 다양한 모듈들 또는 성분들을 포함할 수 있다. 예를 들어, 하드웨어 또는 소프트웨어 성분은 프로세서에서 동작하는 프로세스, 실행 가능한 프로세스(executable process), 실행 스레드(thread of execution), 프로그램 또는 컴퓨터가 될 수 있으나, 이에 제한되지 않는다.Only the components related to the present embodiment are shown in the
도 8은 일 실시예에 따른 전처리부가 동작하는 일 예를 나타내는 흐름도이다.FIG. 8 is a flowchart illustrating an example of operation of the preprocessing unit according to an embodiment.
810 단계에서, 전처리부(110)는 베지어 커브의 컨트롤 포인트들의 최대 값 및 최소 값에 기초하여 바운딩 박스를 연산한다. 도 4를 참조하여 상술한 바와 같이, 전처리부(110)는 당해 기술분야에서의 일반적인 방식을 이용하여 바운딩 박스를 설정할 수 있다.In
820 단계에서, 전처리부(110)는 상술한 수학식 1로 주어진 루프-블린 음함수 방정식에 기초하여 베지어 커브의 루프-블린 파라미터들을 연산한다. 베지어 커브의 루프-블린 파라미터들은 (0,0), (0.5,0) 및 (1,1)를 포함한다.In
830 단계에서, 전처리부(110)는 루프-블린 파라미터들에 기초하여 베지어 커브의 적어도 하나의 극점을 연산한다. 전처리부(110)는 상술한 수학식 5에 의하여 베지어 커브의 극점들을 연산할 수 있다.In
840 단계에서, 전처리부(110)는 베지어 커브의 극점들로부터 컨벡스 홀의 기저까지 연결된 라인을 연산한다.In
도 8에 도시된 단계들 외에도 다양한 조치들(actions), 행동들(acts), 블록들(blocks) 또는 단계들(steps) 등이 도 8과 같은 순서로, 도 8과는 다른 순서로 또는 동시에 수행될 수 있다. 또한, 본 발명의 범위를 벗어남이 없이 일부 조치들, 행동들, 블록들, 단계들 등이 삭제되거나, 추가되거나, 수정되거나 또는 생략될 수 있다. 도 8에 도시된 단계들 중 일부는 분류부(120) 또는 렌더링부(130)에서 실행될 수 있다. 또한, 도 8에 도시된 단계들 및 다른 설명들은 마이크로 컨트롤러, 마이크로 프로세서 또는 이와 동등한 장치에서 실행될 수 있는 제어 프로그램의 기초를 제공한다.In addition to the steps shown in FIG. 8, various actions, acts, blocks, or steps may be performed in the order shown in FIG. 8, . Furthermore, some actions, acts, blocks, steps, etc., may be deleted, added, modified, or omitted without departing from the scope of the present invention. Some of the steps shown in FIG. 8 may be performed in the
도 9는 일 실시예에 따른 분류부가 동작하는 일 예를 나타내는 흐름도이다.9 is a flowchart showing an example of the operation of the classifier according to an embodiment.
910 단계에서, 분류부(120)는 파라미터들을 전처리된 베지어 커브와 함께 획득한다. 여기에서, 파라미터들은 전처리부(110)에서 연산된 파라미터들을 의미한다. 파라미터들에는 바운딩 박스, 컨벡스 홀, 베지어 커브에 대한 루프-블린 파타미터, 베지어 커브의 극점 또는 극점으로부터 컨벡스 홀의 기저까지 연결된 라인이 포함된다. 렌더링 장치(100)는 타일 기반 렌더링이 수행되는 과정에서 타일들 각각에 대한 특정한 위치 표식을 이용한다. 위치 표식은 컬러, 텍스쳐 또는 코드를 포함할 수 있으나 이에 한정되지 않고, 당해 기술분야에서 알려진 표식의 다른 유형들을 포함할 수 있다. 전처리된 베지어 커브가 획득될 때, 분류부(120)는 최초에 타일들 각각에 회색 컬러를 표시한다.In
920 단계에서, 분류부(120)는, 컨벡스 홀의 외부에 위치하는 타일들 및 컨벡스 홀과 교차하는 타일들을 획득하기 위하여, 컨벡스 홀을 이용하여 베지어 커브에 대하여 컨벡스 홀 검사를 수행한다. 컨벡스 홀 검사는 스캔 라인 및 수평 폭 프로세스를 이용하여 수행될 수 있다. 또는, 컨벡스 홀 검사는 표준적인 박스-트라이앵글 교차 테스트(box-triangle intersection test)를 이용하여 수행될 수도 있다.In
930 단계에서, 분류부(120)는 컨벡스 홀 검사 결과에 기초하여 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일인지 여부를 결정한다. 다시 말해, 분류부(120)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일을 식별한다. 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일이 식별되면 940 단계로 진행하고, 그렇지 않은 경우는 950 단계로 진행한다.In
940 단계에서, 분류부(120)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일을 외부 컨벡스 홀 타일로 분류한다. 일 실시예에 따르면, 외부 컨벡스 홀 타일에는 특정한 컬러와 같은 제 1 위치 표식이 할당된다. 예를 들어, 942 단계에서, 분류부(120)는 외부 컨벡스 홀 타일들에 청색을 할당한다.In
950 단계에서, 분류부(120)는 컨벡스 홀과 교차하는 적어도 하나의 끝점을 포함하는 타일을 결정한다. 그리고, 960 단계에서, 분류부(120)는 아래의 수학식 8을 이용하여 950 단계에서 결정된 타일에 대하여 루프-블린 테스트를 수행한다.In
수학식 8에서 u 및 v는 중간 값을 의미한다. 중간 값은 컨벡스 홀의 보간을 통하여 획득될 수 있다. 예를 들어, u와 v는 무게중심 보간(barycentric interpolation) 방식에 의하여 획득될 수 있다. 그러면, 수학식 8은 보간된 값 상에서 수행된다. 타일 끝점들에서의 u 및 v 에 대해서는, 초기 값들을 이용하여 다양한 표준 보간 방식들이 수행될 수 있다.In Equation (8), u and v mean an intermediate value. The intermediate value can be obtained through interpolation of the convex hole. For example, u and v can be obtained by a barycentric interpolation method. Then, equation (8) is performed on the interpolated value. For u and v at the tile end points, various standard interpolation schemes can be performed using initial values.
루프-블린 테스트가 수행된 결과는 타일들의 서로 다른 카테고리들에 대응하는 3가지의 출력물들을 제공한다.The result of performing the loop-blin test provides three outputs corresponding to different categories of tiles.
루프-블린 테스트의 제 1 출력물은 모든 끝점들이 베지어 커브 및 컨벡스 홀의 내부에 위치하는 타일들을 제공한다. 970 단계에서, 분류부(120)는 루프-블린 테스트에 기초하여 모든 끝점들이 베지어 커브 및 컨벡스 홀의 내부에 위치하는 타일들을 식별한다. 이를 위하여, 먼저, 타일의 끝점들에서의 u 및 v 값들은 컨벡스 홀의 끝점들(즉, 컨벡스 홀에 대응하는 삼각형의 끝점들)로부터의 보간을 통하여 결정된다. 그 후에, 수학식 8을 이용한 루프-블린 테스트가 수행된다. 모든 끝점들이 베지어 커브 및 컨벡스 홀의 내부에 위치하는 타일들은 내부 타일들로 식별된다. 972 단계에서, 분류부(120)는 모든 끝점들이 베지어 커브 및 컨벡스 홀의 내부에 위치하는 타일들을 내부 타일로 분류하고, 그 타일들에 제 2 위치 표식(예를 들어, 백색)을 표시한다.The first output of the loop-blin test provides tiles where all the end points are located inside the Bezier curve and convex holes. In step 970, the
루프-블린 테스트의 제 2 출력물은 적어도 하나의 끝점이 베지어 커브의 내부에 위치하는 타일들을 제공한다. 이러한 타일들은 일부 끝점들이 베지어 커브의 내부에 위치하고, 다른 일부 끝점들이 베지어 커브의 외부에 위치한다. 980 단계에서, 분류부(120)는 루프-블린 테스트에 기초하여 적어도 하나의 끝점이 베지어 커브의 내부에 위치하는 타일들을 식별한다. 982 단계에서, 분류부(120)는 적어도 하나의 끝점이 베지어 커브의 내부에 위치하는 타일들을 부분 내부 타일로 분류하고, 그 타일들에 제 4 위치 표식(예를 들어, 회색)을 표시한다.The second output of the loop-blin test provides tiles where at least one endpoint is located inside the bezier curve. Some of these tiles are located inside the Bezier curve, while others are located outside the Bezier curve. In
루프-블린 테스트의 제 3 출력물은 모든 끝점들이 베지어 커브의 외부에 위치하는 타일들을 제공한다. 990 단계에서, 분류부(120)는 루프-블린 테스트에 기초하여 모든 끝점들이 베지어 커브의 외부에 위치하는 타일들을 식별한다. 992 단계에서, 분류부(120)는, 최대/최소 테스트(maximum-minimum text) 및 라인 테스트(line test)를 이용하여, 모든 끝점들이 베지어 커브의 외부에 위치하는 타일들을 외부 타일로 분류하고, 그 타일들에 제 3 위치 표식(예를 들어, 녹색)을 표시한다.The third output of the loop-blin test provides tiles where all the end points are located outside of the Bezier curve. In
도 9에 도시된 단계들 외에도 다양한 조치들, 행동들, 블록들 또는 단계들 등이 도 9와 같은 순서로, 도 9와는 다른 순서로 또는 동시에 수행될 수 있다. 또한, 본 발명의 범위를 벗어남이 없이 일부 조치들, 행동들, 블록들, 단계들 등이 삭제되거나, 추가되거나, 수정되거나 또는 생략될 수 있다. 도 9에 도시된 단계들 중 일부는 전처리부(110) 또는 렌더링부(130)에서 실행될 수 있다. 또한, 도 9에 도시된 단계들 및 다른 설명들은 마이크로 컨트롤러, 마이크로 프로세서 또는 이와 동등한 장치에서 실행될 수 있는 제어 프로그램의 기초를 제공한다.In addition to the steps shown in FIG. 9, various actions, actions, blocks or steps, etc. may be performed in the order shown in FIG. 9, in an order different from FIG. 9 or concurrently. Furthermore, some actions, acts, blocks, steps, etc., may be deleted, added, modified, or omitted without departing from the scope of the present invention. Some of the steps shown in FIG. 9 may be executed in the
도 10은 일 실시예에 따른 최대/최소 테스트 및 라인 테스트의 일 예를 설명하기 위한 흐름도이다.FIG. 10 is a flowchart illustrating an example of a maximum / minimum test and a line test according to an embodiment.
최대/최소 테스트는 베지어 커브의 극점들 각각에 대하여 수행된다. 예를 들어, 분류부(120)는 극점들의 x 좌표 및 y 좌표 각각에 대하여 최대/최소 테스트를 수행할 수 있다.The maximum / minimum test is performed for each of the poles of the Bezier curve. For example, the
1010 단계에서, 분류부(120)는 모든 끝점들이 베지어 커브의 외부에 위치하는 타일을 베지어 커브와 함께 획득한다. 그 후에, 분류부(120)는 베지어 커브의 x 극값(x extremity)이 0<t<1의 범위를 만족하는지 여부를 결정한다. 여기에서, t는 베지어 파라미터를 의미한다. 만약, x 극값이 0<t<1의 범위를 만족하는 경우, 1020 단계에서, 분류부(120)는 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 작은지 여부를 결정한다. 만약, 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 작은 경우, 1030 단계에서, 분류부(120)는 극점의 x 좌표 값이 주어진 타일의 모든 끝점들 각각의 x 좌표 값보다 작은지 여부를 판단한다. 만약, 극점의 x 좌표 값이 주어진 타일의 모든 끝점들 각각의 x 좌표 값보다 작은 경우, 1040 단계에서, 분류부(120)는 그 타일을 외부 타일로 분류하고, 그 타일에 제 3 위치 표식(예를 들어, 녹색)을 표시한다.In
반대로, 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 큰 경우, 1030 단계에서, 분류부(120)는 극점의 x 좌표 값이 주어진 타일의 모든 끝점들 각각의 x 좌표 값보다 큰지 여부를 판단한다. 만약, 극점의 x 좌표 값이 주어진 타일의 모든 끝점들 각각의 x 좌표 값보다 큰 경우, 1040 단계에서, 분류부(120)는 그 타일을 외부 타일로 분류하고, 그 타일에 제 3 위치 표식(예를 들어, 녹색)을 표시한다. 도 10을 참조하여 상술한 바에 따르면, 분류부(120)는 베지어 커브의 x 극값에 대하여 상술한 프로세스(즉, 최대/최소 테스트)를 수행하나, y 극값에 대해서도 동일한 프로세스를 수행할 수 있다.Conversely, if the x coordinate value of the pole is greater than the intermediate control point of the Bezier curve, the
만약, 주어진 타일이 베지어 커브의 극점에 대하여 최대/최소 테스트를 통과하지 못하는 경우, 1050 단계에서, 분류부(120)는 라인 테스트를 수행한다. 다시 말해, 분류부(120)는, 잔여 타일들이 베지어 커브의 극점으로부터 컨벡스 홀의 기저까지 연결된 라인을 기준으로 같은 측면에 위치하는지를 결정하기 위하여, 라인 테스트를 수행한다. 라인 테스트는 모든 끝점들이 베지어 커브의 외부에 위치하는 부분 내부 타일에 대하여 수행된다. 라인 테스트는 아직 분류되지 않은 모든 타일들(즉, 잔여 타일들)에 대하여 수행된다. 1060 단계에서, 분류부(120)는 라인 테스트에 기초하여 라인 테스트를 통과한 잔여 타일들을 외부 타일로 분류하고, 그 타일들에 제 3 위치 표식(예를 들어, 녹색)을 표시한다. 따라서, 라인 테스트가 수행됨에 따라 추가적인 타일들이 제 3 위치 표식으로 표시된다.If the given tile does not pass the maximum / minimum test for the poles of the Bezier curve, the
도 10에 도시된 단계들 외에도 다양한 조치들, 행동들, 블록들 또는 단계들 등이 도 10와 같은 순서로, 도 10과는 다른 순서로 또는 동시에 수행될 수 있다. 또한, 본 발명의 범위를 벗어남이 없이 일부 조치들, 행동들, 블록들, 단계들 등이 삭제되거나, 추가되거나, 수정되거나 또는 생략될 수 있다. 도 10에 도시된 단계들 중 일부는 전처리부(110) 또는 렌더링부(130)에서 실행될 수 있다. 또한, 도 10에 도시된 단계들 및 다른 설명들은 마이크로 컨트롤러, 마이크로 프로세서 또는 이와 동등한 장치에서 실행될 수 있는 제어 프로그램의 기초를 제공한다.In addition to the steps shown in FIG. 10, various actions, actions, blocks or steps, etc. may be performed in the order shown in FIG. 10, in an order different from FIG. 10 or concurrently. Furthermore, some actions, acts, blocks, steps, etc., may be deleted, added, modified, or omitted without departing from the scope of the present invention. Some of the steps shown in Fig. 10 may be executed in the
도 11a 내지 도 11b는 일 실시예에 따른 최대/최소 테스트가 진행되는 과정에서 베지어 커브의 방향의 예들을 설명하기 위한 도면들이다.FIGS. 11A and 11B are views for explaining examples of Bezier curves in the course of a maximum / minimum test according to an embodiment.
도 11a에는 베지어 커브의 극점(1110)의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트(1120)보다 작은 베지어 커브의 향이 도시되어 있다. 한편, 도 11b에는 베지어 커브의 극점(1130)의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트(1140)보다 큰 베지어 커브의 방향이 도시되어 있다.In Fig. 11A, the x-coordinate value of the
도 12는 일 실시예에 따른 분류부가 타일을 분할하는 일 예를 설명하기 위한 흐름도이다.12 is a flowchart for explaining an example of dividing a tile according to an embodiment.
비닝 반복(iteration)이 수행된 후의 최적화 단계로서, 분류부(120)는 부분 내부 타일로 분류된 타일들에 대하여 서브 타일링을 수행한다. 여기에서, 서브 타일링은 타일을 복수의 서브 타일들로 분할하는 과정을 의미한다. 렌더링 장치(100, 101)는 서브 타일들 각각에 대하여 타일 비닝(도 6의 630 단계)을 수행한다. 또한, 분류부(120)는 필요에 따라 서브 타일들을 계층적으로 분할할 수 있다. As an optimization step after performing the binning iteration, the classifying
1210 단계에서, 분류부(120)는 타일들 중 일부를 부분 내부 타일들로 분류한다. 타일이 부분 내부 타일로 분류되는 과정은 도 9를 참조하여 상술한 바와 같다. 1220 단계에서, 분류부(120)는 메모리 제한에 기초하여 부분 내부 타일들 각각을 서브 타일들로 분할한다. 1230 단계에서, 분류부(120)는 서브 타일들 각각의 끝점들을 이용하여 베지어 커브의 파라미터들에 대한 적어도 하나의 서브 타일의 위치를 식별한다. 예를 들어, 각각의 서브 타일의 위치는 베지어 커브의 내부, 외부 또는 부분 내부 중 어느 하나로 식별될 수 있다. 1240 단계에서, 분류부(120)는 적어도 하나의 서브 타일을 베지어 커브에 대한 내부 타일, 외부 타일 또는 부분 내부 타일로 분류한다. 서브 타일들에 대한 분류는 도 8 내지 도 11을 참조하여 상술한 바와 같이 루프-블린 테스트, 최대/최소 테스트 및 라인 테스트의 조합을 이용하여 수행된다.In
도 12에 도시된 단계들 외에도 다양한 조치들, 행동들, 블록들 또는 단계들 등이 도 12와 같은 순서로, 도 12와는 다른 순서로 또는 동시에 수행될 수 있다. 또한, 본 발명의 범위를 벗어남이 없이 일부 조치들, 행동들, 블록들, 단계들 등이 삭제되거나, 추가되거나, 수정되거나 또는 생략될 수 있다. 도 12에 도시된 단계들 중 일부는 전처리부(110) 또는 렌더링부(130)에서 실행될 수 있다. 또한, 도 12에 도시된 단계들 및 다른 설명들은 마이크로 컨트롤러, 마이크로 프로세서 또는 이와 동등한 장치에서 실행될 수 있는 제어 프로그램의 기초를 제공한다.In addition to the steps shown in FIG. 12, various actions, actions, blocks or steps, etc. may be performed in the order shown in FIG. 12, in an order different from FIG. Furthermore, some actions, acts, blocks, steps, etc., may be deleted, added, modified, or omitted without departing from the scope of the present invention. Some of the steps shown in Fig. 12 may be executed in the
도 13 내지 도 14b는 서브 타일링의 일 예를 설명하기 위한 도면들이다.FIGS. 13 to 14B are views for explaining an example of subtilling.
도 13을 참조하면, 분류부(120)는 프레임(1300)에 포함된 타일(1310)을 4개의 서브 타일들로 분할할 수 있다. 도 14a에는 서브 타일링이 수행되지 않고 타일 비닝이 수행된 예가 도시되어 있다. 한편, 도 14b에는 서브 타일링과 함께 타일 비닝이 수행된 예가 도시되어 있다. 도 14a 및 도 14b를 참조하면, 분류부(120)는 회색 타일들 각각을 서브 타일들로 분할하고, 서브 타일들 각각을 내부 타일 또는 외부 타일로 분류할 수 있다.Referring to FIG. 13, the
도 15는 일 실시예에 따른 렌더링부가 동작하는 일 예를 나타내는 흐름도이다.15 is a flowchart illustrating an example of operation of a rendering unit according to an embodiment.
타일 비닝이 수행된 이후의 렌더링 과정은 컨벡스 홀 내부의 유효한 프래그먼트를 생성한다. 만약, 컨벡스 홀이 내부 타일(백색으로 표시된 타일)을 교차하면, 컨벡스 홀의 그 부분의 내부에 위치하는 프래그먼트들은 내부 프래그먼트들로 분류된다. 이와 유사하게, 만약, 컨벡스 홀이 외부 타일(녹색으로 표시된 타일)을 교차하면, 컨벡스 홀의 그 부분의 내부에 위치하는 모든 프래그먼트들은 외부 프래그먼트들로 분류된다.The rendering process after tile binning is performed creates a valid fragment inside the convex hole. If the convex hole intersects the inner tile (the tile indicated as white), the fragments located inside that portion of the convex hole are classified as inner fragments. Similarly, if a convex hole intersects an outer tile (tile indicated in green), then all fragments located within that portion of the convex hole are classified as outer fragments.
1510 단계에서, 렌더링부(130)는 분류 결과에 기초하여 분류된 타일들 각각에 대응하는 위치 표식 목록을 생성한다. 여기에서, 분류는 분류부(120)가 타일들(또는 서브 타일들)을 분류하는 과정을 의미한다. 목록은 선형 목록(linear list) 또는 비트 스트림으로 생성될 수 있으나, 이에 한정되지 않는다. 1520 단계에서, 렌더링부(130)는 주어진 타일의 컬러를 결정한다. 만약, 주어진 타일의 컬러가 그 타일이 베지어 커브에 대한 내부 타일임을 나타내는 백색이라고 가정하면, 1530 단계에서, 렌더링부(130)는 그 타일에 포함된 모든 프래그먼트들을 내부 프래그먼트로 선언하고, 렌더링 파이프라인을 진행한다. 여기에서, 렌더링 파이프라인은 당해 기술 분야에 존재하는 그래픽 처리 장치(GPU)에서 실행되는 표준적인 렌더링 프로세스를 의미한다. 또한, 1530 단계가 수행된 이후에, 렌더링부(130)는 1570 단계를 수행한다.In
한편, 주어진 타일의 컬러가 그 타일이 베지어 커브에 대한 외부 타일임을 나타내는 녹색이라고 가정하면, 1540 단계에서, 렌더링부(130)는 그 타일에 포함된 모든 프래그먼트들을 외부 프래그먼트로 선언하고, 렌더링을 수행하지 않는다. 또한, 주어진 타일의 컬러가 그 타일이 베지어 커브의 부분 내부 타일임을 나타내는 회색이라고 가정하면, 1550 단계에서, 렌더링부(130)는 부분 내부 타일에 포함된 프래그먼트들 각각에 대하여 프래그먼트 별 루프-블린 테스트(per fragment loop blinn test)를 수행한다. 프래그먼트 별 루프-블린 테스트의 결과는 2가지의 출력물들(즉, 내부 프래그먼트, 외부 프래그먼트)을 생성한다. On the other hand, if it is assumed that the color of a given tile is green indicating that the tile is an outer tile for the Bezier curve, the
구체적으로, 만약 부분 내부 타일의 프래그먼트들이 루프-블린 테스트를 통과하면, 1560 단계에서, 렌더링부(130)는 그 프래그먼트들을 내부 프래그먼트들로 분류한다. 1570 단계에서, 렌더링부(130)는 내부 프래그먼트들 각각을 픽셀 쉐이더나 GPU 렌더링 파이프라인의 다른 유닛들을 통과시킨다. 반대로, 만약 부분 내부 타일의 프래그먼트들이 루프-블린 테스트를 통과하지 못한다면, 1580 단계에서, 렌더링부(130)는 그 프래그먼트들을 외부 프래그먼트로 분류한다. 1590 단계에서, 렌더링부(130)는 외부 프래그먼트들을 거부한다. 다시 말해, 렌더링부(130)는 외부 프래그먼트들에 대하여 더 이상의 렌더링을 수행하지 않는다. 그 후에, 상술한 분류 결과에 기초하여 분류된 타일들 각각이 채워진다. 예를 들어, 주어진 타일이 외부 타일로 분류되었다면, 그 타일은 렌더링되지 않고, 다음 타일로 넘어간다. 반대로, 주어진 타일이 부분 내부 타일로 분류되었다면, 그 타일을 채우기 위하여 쉐이더 프로세스가 적용된다. Specifically, if the fragments of the partial inner tile pass the loop-blin test, then at step 1560, the
도 15에 도시된 단계들 외에도 다양한 조치들, 행동들, 블록들 또는 단계들 등이 도 15와 같은 순서로, 도 15와는 다른 순서로 또는 동시에 수행될 수 있다. 또한, 본 발명의 범위를 벗어남이 없이 일부 조치들, 행동들, 블록들, 단계들 등이 삭제되거나, 추가되거나, 수정되거나 또는 생략될 수 있다. 도 15에 도시된 단계들 중 일부는 전처리부(110) 또는 분류부(120)에서 실행될 수 있다. 또한, 도 15에 도시된 단계들 및 다른 설명들은 마이크로 컨트롤러, 마이크로 프로세서 또는 이와 동등한 장치에서 실행될 수 있는 제어 프로그램의 기초를 제공한다.In addition to the steps shown in Fig. 15, various actions, actions, blocks or steps, etc. may be performed in the order shown in Fig. 15, in an order different from that of Fig. Furthermore, some actions, acts, blocks, steps, etc., may be deleted, added, modified, or omitted without departing from the scope of the present invention. Some of the steps shown in Fig. 15 may be executed in the
도 16은 일 실시예에 다른 타일 기반 렌더링이 수행되는 일 예를 도시한 흐름도이다.16 is a flowchart illustrating an example in which tile-based rendering is performed according to an embodiment.
1610 단계에서, 렌더링 장치(100, 101)는 베지어 커브를 전처리 한다. 1620 단계에서, 렌더링 장치(100, 101)는 프레임 버퍼에 포함된 모든 타일들에 대하여 컨벡스 홀 검사를 수행한다. 컨벡스 홀 검사의 결과는 2가지의 출력물들을 생성한다. 컨벡스 홀 검사의 제 1 출력물은 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일들에 대응한다. 따라서, 1630 단계에서, 렌더링 장치(100, 101)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일들을 획득한다. 1632 단계에서, 렌더링 장치(100, 101)는 획득된 타일들에 청색을 할당한다. 컨벡스 홀 검사의 제 2 출력물은 적어도 하나의 끝점이 컨벡스 홀을 교차하는 타일들에 대응한다. 따라서, 1640 단계에서, 렌더링 장치(100, 101)는 적어도 하나의 끝점이 컨벡스 홀을 교차하는 타일들을 획득한다. 1650 단계에서, 렌더링 장치(100, 101)는 획득된 타일들에 대하여 루프-블린 테스트를 수행한다. 루프-블린 테스트의 결과는 3가지의 출력물들을 생성한다. 루프-블린 테스트의 제 1 출력물은 모든 끝점들이 베지어 커브 및 컨벡스 홀의 내부에 위치하는 타일들에 대응한다. 따라서, 1660 단계에서, 렌더링 장치(100, 101)는 모든 끝점들이 베지어 커브 및 컨벡스 홀의 내부에 위치하는 타일들을 획득한다. 1662 단계에서, 렌더링 장치(100, 101)는 획득된 타일들에 백색을 할당한다. In
루프-블린 테스트의 제 2 출력물들은 일부 끝점들이 베지어 커브의 내부에 위치한 타일들에 대응한다. 따라서, 1670 단계에서, 렌더링 장치(100, 101)는 일부 끝점들이 베지어 커브의 내부에 위치한 타일들을 획득한다. 1672 단계에서, 렌더링 장치(100, 101)는 획득된 타일들에 회색을 할당한다. The second outputs of the loop-blin test correspond to tiles where some end points are located inside the Bezier curve. Thus, in
루프-블린 테스트의 제 3 출력물들은 모든 끝점들이 베지어 커브의 외부에 위치한 타일들에 대응한다. 따라서, 1680 단계에서, 렌더링 장치(100, 101)는, 모든 끝점들이 베지어 커브의 외부에 위치한 타일들을 외부 타일들로 분류하기 위하여, 베지어 커브의 극점들에 대하여 최대/최소 테스트를 수행한다. 만약, 주어진 타일이 최대/최소 테스트를 통과하면, 1682 단계에서, 렌더링 장치(100, 101)는 그 타일에 녹색을 할당한다. 반대로, 주어진 타일이 최대/최소 테스트를 통과하지 못하면, 1684 단계에서, 렌더링 장치(100, 101)는 라인 테스트를 수행한다. 만약, 주어진 타일이 라인 테스트를 통과하면, 1686 단계에서, 렌더링 장치(100, 101)는 그 타일에 녹색을 할당한다.The third outputs of the loop-blin test correspond to tiles where all endpoints are located outside of the Bezier curve. Thus, in
도 16에 도시된 단계들 외에도 다양한 조치들, 행동들, 블록들 또는 단계들 등이 도 16과 같은 순서로, 도 16과는 다른 순서로 또는 동시에 수행될 수 있다. 또한, 본 발명의 범위를 벗어남이 없이 일부 조치들, 행동들, 블록들, 단계들 등이 삭제되거나, 추가되거나, 수정되거나 또는 생략될 수 있다. 도 16에 도시된 단계들 중 일부는 전처리부(110), 분류부(120) 또는 렌더링부(130)에서 실행될 수 있다. 또한, 도 16에 도시된 단계들 및 다른 설명들은 마이크로 컨트롤러, 마이크로 프로세서 또는 이와 동등한 장치에서 실행될 수 있는 제어 프로그램의 기초를 제공한다.In addition to the steps shown in Fig. 16, various actions, actions, blocks or steps, etc. may be performed in the order shown in Fig. Furthermore, some actions, acts, blocks, steps, etc., may be deleted, added, modified, or omitted without departing from the scope of the present invention. Some of the steps shown in FIG. 16 may be executed in the
도 17a 내지 도 17e는 일 실시예에 따른 타일 기반 렌더링이 수행되는 일 예를 설명하기 위한 도면들이다.17A to 17E are views for explaining an example in which tile-based rendering according to an embodiment is performed.
도 17a를 참조하면, 렌더링 장치(100, 101)는 최초에 모든 타일들을 회색으로 표시한다. 도 17b를 참조하면, 렌더링 장치(100, 101)는 컨벡스 홀 검사를 수행하여 컨벡스 홀(1710)의 외부에 위치하는 타일들 및 컨벡스 홀(1710)과 교차하는 타일들을 획득한다. 렌더링 장치(100, 101)는 컨벡스 홀(1710)의 외부에 위치하는 타일들을 청색으로 표시한다. 도 17c를 참조하면, 렌더링 장치(100, 101)는 루프-블린 테스트를 수행하여 모든 끝점들이 베지어 커브(1720)의 내부에 위치하는 타일들 및 끝점들 중 일부가 베지어 커브(1720)의 내부에 위치하는 타일들을 획득한다. 이때, 렌더링 장치(100, 101)는 상술한 수학식 8의 음함수 방정식을 이용하여 루프-블린 테스트를 수행할 수 있다. 렌더링 장치(100, 101)는 모든 끝점들이 베지어 커브(1720)의 내부에 위치하는 타일들을 백색으로 표시한다. 도 17d를 참조하면, 렌더링 장치(100, 101)는 극점(1730)에 대한 최대/최소 테스트를 수행하여 모든 끝점들이 베지어 커브(1720)의 외부에 위치하는 타일들을 획득한다. 렌더링 장치(100, 101)는 모든 끝점들이 베지어 커브(1720)의 외부에 위치하는 타일들을 녹색으로 표시한다. 한편, 모든 끝점들이 베지어 커브(1720)의 외부에 위치하나 극점(1730)이 타일의 중간에 위치하는 경우가 있을 수 있다. 그 경우, 렌더링 장치(100, 101)는 그 타일을 외부 타일로 분류하지 않고, 그 타일이 내부 타일인지 외부 타일인지 또는 부분 내부 타일인지를 식별하기 위한 적절한 테스트를 수행한다. 도 17e를 참조하면, 렌더링 장치(100, 101)는 모든 끝점들이 베지어 커브(1720)의 외부에 위치하는 회색 타일들에 대하여 라인 테스트를 수행한다. 라인 테스트는 잔여 타일들이 극점(1720)으로부터 컨벡스 홀(1710)의 기저까지 연결된 라인(1740)을 기준으로 같은 측면에 위치하는지 여부를 결정하기 위하여 수행된다. 만약에, 잔여 타일들이 라인(1740)을 기준으로 같은 측면에 위치하면, 렌더링 장치(100, 101)는 그 타일들을 녹색으로 표시한다. 라인(1740)의 어느 측면에 포인트(point)가 있는지를 검사하기 위해, 라인(1740)상의 2개의 포인트들에 의해 형성된 포인트들 및 검사할 포인트의 표시 영역(signed area)를 당해 기술분야에 공지된 임의의 방법을 이용하여 결정한다. 따라서, 라인 테스트가 수행된 후에 추가적인 타일들이 녹색으로 표시될 수 있다.Referring to FIG. 17A, the
도 18은 일 실시예에 따른 컴퓨팅 시스템의 일 예를 도시한 구성도이다.18 is a configuration diagram illustrating an example of a computing system according to an embodiment.
도 18을 참조하면, 컴퓨팅 시스템(1800)은 제어부(1811) 및 산술 논리 연산 장치(Arithmetic Logic Unit, ALU)(1812)를 포함하는 적어도 하나의 처리부(1810), 메모리(1821), 타일 메모리(1822), 저장부(1823), 그래픽 처리 장치(GPU)(1830), 복수의 네트워크 디바이스들(1840), 복수의 입출력 디바이스들(1850) 및 프레임 버퍼(1860)를 포함한다. 한편, 컴퓨팅 시스템(1800)은 도 18에 도시되지 않은 다른 기능 성분들을 포함할 수 있음은 당해 기술 분야에서의 통상의 지식을 가진 자라면 이해할 수 있다.18, the
처리부(1810)는 본 발명의 방법에 대한 명령어들을 처리한다. 처리부(1810)는 명령어 차리를 수행하기 위하여 제어부(1811)로부터 커맨드들을 수신한다. 또한, 처리부(1810)는 명령어들의 실행과 관련된 다른 논리적이고 산술적인 작업들을 ALU(1812)의 도움을 받아 수행한다. 처리부(1810)가 동작하기 위하여 요구되는 명령어들 및 코드들은 메모리(1821), 저장부(1823) 또는 메모리(1821)와 저장부(1823) 모두에 저장될 수 있다. 명령어들 및 코드들은 메모리(1821) 및/또는 저장부(1823)으로부터 독출되고, 처리부(1810)에 의하여 실행된다. 처리부(1810)는 마이크로 프로세서, 마이크로 컨트롤러, CISC(Complex Instruction Set Computing) 마이크로 프로세서, RISC(Reduced Instruction Set Computing) 마이크로 프로세서, VLIW(Very Long Instruction Word) 마이크로 프로세서, EPIC(Explicitly Parallel Instruction Computing) 마이크로 프로세서, 그래픽 프로세서, 디지털 신호 프로세서 또는 다른 어떤 유형의 처리 회로와 같은 연산 회로(computational circuit)의 유형을 의미할 수 있으나, 이에 한정되지 않는다. 또한, 처리부(1810)는 범용적인 또는 프로그램 작동이 가능한 로직 디바이스들 또는 어레이들, 응용 주문형 집적 회로들(application specific integrated circuits), 단일 칩 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러를 포함할 수 있다.The
메모리(1821)는 휘발성 메모리 또는 비휘발성 메모리 일 수 있다. 다양한 컴퓨터로 판독 가능한 저장 매체는 메모리(1821) 엘리먼트들로부터 접근되거나 저장될 수 있다. 메모리 엘리먼트들은 ROM(Read Only Memory), RAM(Random Access Memory), EP-ROM(Erasable Programmable Read Only Memory), EEP-ROM(Electrically Erasable Programmable Read Only Memory), 하드 드라이브, 이동식 미디어 드리이브(예를 들어, 컴팩트 디스트들, 디지털 비디오 디스크들, 디스켓들, 자기 테이프 카트리지들, 메모리 카드 등)와 같은 데이터 및 컴퓨터로 판독할 수 있는 명령어들을 저장하기 위한 적절한 메모리 디바이스들을 포함할 수 있다.The
타일 메모리(1822)는 타일 비닝 중에 그래픽 이미지에 속하는 특정 타일들을 나타낸다. 타일 메모리(1822)는 저장부(1823)의 일부분일 수도 있으나, 이에 제한되지 않는다. 타일 메모리(1822)는 처리된 타일들 각각에 대한 픽셀 값들을 저장한다. 또한, 타일 메모리(1822)는 타일 사이즈를 저장하고, 타일 비닝 중에 수행되는 테스트들 각각에 대한 출력물들을 저장한다.The
저장부(1823)는 커브 전처리가 수행되는 중에 연산되는 파라미터들을 저장한다. 저장부(1823)는 ROM(Read Only Memory), RAM(Random Access Memory), EP-ROM(Erasable Programmable Read Only Memory), EEP-ROM(Electrically Erasable Programmable Read Only Memory), 하드 드라이브, 이동식 미디어 드리이브(예를 들어, 컴팩트 디스트들, 디지털 비디오 디스크들, 디스켓들, 자기 테이프 카트리지들, 메모리 카드 등)와 같은 데이터 및 컴퓨터로 판독할 수 있는 명령어들을 저장하기 위한 적절한 메모리 디바이스들을 포함할 수 있다.The
그래픽 처리 장치(1830)는 도 1의 렌더링 장치(100) 또는 도 7에 도시된 렌더링 장치(101)로 구현될 수 있다. 그래픽 처리 장치(1830)는 타일 비닝된 베지어 커브를 렌더링하기 위한 타일 기반 렌더링을 수행한다. 그래픽 처리 장치(1830)는 베지어 커브와 관련된 파라미터들을 연산하고, 연산된 파라미터들에 기초하여 프레임에 포함된 타일들을 베지어 커브에 대한 내부 타일, 외부 타일, 부분 내부 타일 중 어느 하나로 분류한다. 또한, 그래픽 처리 장치(1830)는 분류 결과에 기초하여 베지어 커브의 타일 기반 렌더링을 수행한다.The
프레임 버퍼(1860)는 렌더링 정보를 저장한다. 또한, 프레임 버퍼(1860)는 그래픽 이미지의 픽셀 값들을 저장한다. 프레임 버퍼(1860)의 사이즈는 필요한 픽셀 위치들의 수에 비례한다.The
렌더링 장치(100, 101)는 컴퓨터로 판독할 수 있는 명령어들의 형태로 상술한 저장 매체에 저장될 수 있고, 처리부(1810)에 의하여 실행될 수 있다. 예를 들어, 컴퓨터 프로그램은 타일 비닝된 베지어 커브를 렌더링하기 위한 타일 기반 렌더링 프로세스가 수행되도록 처리부(1810)를 동작시키는 컴퓨터로 판독할 수 있는 명령어들을 포함할 수 있다. 한편, 컴퓨터 프로그램은 CD-ROM(Compact Disk-Read Only Memory)에 저장될 수 있으며, CD-ROM으로부터 비휘발성 메모리 내의 하드 드라이브로 로딩될 수 있다The
네트워크 디바이스들(1840) 또는 입출력 디바이스들(1850)은 네트워킹 유닛 및 입출력 디바이스 유닛을 통하여 컴퓨팅 시스템과 연결될 수 있다.
그래픽 처리 장치(1830)는 복수의 2차 베지어 커브들을 획득하기 위하여 큐빅 커브들이 분해된 경우, 그 큐빅 커브들을 렌더링할 수 있다.The
상술한 바에 따르면, 렌더링 장치(100, 101)는 베지어 커브를 렌더링하는데 소모되는 연산 전력을 감소시킬 수 있다.As described above, the
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.Meanwhile, the above-described method can be implemented in a general-purpose digital computer that can be created as a program that can be executed by a computer and operates the program using a computer-readable recording medium. In addition, the structure of the data used in the above-described method can be recorded on a computer-readable recording medium through various means. The computer-readable recording medium includes a storage medium such as a magnetic storage medium (e.g., ROM, RAM, USB, floppy disk, hard disk, etc.), optical reading medium (e.g. CD ROM, do.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. Therefore, the disclosed methods should be considered from an illustrative point of view, not from a restrictive point of view. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.
100: 렌더링 장치
110: 전처리부
120: 분류부
130: 렌더링부100: rendering device
110:
120:
130:
Claims (30)
객체(object)의 기하학적 정보를 이용하여 상기 객체에 포함된 베지어 커브(Bezier curve)와 관련된 파라미터들을 연산하는 단계;
상기 파라미터들에 기초하여 프레임에 포함된 타일들을 분류하는 단계; 및
상기 타일들의 분류 결과에 기초하여 상기 타일 기반 렌더링을 수행하는 단계;를 포함하는 방법.A method of performing tile-based rendering,
Computing parameters related to a Bezier curve included in the object using geometric information of the object;
Classifying the tiles included in the frame based on the parameters; And
And performing the tile-based rendering based on the classification result of the tiles.
상기 파라미터들은 바운딩 박스(bounding box), 컨벡스 홀(convex hull), 상기 베지어 커브에 대응하는 루프-블린(loop-blinn) 데이터 및 상기 베지어 커브에 대응하는 극점(extreme point) 중 적어도 하나와 상기 극점으로부터 상기 컨벡스 홀까지 연결된 라인들 중 적어도 하나를 포함하는 방법.The method according to claim 1,
The parameters include at least one of a bounding box, a convex hull, loop-blinn data corresponding to the Bezier curve, and an extreme point corresponding to the Bezier curve. And at least one of lines connected from the pole to the convex hole.
상기 분류하는 단계는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들(endpoints) 전부가 상기 베지어 커브에 대응하는 컨벡스 홀의 외부에 위치하는 적어도 하나의 타일을 제 1 위치 표식으로 분류하는 방법.The method according to claim 1,
The classifying step
Wherein all of the endpoints corresponding to the edges of the tile among the tiles included in the frame are located outside the convex holes corresponding to the Bezier curve.
상기 분류하는 단계는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브에 대응하는 컨벡스 홀의 내부에 위치하는 타일들을 결정하는 단계;
상기 결정된 타일들 각각에 대하여 루프-블린 테스트를 수행하는 단계; 및
상기 루프-블린 테스트의 결과에 기초하여 상기 결정된 타일들을 분류하는 단계;를 포함하는 방법.The method according to claim 1,
The classifying step
Determining tiles in which some of the tiles corresponding to the edges of the tile among the tiles included in the frame are located inside the convex holes corresponding to the Bezier curves;
Performing a loop-blind test on each of the determined tiles; And
And classifying the determined tiles based on a result of the loop-blin test.
상기 분류하는 단계는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 컨벡스 홀 및 상기 베지어 커브의 내부에 위치하는 적어도 하나의 타일을 식별하는 단계; 및
상기 식별된 적어도 하나의 타일을 제 2 위치 표식으로 분류하는 단계;를 포함하는 방법.5. The method of claim 4,
The classifying step
Identifying at least one tile in which all of the endpoints corresponding to the edges of the tile are located within the convex hole and the Bezier curve based on the result of the loop-blin test; And
And classifying the identified at least one tile into a second location mark.
상기 분류하는 단계는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 베지어 커브의 외부에 위치하는 적어도 하나의 타일을 식별하는 단계; 및
상기 식별된 적어도 하나의 타일을 제 3 위치 표식으로 분류하는 단계;를 포함하는 방법.5. The method of claim 4,
The classifying step
Identifying at least one tile wherein all of the endpoints corresponding to the edges of the tile are located outside of the Bezier curve based on a result of the loop-blin test; And
And classifying the identified at least one tile into a third location mark.
상기 식별하는 단계는
상기 베지어 커브의 극점의 x 좌표 값이 상기 베지어 커브의 중간 컨트롤 포인트보다 작고, 상기 타일의 모서리들에 대응하는 끝점들의 x 좌표 값들보다 작은 적어도 하나의 타일을 식별하는 방법.The method according to claim 6,
The step of identifying
Wherein the x coordinate value of the poles of the Bezier curve is less than the intermediate control point of the Bezier curve and less than the x coordinate values of the end points corresponding to the edges of the tile.
상기 식별하는 단계는
상기 베지어 커브의 극점의 x 좌표 값이 상기 베지어 커브의 중간 컨트롤 포인트보다 크고, 상기 타일의 모서리들에 대응하는 끝점들의 x 좌표 값들보다 큰 적어도 하나의 타일을 식별하는 방법.The method according to claim 6,
The step of identifying
Wherein the x coordinate value of the poles of the Bezier curve is greater than the intermediate control point of the Bezier curve and is greater than the x coordinate values of the end points corresponding to the edges of the tile.
상기 식별하는 단계는
상기 베지어 커브의 극점으로부터 상기 컨벡스 홀까지 연결된 라인의 일 측면에 위치하는 적어도 하나의 타일을 식별하는 방법.The method according to claim 6,
The step of identifying
Wherein at least one tile is located on one side of a line connected from the pole of the Bezier curve to the convex hole.
상기 분류하는 단계는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브의 내부에 위치하는 타일들을 식별하는 단계;
상기 식별된 적어도 하나의 타일을 제 4 위치 표식으로 분류하는 단계;
상기 제 4 위치 표식으로 분류된 타일을 복수의 서브 타일들로 분할하는 단계; 및
상기 서브 타일들 각각의 모서리들에 대응하는 끝점들을 이용하여 상기 서브 타일들을 분류하는 단계;를 포함하는 방법.5. The method of claim 4,
The classifying step
Identifying tiles where some of the end points corresponding to the edges of the tile are located within the bezier curve based on the result of the loop-blin test;
Classifying the identified at least one tile into a fourth location mark;
Dividing the tiles classified into the fourth location mark into a plurality of sub tiles; And
And classifying the sub tiles using end points corresponding to edges of each of the sub tiles.
상기 타일 기반 렌더링을 수행하는 단계는
상기 타일들의 분류 결과에 기초하여 상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록을 생성하는 단계를 포함하는 방법.The method according to claim 1,
The step of performing the tile-
And generating a location marker list corresponding to each of the tiles included in the frame based on the classification results of the tiles.
상기 타일 기반 렌더링을 수행하는 단계는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 내부에 위치하는 타일을 식별하는 단계; 및
상기 식별된 타일의 프래그먼트들 각각에 대하여 상기 타일 기반 렌더링을 수행하는 단계;를 포함하는 방법.The method according to claim 1,
The step of performing the tile-
Identifying a tile located inside the Bezier curve based on a location marker list corresponding to each tile included in the frame; And
And performing the tile-based rendering for each of the fragments of the identified tile.
상기 타일 기반 렌더링을 수행하는 단계는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 외부에 위치하는 타일을 식별하는 단계; 및
상기 식별된 타일의 프래그먼트들에 대해서는 상기 타일 기반 렌더링을 수행하지 않는 단계;를 포함하는 방법.The method according to claim 1,
The step of performing the tile-
Identifying a tile located outside of the Bezier curve based on a location marker list corresponding to each of the tiles included in the frame; And
And not performing the tile-based rendering on the fragments of the identified tiles.
상기 타일 기반 렌더링을 수행하는 단계는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 일부분이 상기 베지어 커브의 내부에 위치하는 타일을 식별하는 단계;
상기 식별된 타일의 프래그먼트들 각각에 대하여 루프-블린 테스트를 수행하는 단계;
상기 테스트의 결과에 기초하여 상기 프레그먼트들을 상기 베지어 커브의 내부에 위치하는 프래그먼트 또는 상기 베지어 커브의 외부에 위치하는 프래그먼트로 분류하는 단계;
상기 프래그먼트들의 분류 결과에 기초하여 상기 식별된 타일에 대한 상기 타일 기반 렌더링을 수행하는 단계;를 포함하는 방법.The method according to claim 1,
The step of performing the tile-
Identifying a tile in which a portion is located within the Bezier curve based on a list of location markers corresponding to each of the tiles included in the frame;
Performing a loop-blind test on each of the fragments of the identified tile;
Classifying the fragments into a fragment located inside the Bezier curve or a fragment located outside the Bezier curve based on a result of the test;
And performing the tile-based rendering on the identified tile based on the classification result of the fragments.
객체(object)의 기하학적 정보를 이용하여 상기 객체에 포함된 베지어 커브(Bezier curve)와 관련된 파라미터들을 연산하는 전처리부;
상기 파라미터들에 기초하여 프레임에 포함된 타일들을 분류하는 분류부; 및
상기 타일들의 분류 결과에 기초하여 상기 타일 기반 렌더링을 수행하는 렌더링부;를 포함하는 장치.1. An apparatus for performing tile-based rendering,
A preprocessor for calculating parameters related to a Bezier curve included in the object using geometric information of the object;
A classifier for classifying the tiles included in the frame based on the parameters; And
And a rendering unit that performs the tile-based rendering based on a classification result of the tiles.
상기 파라미터들은 바운딩 박스(bounding box), 컨벡스 홀(convex hull), 상기 베지어 커브에 대응하는 루프-블린(loop-blinn) 데이터 및 상기 베지어 커브에 대응하는 극점(extreme point) 중 적어도 하나와 상기 극점으로부터 상기 컨벡스 홀까지 연결된 라인들 중 적어도 하나를 포함하는 장치.17. The method of claim 16,
The parameters include at least one of a bounding box, a convex hull, loop-blinn data corresponding to the Bezier curve, and an extreme point corresponding to the Bezier curve. And at least one of lines connected from the pole to the convex hole.
상기 분류부는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들(endpoints) 전부가 상기 베지어 커브에 대응하는 컨벡스 홀의 외부에 위치하는 적어도 하나의 타일을 제 1 위치 표식으로 분류하는 장치.17. The method of claim 16,
The classifier
Wherein all of the endpoints corresponding to the edges of the tile among the tiles included in the frame are located outside the convex holes corresponding to the Bezier curves into the first position markers.
상기 분류부는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브에 대응하는 컨벡스 홀의 내부에 위치하는 타일들을 결정하고,
상기 결정된 타일들 각각에 대하여 루프-블린 테스트를 수행하고,
상기 루프-블린 테스트의 결과에 기초하여 상기 결정된 타일들을 분류하는 장치.17. The method of claim 16,
The classifier
Wherein a part of the end points corresponding to the edges of the tile among the tiles included in the frame are located inside the convex hole corresponding to the Bezier curve,
Performing a loop-blin test on each of the determined tiles,
And to sort the determined tiles based on a result of the loop-blin test.
상기 분류부는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 컨벡스 홀 및 상기 베지어 커브의 내부에 위치하는 적어도 하나의 타일을 식별하고,
상기 식별된 적어도 하나의 타일을 제 2 위치 표식으로 분류하는 장치.20. The method of claim 19,
The classifier
All of the end points corresponding to the edges of the tile based on the result of the loop-blin test identify at least one tile within the convex hole and the bezier curve,
And classifying the identified at least one tile into a second location mark.
상기 분류부는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 베지어 커브의 외부에 위치하는 적어도 하나의 타일을 식별하고,
상기 식별된 적어도 하나의 타일을 제 3 위치 표식으로 분류하는 장치.20. The method of claim 19,
The classifier
Identifying at least one tile on the basis of a result of the loop-blin test wherein all of the endpoints corresponding to the edges of the tile are located outside the bezier curve,
And classifying the identified at least one tile into a third location mark.
상기 분류부는
상기 베지어 커브의 극점의 x 좌표 값이 상기 베지어 커브의 중간 컨트롤 포인트보다 작고, 상기 타일의 모서리들에 대응하는 끝점들의 x 좌표 값들보다 작은 적어도 하나의 타일을 식별하는 장치.22. The method of claim 21,
The classifier
Wherein the x coordinate value of the poles of the Bezier curve is smaller than the intermediate control point of the Bezier curve and less than the x coordinate values of the end points corresponding to the edges of the tile.
상기 분류부는
상기 베지어 커브의 극점의 x 좌표 값이 상기 베지어 커브의 중간 컨트롤 포인트보다 크고, 상기 타일의 모서리들에 대응하는 끝점들의 x 좌표 값들보다 큰 적어도 하나의 타일을 식별하는 장치.22. The method of claim 21,
The classifier
Wherein the x coordinate value of the poles of the Bezier curve is greater than the intermediate control point of the Bezier curve and is greater than the x coordinate values of the end points corresponding to the edges of the tile.
상기 분류부는
상기 베지어 커브의 극점으로부터 상기 컨벡스 홀까지 연결된 라인의 일 측면에 위치하는 적어도 하나의 타일을 식별하는 장치.22. The method of claim 21,
The classifier
And at least one tile located on one side of a line connected from the pole of the Bezier curve to the convex hole.
상기 분류부는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브의 내부에 위치하는 타일들을 식별하고,
상기 식별된 적어도 하나의 타일을 제 4 위치 표식으로 분류하고,
상기 제 4 위치 표식으로 분류된 타일을 복수의 서브 타일들로 분할하고,
상기 서브 타일들 각각의 모서리들에 대응하는 끝점들을 이용하여 상기 서브 타일들을 분류하는 장치.20. The method of claim 19,
The classifier
Based on a result of the loop-blin test, identifying some of the endpoints corresponding to the edges of the tile within the bezier curve,
Classifying the identified at least one tile into a fourth location marker,
Dividing the tiles classified into the fourth location mark into a plurality of sub tiles,
And classifying the sub-tiles using end points corresponding to edges of each of the sub-tiles.
상기 렌더링부는
상기 타일들의 분류 결과에 기초하여 상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록을 생성하는 장치.17. The method of claim 16,
The rendering unit
And generates a location marker list corresponding to each of the tiles included in the frame based on the classification result of the tiles.
상기 렌더링부는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 내부에 위치하는 타일을 식별하고,
상기 식별된 타일의 프래그먼트들 각각에 대하여 상기 타일 기반 렌더링을 수행하는 장치.17. The method of claim 16,
The rendering unit
Identifying a tile located inside the Bezier curve based on a location marker list corresponding to each tile included in the frame,
And perform the tile-based rendering on each of the fragments of the identified tile.
상기 렌더링부는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 외부에 위치하는 타일을 식별하고,
상기 식별된 타일의 프래그먼트들에 대해서는 상기 타일 기반 렌더링을 수행하지 않는 장치.17. The method of claim 16,
The rendering unit
Identifying a tile located outside of the Bezier curve based on a location marker list corresponding to each of the tiles included in the frame,
And does not perform the tile-based rendering on fragments of the identified tiles.
상기 렌더링부는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 일부분이 상기 베지어 커브의 내부에 위치하는 타일을 식별하고,
상기 식별된 타일의 프래그먼트들 각각에 대하여 루프-블린 테스트를 수행하고,
상기 테스트의 결과에 기초하여 상기 프레그먼트들을 상기 베지어 커브의 내부에 위치하는 프래그먼트 또는 상기 베지어 커브의 외부에 위치하는 프래그먼트로 분류하고,
상기 프래그먼트들의 분류 결과에 기초하여 상기 식별된 타일에 대한 상기 타일 기반 렌더링을 수행하는 장치.17. The method of claim 16,
The rendering unit
Identifying a tile in which a portion is located within the Bezier curve based on a location marker list corresponding to each of the tiles included in the frame,
Performing a loop-blind test on each of the fragments of the identified tiles,
Classifying the fragments into a fragment located inside the Bezier curve or a fragment located outside the Bezier curve based on a result of the test,
And perform the tile-based rendering on the identified tile based on the classification result of the fragments.
상기 타일 기반 렌더링을 수행하는 장치는 그래픽 처리 장치(Graphical Processing Unit)을 포함하는 장치.17. The method of claim 16,
Wherein the apparatus for performing tile-based rendering comprises a graphics processing unit.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16161225.4A EP3070677B1 (en) | 2015-03-20 | 2016-03-18 | Method and apparatus for tile-based rendering |
US15/075,529 US10210639B2 (en) | 2015-03-20 | 2016-03-21 | Method and apparatus for tile-based rendering |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN1422/CHE/2015 | 2015-03-20 | ||
IN1422CH2015 | 2015-03-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160112925A true KR20160112925A (en) | 2016-09-28 |
KR102585220B1 KR102585220B1 (en) | 2023-10-05 |
Family
ID=88293454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160001614A KR102585220B1 (en) | 2015-03-20 | 2016-01-06 | Method and apparatus for performing tile-based rendering |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102585220B1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110285711A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Path rendering by covering the path based on a generated stencil buffer |
KR20140009634A (en) * | 2012-07-12 | 2014-01-23 | 삼성전자주식회사 | Apparatus and method of performing tile binning of bezier curve |
-
2016
- 2016-01-06 KR KR1020160001614A patent/KR102585220B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110285711A1 (en) * | 2010-05-21 | 2011-11-24 | Kilgard Mark J | Path rendering by covering the path based on a generated stencil buffer |
KR20140009634A (en) * | 2012-07-12 | 2014-01-23 | 삼성전자주식회사 | Apparatus and method of performing tile binning of bezier curve |
Also Published As
Publication number | Publication date |
---|---|
KR102585220B1 (en) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10210639B2 (en) | Method and apparatus for tile-based rendering | |
KR100834596B1 (en) | Image processing apparatus, image processing method, and computer readable recording medium having image processing program | |
US7791617B2 (en) | Method and system for rendering polygons having abutting edges | |
US8928668B2 (en) | Method and apparatus for rendering a stroked curve for display in a graphics processing system | |
US8059119B2 (en) | Method for detecting border tiles or border pixels of a primitive for tile-based rendering | |
EP2831848B1 (en) | Method for estimating the opacity level in a scene and corresponding device | |
JP2005100177A (en) | Image processor and its method | |
US10540789B2 (en) | Line stylization through graphics processor unit (GPU) textures | |
US10140736B2 (en) | Graphics processing systems | |
CN106530379B (en) | Method and apparatus for performing path delineation | |
US8743135B2 (en) | Graphics processing systems | |
US8068106B1 (en) | Rendering cubic Bézier curves as quadratic curves using a GPU | |
US10497150B2 (en) | Graphics processing fragment shading by plural processing passes | |
JP2005100176A (en) | Image processor and its method | |
KR20160046614A (en) | Method and apparatus for processing texture | |
US7952580B1 (en) | Classification of exterior and interior triangles for artwork rendering | |
KR102477265B1 (en) | Graphics processing apparatus and method for determining LOD (level of detail) for texturing of graphics pipeline thereof | |
KR20150060026A (en) | Method and apparatus for rendering a current command using a previous command | |
US11989807B2 (en) | Rendering scalable raster content | |
JP4425734B2 (en) | How to provide a vector image with hidden lines removed | |
US8390645B1 (en) | Method and system for rendering connecting antialiased line segments | |
KR102585220B1 (en) | Method and apparatus for performing tile-based rendering | |
US11776179B2 (en) | Rendering scalable multicolored vector content | |
US11908069B2 (en) | Graphics processing | |
KR102666054B1 (en) | Graphics processing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |