KR20160112925A - Method and apparatus for performing tile-based rendering - Google Patents

Method and apparatus for performing tile-based rendering Download PDF

Info

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
Application number
KR1020160001614A
Other languages
Korean (ko)
Other versions
KR102585220B1 (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 EP16161225.4A priority Critical patent/EP3070677B1/en
Priority to US15/075,529 priority patent/US10210639B2/en
Publication of KR20160112925A publication Critical patent/KR20160112925A/en
Application granted granted Critical
Publication of KR102585220B1 publication Critical patent/KR102585220B1/en

Links

Images

Classifications

    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite 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

According to an embodiment of the present invention, a method for performing a tile-based rendering classifies tiles included in a frame based on parameters associated with a Bezier curve included in an object, and performs a rendering on the basis of the classification result of the tiles.

Description

타일 기반 렌더링을 수행하는 방법 및 장치 {Method and apparatus for performing tile-based rendering}TECHNICAL FIELD [0001] The present invention relates to a tile-

타일 기반 렌더링을 수행하는 방법 및 장치를 개시한다.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 rendering apparatus 100 includes a preprocessor 110, a classifier 120, and a rendering unit 130.

렌더링 장치(100)는 베지어 커브(Bezier curve)에 대한 타일 기반 렌더링(tile based rendering)을 수행한다. 또한, 렌더링 장치(100)는 타일의 끝점(endpoint)들 상에 소정의 테스트들을 선택적으로 수행할 수 있다. 따라서, 렌더링 장치(100)는 렌더링을 수행하는데 소모되는 연산 전력(computational power)을 감소시킬 수 있는바, 최적의 타일 비닝이 수행될 수 있다. 여기에서, 끝점은 타일의 모서리에 대응하는 포인트를 의미한다. 예를 들어, 타일의 형상이 사각형이라고 가정하면, 타일은 4개의 끝점들을 포함한다. The rendering apparatus 100 performs tile-based rendering of Bezier curves. The rendering device 100 may also selectively perform certain tests on the endpoints of the tiles. Accordingly, the rendering apparatus 100 can reduce the computational power consumed in performing the rendering, so that the optimal tile binning can be performed. Here, the end point means a point corresponding to the corner of the tile. For example, assuming that the shape of the tile is a rectangle, the tile includes four endpoints.

렌더링 장치(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 rendering device 100 may use implicit equation methods such as loop-blinn test, maximum-minimum text, and line test to determine the Determines whether all of the endpoints are located inside the Bezier curve or outside the Bezier curve. In addition, the rendering apparatus 100 may divide each of the tiles included in the frame into sub tiles based on the size of the tile. Here, the loop-blind test is a test based on the content of "Resolution Independent Curve Rendering using Programmable Graphics Hardware" co-authored by Charles Loop and Jim Blinn.

렌더링 장치(100)는 베지어 커브와 관련된 파라미터들을 연산할 수 있다. 이때, 베지어 커브는 외부 장치로부터 수신된 객체의 기하학적 정보(geometric information)를 이용하여 획득될 수 있다. 객체는 렌더링이 수행되는 대상을 의미한다. 렌더링 장치(100)는 연산된 파라미터들에 기초하여 프레임에 포함된 타일들 각각을 베지어 커브의 내부에 위치하는 타일(이하, ‘내부 타일’이라고 함), 외부에 위치하는 타일(이하, ‘외부 타일’이라고 함) 또는 부분적으로 내부에 위치하는 타일(이하, ‘부분 내부 타일’이라고 함)로 분류할 수 있다. 그리고, 렌더링 장치(100)는 분류 결과에 기초하여 베지어 커브에 대한 타일 기반 렌더링을 수행한다.Rendering apparatus 100 may calculate parameters related to Bezier curves. At this time, the Bezier curve can be obtained by using the geometric information of the object received from the external device. An object is an object on which rendering is performed. The rendering apparatus 100 may further include a tile (hereinafter referred to as 'inner tile') located inside the Bezier curve, a tile (hereinafter referred to as a 'tile' Outer tile ") or partially located inside the tile (hereinafter referred to as " partial inner tile "). Then, the rendering apparatus 100 performs tile-based rendering on the Bezier curve based on the classification result.

벡터 그래픽스 데이터는 메모리(미도시)에 저장될 수 있다, 또한, 벡터 그래픽스 데이터는 기하학적 프리미티브들(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 ".

Figure pat00001
Figure pat00001

수학식 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 rendering device 100 uses an implicit function to perform an optimized process that replaces the test that was performed on all points in the scene with a test that performed on the tiles. For example, the rendering device 100 identifies tiles located inside or outside the Bezier curve and performs a per-pixel loop-blin check on the identified tiles only. That is, the rendering apparatus 100 does not perform a loop-blind test on all the pixels in the scene. For tiles where all of the area of the tile is not classified as being located inside or outside the Bezier curve, the rendering device 100 performs a pixel-by-pixel loop-by-pixel inspection only on such tiles. Thus, the computational power consumed during tile-based rendering is reduced. The rendering device 100 also creates a plurality of bounding boxes and bin the bounding boxes. Thus, the rendering apparatus 100 binifies the Bezier curve to fill the interior of the Bezier curve, rather than just binning the Bezier curve for only the stroke of the Bezier curve (i.e., outlining). In other words, color can be set inside the rendering device 100 Bezier curve.

도 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 rendering apparatus 100 shown in FIG. Therefore, it is understood that the description described above with respect to the rendering apparatus 100 shown in FIG. 1 is applied to the method of performing the tile-based rendering of FIG. 2, even if omitted from the following description.

210 단계에서, 전처리부(110)는 객체의 기하학적 정보를 이용하여 객체에 포함된 베지어 커브와 관련된 파라미터를 연산한다. 예를 들어, 렌더링 장치(100)는 외부 장치로부터 객체의 기하학적 정보를 수신할 수 있다.In step 210, the preprocessing unit 110 computes parameters related to the Bezier curve included in the object using the geometric information of the object. For example, rendering device 100 may receive geometric information of an object from an external device.

베지어 커브와 관련된 파라미터의 예로는 바운딩 박스(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 Bezier curve 310 filled with a concave region of Bezier curves, and FIG. 3B illustrates a Bezier curve 320 filled with a convex region of Bezier curves.

도 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 rendering device 100 fills the Bezier curve according to the usual methods in the art. For example, rendering device 100 may be populated according to a "standard-fill" or "scan-line" approach.

도 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 endpoints 420. The convex hole 410 is constituted by three lines connecting the three control points of the secondary Bezier curve 430. Convex hole 410 is defined as the boundary of the intersection of all convex sets. All convex sets contain the intersection of half spaces or all vertices. Semi-spaces are created by taking three vertices at a time to construct a plane, and having different vertices on the one hand. The entire Bezier curve 430 is included in the convex hole 410. The second Bezier curve 430 can be expressed as Equation 2 defined by the variable t.

Figure pat00002
Figure pat00002

수학식 2에서 a, b 및 c는 베지어 커브(430)의 컨트롤 포인트들을 의미한다.In Equation (2), a, b and c denote the control points of Bezier curve 430.

베지어 커브(430)는 시계 방향으로 나열된 컨트롤 포인트들에 의하여 정해진다. 또한, 베지어 커브(430)의 루프-블린 파라미터는 (0, 0), (0, 0.5) 및 (1, 1)을 포함한다.The Bezier curve 430 is determined by the control points arranged in the clockwise direction. In addition, the loop-blind parameters of Bezier curve 430 include (0,0), (0,5.5) and (1,1).

또한, 베지어 커브(430)의 극점(440)은 아래의 수학식 3 및 4와 같이 베지어 방정식을 미분함으로써 획득된다.Also, the pole 440 of the Bezier curve 430 is obtained by differentiating the Bezier equation as shown in Equations (3) and (4) below.

Figure pat00003
Figure pat00003

Figure pat00004
Figure pat00004

극점(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.

Figure pat00005
Figure pat00005

수학식 5에 의하여 베지어 커브(430) 상의 2개의 극점들이 획득되는데, 하나는 x 축 방향이고, 다른 하나는 y축 방향이다. 유효한 극점(440)은

Figure pat00006
의 범위를 갖는다.Two poles are obtained on the Bezier curve 430 according to equation (5), one in the x-axis direction and the other in the y-axis direction. A valid pole 440
Figure pat00006
Lt; / RTI >

또한, 베지어 커브(430)의 시작점으로부터 종료점을 잇는 라인(즉, 기저(base)) 상의 어느 하나의 지점과 극점(440)이 만나는 라인(450)이 생성된다. 예를 들어, 베지어 커브(430)의 컨트롤 포인트들이 a, b 및 c라고 가정하면, 라인(450)의 최고점은 극점(440)에 대응한다. 또한, 라인(450)의 최저점은 컨트롤 포인트 a 로부터 컨트롤 포인트 c 까지 연결한 선의 어느 하나의 지점과 대응한다. 도 4에 도시된 바와 같이, 라인(450)은 베지어 커브(430)의 극점(440)으로부터 베지어 커브(430)의 기저(base) 상의 어느 하나의 지점까지 연결함에 따라 생성된다.In addition, a line 450 is created in which the pole 440 meets any point on the line connecting the starting point and the ending point of the Bezier curve 430 (i.e., the base). For example, suppose that the control points of Bezier curve 430 are a, b, and c, the highest point of line 450 corresponds to pole 440. Further, the lowest point of the line 450 corresponds to any one point of the line connecting from the control point a to the control point c. As shown in FIG. 4, line 450 is created by connecting from pole 440 of Bezier curve 430 to any point on the base of Bezier curve 430.

바운딩 박스(460)는 당해 기술 분야의 일반적인 방식을 적용함으로써 컨트롤 포인트들의 최소 값 및 최대 값으로부터 설정된다. 예를 들어, 베지어 커브(430)의 컨트롤 포인트 삼각형(즉, 컨벡스 홀(410))은 maxY 및 minY를 찾은 이후에 비닝된다. 여기에서, maxY 및 minY는 베지어 커브(430)의 컨트롤 포인트들 중 어느 하나에 대응한다. Y축 방향으로의 이러한 범위에 의하여, 베지어 커브(430)의 컨벡스 홀(410)을 비닝하기 위하여 스캔 라인들(scan lines)과 수평 폭(horizontal span)이 생성된다. 이러한 범위들로부터, 교차하는 타일들은 1 (빈)로 획득된다. 그러나, 바운딩 박스(460)는 당해 기술 분야의 다른 방식에 따라 설정될 수도 있다.The bounding box 460 is set from the minimum and maximum values of the control points by applying a general method in the art. For example, the control point triangle (i.e., convex hole 410) of Bezier curve 430 is binned after finding maxY and minY. Here, maxY and minY correspond to any one of the control points of the Bezier curve 430. By this range in the Y-axis direction, scan lines and a horizontal span are generated to bin the convex hole 410 of the Bezier curve 430. From these ranges, intersecting tiles are obtained with 1 (bin). However, the bounding box 460 may be set according to other manners in the art.

다시 도 2를 참조하면, 220 단계에서, 분류부(120)는 파라미터들에 기초하여 프레임에 포함된 타일들을 분류한다. 구체적으로, 분류부(120)는 전처리부(110)가 연산한 파라미터들을 이용하여 프레임에 포함된 타일들을 분류한다.Referring again to FIG. 2, in step 220, the classifier 120 classifies the tiles included in the frame based on the parameters. In detail, the classifying unit 120 classifies the tiles included in the frame using the parameters calculated by the preprocessing unit 110.

예를 들어, 분류부(120)는 프레임에 포함된 타일들 중에서 끝점들(endpoints) 전부가 컨벡스 홀의 외부에 위치하는 적어도 하나의 타일을 제 1 위치 표식(position indicia)으로 분류한다. 여기에서, 끝점들은 타일의 모서리들에 대응하는 포인트들을 의미한다. For example, the classifier 120 classifies at least one tile, which is located outside the convex hole, as a first position marker in the tiles included in the frame, all of the endpoints. Here, the end points are points corresponding to the edges of the tile.

또한, 분류부(120)는 프레임에 포함된 타일들 중에서 끝점들 중 일부가 컨벡스 홀의 내부에 위치하는 타일들을 결정한다. 그리고, 분류부(120)는 결정된 타일들에 대하여 루프-블린 테스트를 수행하고, 루프-블린 테스트의 결과에 기초하여 타일들을 분류한다. In addition, the classifying unit 120 determines tiles in which some of the end points among the tiles included in the frame are located inside the convex holes. Then, the classifying unit 120 performs a loop-blin test on the determined tiles and classifies the tiles based on the result of the loop-blin test.

구체적으로, 루프-블린 테스트의 결과에 따라, 어느 타일의 끝점들 전부가 컨벡스 홀 및 베지어 커브의 내부에 위치하는 것으로 식별되면, 분류부(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 classifier 120 classifies the tile as a second location marker . On the other hand, according to the result of the loop-blind test, if all of the end points of one tile are identified as being located outside the Bezier curve, the classification unit 120 classifies the tile as a third location marker. On the other hand, according to the result of the loop-blind test, if some of the end points of a tile are identified as being located inside the Bezier curve, the classifier 120 classifies the tile as a fourth position marker.

도 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 Bezier curve 510 is referred to as a convex region 520 and can be defined by Equation 6 below.

Figure pat00007
Figure pat00007

분류부(120)는 프레임(500)에 포함된 타일들 중에서 모든 끝점들이 볼록 영역(520)의 내부에 위치하는 타일들(540)을 결정하고, 그 타일들(540)을 내부 타일들로 표시한다. 이와 비슷하게, 베지어 커브(510)의 외부 영역은 오목 영역(530)이라고 하며, 아래의 수학식 7에 의하여 정의될 수 있다.The classifying unit 120 determines tiles 540 in which all the end points of the tiles included in the frame 500 are positioned within the convex region 520 and displays the tiles 540 in the inner tiles do. Similarly, the outer region of the Bezier curve 510 is called the concave region 530 and can be defined by Equation (7) below.

Figure pat00008
Figure pat00008

수학식 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 classification unit 120 displays tiles in which all the end points of the tiles included in the frame 500 are located outside the concave region 530 as outer tiles.

이하에서는, 아래와 같은 원칙에 따라 서술한다.Hereinafter, the following principle will be described.

먼저, 베지어 커브(510)의 내부 영역은 볼록 영역(520)으로 정의한다. 만약, 타일의 모든 끝점들이 볼록 영역에 포함되었다면, 그 타일은 베지어 커브(510)의 내부에 위치하는 것으로 한다.First, the inner region of the Bezier curve 510 is defined as a convex region 520. If all the end points of the tile are included in the convex region, the tile is located inside the Bezier curve 510.

다음으로, 베지어 커브(510)의 극점의 외부에 위치한 타일들은 베지어 커브(510)의 외부에 위치하는 것으로 한다.Next, the tiles located outside the poles of the Bezier curve 510 are located outside the Bezier curve 510.

그 다음으로, 모든 끝점들이 베지어 커브(510)의 외부에 위치하는 타일은 베지어 커브(510)의 극점으로부터 컨벡스 홀의 기저까지 연결된 라인과 만나지 않고서는 베지어 커브(510)와는 절대 교차하지 않는다.Next, the tiles where all the end points are located outside the Bezier curve 510 never cross the Bezier curve 510 without encountering a line connected from the pole of the Bezier curve 510 to the base of the convex hole .

다시 도 2를 참조하면, 230 단계에서, 렌더링부(130)는 타일들의 분류 결과에 기초하여 타일 기반 렌더링을 수행한다.Referring back to FIG. 2, in step 230, the rendering unit 130 performs tile-based rendering based on the classification results of the tiles.

도 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 rendering apparatus 100 shown in FIG. Therefore, it is understood that the description described above with respect to the rendering apparatus 100 shown in FIG. 1 is applied to the method of performing the tile-based rendering of FIG. 6, even if omitted from the following description.

610 단계에서, 렌더링 장치(100)는 베지어 커브에 대하여 사전 렌더링 파이프라인(pre-rendering pipeline)을 진행한다. 사전 렌더링 파이프라인은 베지어 커브에 대한 정보를 수신하는 과정을 포함한다. 다시 말해, 사전 렌더링 파이프라인은 외부 장치로부터 객체의 기하학적 정보를 수신하는 과정을 포함한다.In operation 610, the rendering apparatus 100 proceeds to a pre-rendering pipeline for the Bezier curve. The pre-rendering pipeline includes receiving information about Bezier curves. In other words, the pre-rendering pipeline includes receiving geometric information of an object from an external device.

620 단계에서, 렌더링 장치(100)는 커브 전처리(prepocessing) 단계를 수행한다. 다시 말해, 전처리부(110)는 베지어 커브와 관련된 파라미터를 연산한다. 베지어 커브와 관련된 파라미터에는, 도 4를 참조하여 상술한 바운딩 박스(460), 컨벡스 홀(410), 루프-블린 파타미터, 극점(440) 또는 극점(440)으로부터 컨벡스 홀(410)의 기저까지 연결된 라인(450)이 포함된다.In operation 620, the rendering apparatus 100 performs a curve preprocessing step. In other words, the preprocessing unit 110 computes parameters related to the Bezier curve. The parameters associated with the Bezier curve include the base of the convex hole 410 from the bounding box 460, the convex hole 410, the loop-blin fat meter, the pole 440 or the pole 440 described above with reference to FIG. And a line 450 connected thereto.

630 단계에서, 렌더링 장치(100)는 타일 비닝을 수행한다. 다시 말해, 분류부(120)는 후술할 다양한 테스트들을 이용하여 프레임 버퍼의 타일들 각각이 내부 타일인지 아니면 외부 타일인지로 분류한다.In operation 630, the rendering apparatus 100 performs tile binning. In other words, the classifying unit 120 classifies each of the tiles of the frame buffer into an inner tile or an outer tile using various tests to be described later.

640 단계에서, 렌더링 장치(100)는 타일에 대한 렌더링 파이프라인을 진행한다. 다시 말해, 렌더링부(130)는 타일 비닝이 수행되는 동안 연산된 파라미터들을 이용하여 타일들에 교차하는 베지어 커브(또는, 프리미티브들)을 렌더링 한다. 그리고, 렌더링부(130)는 렌더링 결과를 프레임 버퍼에 저장한다. 다시 말해, 렌더링부(130)는 분류 결과에 따라 프레임 버퍼의 타일들을 채운다. 예를 들어, 어떤 타일이 외부 타일로 분류되었다고 가정하면, 렌더링부(130)는 그 타일을 렌더링 하지 않고, 다음 타일로 넘어간다. 반대로, 어떤 타일이 내부 타일로 분류되었다고 가정하면, 렌더링부(130)는 그 타일을 채우기 위하여 쉐이더 방법(shader method)을 적용한다. 렌더링이 수행된 결과는 픽셀 쉐이더 또는 그래픽 처리 장치(GPU) 파이프 라인의 다른 유닛들을 통과할 수 있다.In operation 640, the rendering apparatus 100 proceeds to a rendering pipeline for the tile. In other words, the rendering unit 130 renders Bezier curves (or primitives) intersecting the tiles using the parameters calculated during the tile binning process. The rendering unit 130 stores the rendering result in the frame buffer. In other words, the rendering unit 130 fills the tiles of the frame buffer according to the classification result. For example, assuming that a tile is classified as an outer tile, the rendering unit 130 does not render the tile, but proceeds to the next tile. Conversely, assuming that a tile is classified as an inner tile, the rendering unit 130 applies a shader method to fill the tile. The results of the rendering may pass through other units of the pixel shader or graphics processing unit (GPU) pipeline.

도 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 rendering apparatus 101 includes a preprocessing unit 110, a classifying unit 120, a rendering unit 130, and a control unit 140. The rendering device 101 may also be implemented as a graphics processing unit (GPU).

전처리부(110)는 베지어 커브와 관련된 파라미터들을 연산한다. 이때, 베지어 커브는 외부 장치로부터 수신된 객체의 기하학적 정보에 기초하여 획득될 수 있다. 또한, 전처리부(110)는 도 4를 참조하여 상술한 바운딩 박스(460), 컨벡스 홀(410), 루프-블린 파타미터, 극점(440) 또는 극점(440)으로부터 컨벡스 홀(410)의 기저까지 연결된 라인(450)을 연산한다. 전처리부(110)는, 타일 비닝 프로세스가 진행되기 전에, 버텍스 쉐이더(vertex shader) 및 클리핑(clipping) 처리를 수행할 수도 있다.The preprocessing unit 110 computes parameters related to the Bezier curve. At this time, the Bezier curve can be obtained based on the geometric information of the object received from the external device. The preprocessing unit 110 may further include a plurality of convex holes 410 extending from the bounding box 460, the convex hole 410, the loop-blinpatameter, the pole 440 or the pole 440, The connected line 450 is calculated. The preprocessing unit 110 may perform a vertex shader and a clipping process before the tile binning process proceeds.

분류부(120)는 전처리부(110)에 의하여 연산된 파라미터들에 기초하여 프레임에 포함된 타일들을 내부 타일, 외부 타일 및 부분 내부 타일(partially inside tile) 중 어느 하나로 분류한다. 여기에서, 부분 내부 타일은 타일의 끝점들 중 일부가 베지어 커브의 내부에 위치하는 타일을 의미한다. 분류부(120)는 컨벡스 홀 검사를 수행하여 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일들을 결정한다. 그리고, 분류부(120)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일들을 외부 컨벡스 홀 타일(outside convex hull tile)로 분류하고, 분류된 타일을 제 1 위치 표식으로 표시한다. The classifying unit 120 classifies the tiles included in the frame into one of an inner tile, an outer tile, and a partially inner tile based on the parameters calculated by the preprocessing unit 110. [ Here, a partial inner tile refers to a tile in which some of the end points of the tile are located inside the Bezier curve. The classifier 120 performs a convex hole test to determine tiles where all end points are located outside the convex hole. The classifying unit 120 classifies the tiles where all end points are located outside the convex holes as an outside convex hull tile, and displays the classified tiles as a first location mark.

분류부(120)는 컨벡스 홀 검사를 수행하여 적어도 하나의 끝점이 컨벡스 홀과 교차하는 타일들을 결정한다. 그리고, 분류부(120)는 적어도 하나의 끝점이 컨벡스 홀과 교차하는 타일들 각각에 대하여 루프-블린 테스트를 수행한다. 그리고, 분류부(120)는 루프-블린 테스트의 수행 결과에 기초하여 타일을 내부 타일, 외부 타일 및 부분 내부 타일 중 어느 하나로 분류한다. 구체적으로, 분류부(120)는 모든 끝점들이 컨벡스 홀 및 베지어 커브의 내부에 위치하는 타일을 내부 타일로 분류하고, 분류된 타일을 제 2 위치 표식으로 표시한다. 한편, 분류부(120)는 모든 끝점들이 베지어 커브의 외부에 위치하는 타일을 외부 타일로 분류하고, 분류된 타일을 제 3 위치 표식으로 표시한다. The classifier 120 performs a convex hole test to determine tiles where at least one endpoint intersects the convex hole. Then, the classifier 120 performs a loop-blind test for each of the tiles whose at least one end point crosses the convex hole. Then, the classifying unit 120 classifies the tile into one of an inner tile, an outer tile, and a partial inner tile based on the result of the loop-blin test. Specifically, the classifying unit 120 classifies the tiles in which all end points are located in the convex hole and the Bezier curve as internal tiles, and marks the classified tiles as the second location mark. Meanwhile, the classifier 120 classifies the tiles where all the end points are located outside the Bezier curve into external tiles, and marks the classified tiles by the third location mark.

분류부(120)는 베지어 커브의 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 작은지 여부를 결정하고, 베지어 커브의 극점의 x 좌표 값이 타일의 모든 끝점들의 x 좌표 값보다 작은지 여부를 결정하고, 그 타일을 외부 타일로 분류한다. 또한, 분류부(120)는 베지어 커브의 극점의 x 좌표 값이 베지어 커브의 중간 컨트롤 포인트보다 큰지 여부를 결정하고, 베지어 커브의 극점의 x 좌표 값이 타일의 모든 끝점들의 x 좌표 값보다 큰지 여부를 결정하고, 그 타일을 외부 타일로 분류한다. 추가적으로, 분류부(120)는 라인 테스트를 수행하여, 베지어 커브의 극점으로부터 컨벡스 홀의 기저까지 연결된 라인의 일 측면에 위치하는 타일을 외부 타일로 분류한다.The classifier 120 determines whether the x coordinate value of the poles of the Bezier curve is smaller than the intermediate control point of the Bezier curve and whether the x coordinate value of the poles of the Bezier curve is greater than the x coordinate value of all the end points of the tile Determine whether it is small, and classify the tile as an external tile. The classifier 120 also determines whether the x coordinate value of the poles of the Bezier curve is greater than the intermediate control point of the Bezier curve and determines whether the x coordinate value of the poles of the Bezier curve is the x coordinate value of all end points of the tile , And classifies the tile as an external tile. In addition, the classifier 120 performs a line test to classify tiles located on one side of a line connected from the poles of the Bezier curve to the base of the convex holes as external tiles.

분류부(120)는 루프-블린 테스트의 결과에 기초하여 타일의 끝점들 중 일부가 베지어 커브의 내부에 위치하는 타일들을 식별한다. 그리고, 분류부(120)는 식별된 타일들을 부분 내부 타일로 분류하고, 분류된 타일을 제 4 위치 표식으로 표시한다. 그리고, 분류부(120)는 제 4 위치 표식으로 분류된 타일을 복수의 서브 타일들로 분할하고, 서브 타일들 각각의 끝점들을 이용하여 베지어 커브와 관련된 파라미터들에 대한 서브 타일들 각각의 위치를 식별한다. 그리고, 분류부(120)는 서브 타일들 각각을 내부 타일, 외부 타일 및 부분 내부 타일 중 어느 하나로 분류한다.The classifier 120 identifies tiles where some of the endpoints of the tile are located inside the Bezier curve based on the result of the loop-blin test. The classifying unit 120 classifies the identified tiles into a partial inner tile, and displays the classified tile as a fourth location mark. The classifying unit 120 divides the tiles classified into the fourth location mark into a plurality of sub tiles and uses the end points of each of the sub tiles to locate each of the sub tiles for the parameters related to the Bezier curve Lt; / RTI > The classifying unit 120 classifies each of the sub tiles into one of an inner tile, an outer tile, and a partial inner tile.

제어부(140)는 복수의 프리미티브들을 렌더링하도록 렌더링 장치(101)에게 지시하는 커맨드들을 외부 장치로부터 수신한다. 제어부(140)는 수신된 커맨드들을 디코딩하고, 커맨드들에 따라 렌더링 장치(101)의 엘리먼트들을 제어한다. 또한, 제어부(140)는 커맨드에 포함된 정보(예를 들어, 프리미티브 또는 버텍스 정보)를 메모리(미도시)에 저장하거나 버퍼(미도시)에 저장하거나 렌더링 장치(101)의 엘리먼트들에 저장한다. 제어부(140)는 수신된 커맨드에 기초하여 타일 기반 렌더링 프로세스가 수행되도록 렌더링 장치(101)를 제어한다.The control unit 140 receives commands from the external apparatus to instruct the rendering apparatus 101 to render a plurality of primitives. The control unit 140 decodes the received commands and controls the elements of the rendering apparatus 101 according to the commands. The control unit 140 stores information (e.g., primitive or vertex information) included in the command in a memory (not shown) or in a buffer (not shown) or in elements of the rendering apparatus 101 . The control unit 140 controls the rendering apparatus 101 to perform a tile-based rendering process based on the received command.

렌더링부(130)는 타일 비닝이 수행된 베지어 커브를 렌더링한다. 렌더링부(130)는 타일 비닝이 수행된 베지어 커브를 렌더링 하기 위한 분류 결과에 기초하여 베지어 커브에 대하여 타일 기반 렌더링을 수행한다. 렌더링부(130)는 분류 결과에 기초하여 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록을 생성한다. The rendering unit 130 renders a Bezier curve on which tile-binning has been performed. The rendering unit 130 performs tile-based rendering on the Bezier curve based on the classification result for rendering the Bezier curve on which the tile binning has been performed. The rendering unit 130 generates a location marker list corresponding to each of the tiles included in the frame based on the classification result.

렌더링부(130)는 위치 표식 목록에 기초하여 내부 타일로 분류된 타일을 식별하고, 식별된 내부 타일의 프래그먼트들 각각에 대하여 타일 기반 렌더링을 수행한다. 또한, 렌더링부(130)는 위치 표식 목록에 기초하여 외부 타일로 분류된 타일을 식별하고, 식별된 외부 타일의 프래그먼트들에 대해서는 타일 기반 렌더링을 수행하지 않는다. The rendering unit 130 identifies tiles classified as internal tiles based on the location marker list, and performs tile-based rendering on each of the fragments of the identified internal tiles. Also, the rendering unit 130 identifies tiles classified as external tiles based on the location marker list, and does not perform tile-based rendering on the fragments of the identified external tiles.

렌더링부(130)는 위치 표식 목록에 기초하여 부분 내부 타일로 분류된 타일을 식별하고, 부분 내부 타일의 각각의 프래그먼트에 대하여 루프-블린 테스트를 수행한다. 그리고, 렌더링부(130)는 루프-블린 테스트 결과에 기초하여 프래그먼트를 베지어 커브의 내부에 위치하는 프래그먼트(이하, ‘내부 프래그먼트’라고 함) 또는 베지어 커브의 외부에 위치하는 프래그먼트(이하, ‘외부 프래그먼트’라고 함)로 분류한다. 그리고, 렌더링부(130)는 프래그먼트의 분류 결과에 기초하여 부분 내부 타일에 대한 타일 기반 렌더링을 수행한다.The rendering unit 130 identifies tiles classified as partial inner tiles based on the location marker list, and performs a loop-blind test on each fragment of the inner tiles. Based on the loop-blind test result, the rendering unit 130 converts the fragment into a fragment located inside the Bezier curve (hereinafter referred to as an 'internal fragment') or a fragment located outside the Bezier curve Quot; external fragment "). Then, the rendering unit 130 performs tile-based rendering on the partial inner tile based on the fragment classification result.

렌더링부(130)는 타일의 분류 결과에 따라 타일들을 채운다. 예를 들어, 어떤 타일이 외부 타일로 분류되었다면, 렌더링부(130)는 그 타일을 채우지 않고, 다음 타일로 진행한다. 반대로, 어떤 타일이 내부 타일로 분류되었다면, 렌더링부(130)는 그 타일에 대해서 쉐이더를 적용한다.The rendering unit 130 fills the tiles according to the classification results of the tiles. For example, if a tile is classified as an outer tile, the rendering unit 130 does not fill the tile and proceeds to the next tile. Conversely, if a tile is classified as an inner tile, the rendering unit 130 applies a shader to the tile.

도 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 rendering apparatuses 100 and 101 shown in Figs. 1 and 7. Accordingly, other general components other than the components shown in Figs. 1 and 7 may be further included. In addition, rendering devices 100 and 101 may include various modules or components for communicating with other hardware or software components. For example, a hardware or software component may be, but is not limited to, a process running on a processor, an executable process, a thread of execution, a program, or a computer.

도 8은 일 실시예에 따른 전처리부가 동작하는 일 예를 나타내는 흐름도이다.FIG. 8 is a flowchart illustrating an example of operation of the preprocessing unit according to an embodiment.

810 단계에서, 전처리부(110)는 베지어 커브의 컨트롤 포인트들의 최대 값 및 최소 값에 기초하여 바운딩 박스를 연산한다. 도 4를 참조하여 상술한 바와 같이, 전처리부(110)는 당해 기술분야에서의 일반적인 방식을 이용하여 바운딩 박스를 설정할 수 있다.In step 810, the preprocessing unit 110 computes the bounding box based on the maximum and minimum values of the control points of the Bezier curve. As described above with reference to FIG. 4, the preprocessing unit 110 may set the bounding box using a general method in the art.

820 단계에서, 전처리부(110)는 상술한 수학식 1로 주어진 루프-블린 음함수 방정식에 기초하여 베지어 커브의 루프-블린 파라미터들을 연산한다. 베지어 커브의 루프-블린 파라미터들은 (0,0), (0.5,0) 및 (1,1)를 포함한다.In step 820, the preprocessing unit 110 calculates the loop-blind parameters of the Bezier curve based on the loop-blind inverse function equation given by Equation (1). The loop-blind parameters of the Bezier curve include (0,0), (0.5,0) and (1,1).

830 단계에서, 전처리부(110)는 루프-블린 파라미터들에 기초하여 베지어 커브의 적어도 하나의 극점을 연산한다. 전처리부(110)는 상술한 수학식 5에 의하여 베지어 커브의 극점들을 연산할 수 있다.In step 830, the preprocessing unit 110 computes at least one pole of the Bezier curve based on the loop-blind parameters. The preprocessing unit 110 can calculate the poles of the Bezier curve according to Equation (5).

840 단계에서, 전처리부(110)는 베지어 커브의 극점들로부터 컨벡스 홀의 기저까지 연결된 라인을 연산한다.In step 840, the preprocessing unit 110 computes a line connected from the poles of the Bezier curve to the base of the convex hole.

도 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 classifier 120 or the rendering unit 130. FIG. In addition, the steps and other descriptions shown in FIG. 8 provide the basis for a control program that may be executed in a microcontroller, microprocessor, or equivalent device.

도 9는 일 실시예에 따른 분류부가 동작하는 일 예를 나타내는 흐름도이다.9 is a flowchart showing an example of the operation of the classifier according to an embodiment.

910 단계에서, 분류부(120)는 파라미터들을 전처리된 베지어 커브와 함께 획득한다. 여기에서, 파라미터들은 전처리부(110)에서 연산된 파라미터들을 의미한다. 파라미터들에는 바운딩 박스, 컨벡스 홀, 베지어 커브에 대한 루프-블린 파타미터, 베지어 커브의 극점 또는 극점으로부터 컨벡스 홀의 기저까지 연결된 라인이 포함된다. 렌더링 장치(100)는 타일 기반 렌더링이 수행되는 과정에서 타일들 각각에 대한 특정한 위치 표식을 이용한다. 위치 표식은 컬러, 텍스쳐 또는 코드를 포함할 수 있으나 이에 한정되지 않고, 당해 기술분야에서 알려진 표식의 다른 유형들을 포함할 수 있다. 전처리된 베지어 커브가 획득될 때, 분류부(120)는 최초에 타일들 각각에 회색 컬러를 표시한다.In step 910, the classifier 120 acquires the parameters together with the preprocessed Bezier curve. Here, the parameters refer to parameters calculated in the preprocessing unit 110. FIG. The parameters include a bounding box, a convex hole, a loop-blended parametrically for a Bezier curve, and a line connected from the pole or pole of the Bezier curve to the base of the convex hole. The rendering apparatus 100 uses a specific location marker for each of the tiles in the tile-based rendering process. Location markers may include, but are not limited to, color, texture, or code, and may include other types of markings known in the art. When the preprocessed Bezier curve is obtained, the classifier 120 initially displays a gray color on each of the tiles.

920 단계에서, 분류부(120)는, 컨벡스 홀의 외부에 위치하는 타일들 및 컨벡스 홀과 교차하는 타일들을 획득하기 위하여, 컨벡스 홀을 이용하여 베지어 커브에 대하여 컨벡스 홀 검사를 수행한다. 컨벡스 홀 검사는 스캔 라인 및 수평 폭 프로세스를 이용하여 수행될 수 있다. 또는, 컨벡스 홀 검사는 표준적인 박스-트라이앵글 교차 테스트(box-triangle intersection test)를 이용하여 수행될 수도 있다.In step 920, the classifier 120 performs a convex hole test on the Bezier curve using a convex hole to obtain tiles located outside the convex hole and tiles intersecting the convex hole. Convex hole inspection can be performed using a scan line and a horizontal width process. Alternatively, the convex hole test may be performed using a standard box-triangle intersection test.

930 단계에서, 분류부(120)는 컨벡스 홀 검사 결과에 기초하여 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일인지 여부를 결정한다. 다시 말해, 분류부(120)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일을 식별한다. 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일이 식별되면 940 단계로 진행하고, 그렇지 않은 경우는 950 단계로 진행한다.In step 930, the classifying unit 120 determines whether all of the end points are located outside the convex hole based on the result of the convex hole test. In other words, the classifier 120 identifies tiles where all the end points are located outside the convex halls. If all the end points are located outside the convex hole, the process proceeds to step 940; otherwise, the process proceeds to step 950.

940 단계에서, 분류부(120)는 모든 끝점들이 컨벡스 홀의 외부에 위치하는 타일을 외부 컨벡스 홀 타일로 분류한다. 일 실시예에 따르면, 외부 컨벡스 홀 타일에는 특정한 컬러와 같은 제 1 위치 표식이 할당된다. 예를 들어, 942 단계에서, 분류부(120)는 외부 컨벡스 홀 타일들에 청색을 할당한다.In step 940, the classifier 120 classifies the tiles where all the end points are located outside the convex holes as the outer convex hole tiles. According to one embodiment, the outer convex hole tile is assigned a first location mark, such as a particular color. For example, in step 942, the classifier 120 assigns blue color to the outer convex hole tiles.

950 단계에서, 분류부(120)는 컨벡스 홀과 교차하는 적어도 하나의 끝점을 포함하는 타일을 결정한다. 그리고, 960 단계에서, 분류부(120)는 아래의 수학식 8을 이용하여 950 단계에서 결정된 타일에 대하여 루프-블린 테스트를 수행한다.In step 950, the classifier 120 determines a tile that includes at least one endpoint that intersects the convex hole. In step 960, the classifier 120 performs a loop-blind test on the tiles determined in step 950 using the following equation (8).

Figure pat00009
Figure pat00009

수학식 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 classifier 120 identifies tiles where all endpoints are located within the Bezier curve and convex holes based on the loop-blin test. To this end, the u and v values at the endpoints of the tile are first determined through interpolation from the endpoints of the convex hole (i. E., The endpoints of the triangle corresponding to the convex hole). Thereafter, a loop-blind test using equation (8) is performed. Tiles in which all endpoints lie inside a Bezier curve and a convex hole are identified by internal tiles. In step 972, the classifier 120 classifies the tiles located inside the Bezier curve and the convex holes of all end points into internal tiles, and displays a second location mark (e.g., white) on the tiles.

루프-블린 테스트의 제 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 step 980, the classifier 120 identifies the tiles where at least one endpoint is located within the bezier curve based on the loop-blin test. In step 982, the classifier 120 classifies the tiles in which at least one end point is located inside the Bezier curve as a partial inner tile, and displays a fourth position mark (e.g., gray) on the tiles .

루프-블린 테스트의 제 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 step 990, the classifier 120 identifies tiles where all of the endpoints are located outside of the Bezier curve based on the loop-blin test. In step 992, the classifier 120 classifies the tiles where all end points are located outside the Bezier curve as external tiles, using maximum-minimum text and line test , And displays a third location mark (e.g., green) on the tiles.

도 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 preprocessing unit 110 or the rendering unit 130. FIG. In addition, the steps and other descriptions shown in Figure 9 provide the basis for a control program that may be executed in a microcontroller, microprocessor, or equivalent device.

도 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 classifier 120 may perform a max / min test for each of the x and y coordinates of the poles.

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 step 1010, the classifier 120 acquires a tile with all the end points located outside the Bezier curve, along with the Bezier curve. Thereafter, the classifying unit 120 determines whether or not the x extremity of the Bezier curve satisfies 0 <t <1. Here, t means Bezier parameter. If the x-pole value satisfies the range of 0 < t < 1, the classifying unit 120 determines in step 1020 whether the x-coordinate value of the pole is smaller than the intermediate control point of the Bezier curve. If the x coordinate value of the pole is smaller than the intermediate control point of the Bezier curve, in step 1030, the classifier 120 determines whether the x coordinate value of the pole is smaller than the x coordinate value of each of all the end points of the given tile . If the x coordinate value of the pole is smaller than the x coordinate value of each of the end points of the given tile, the classifying unit 120 classifies the tile as an external tile in step 1040, For example, green).

반대로, 극점의 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 classifier 120 determines in step 1030 whether the x coordinate value of the pole is greater than the x coordinate value of each of the end points of the given tile . If the x coordinate value of the pole is larger than the x coordinate value of each end point of the given tile, the classifying unit 120 classifies the tile as an external tile in step 1040, For example, green). 10, the classifier 120 performs the above-described process (i.e., the maximum / minimum test) on the x-axis value of the Bezier curve, but can perform the same process on the y-axis value .

만약, 주어진 타일이 베지어 커브의 극점에 대하여 최대/최소 테스트를 통과하지 못하는 경우, 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 classifier 120 performs the line test in step 1050. [ In other words, the classifier 120 performs a line test to determine whether the remaining tiles are located on the same side with respect to the line connected from the pole of the Bezier curve to the base of the convex hole. The line test is performed on the partial inner tile where all end points are located outside of the Bezier curve. The line test is performed on all tiles that have not yet been classified (i.e., remaining tiles). In step 1060, the classifier 120 classifies the remaining tiles that have passed the line test as external tiles based on the line test, and displays a third position mark (e.g., green) on the tiles. Thus, as the line test is performed, additional tiles are displayed as a third location mark.

도 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 preprocessing unit 110 or the rendering unit 130. Fig. In addition, the steps and other descriptions shown in FIG. 10 provide a basis for a control program that may be executed in a microcontroller, microprocessor, or equivalent device.

도 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 poles 1110 of the Bezier curve is smaller than the Bezier curve 1120 of the Bezier curve. 11B shows the direction of the Bezier curve in which the x coordinate value of the poles 1130 of the Bezier curve is larger than the intermediate control point 1140 of the Bezier curve.

도 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 unit 120 performs subtilling with respect to the tiles classified as the partial inner tile. Here, the sub-tiling means a process of dividing the tile into a plurality of sub-tiles. The rendering apparatuses 100 and 101 perform tile binning (step 630 in FIG. 6) for each of the subtiles. In addition, the classifying unit 120 may divide the sub tiles hierarchically, if necessary.

1210 단계에서, 분류부(120)는 타일들 중 일부를 부분 내부 타일들로 분류한다. 타일이 부분 내부 타일로 분류되는 과정은 도 9를 참조하여 상술한 바와 같다. 1220 단계에서, 분류부(120)는 메모리 제한에 기초하여 부분 내부 타일들 각각을 서브 타일들로 분할한다. 1230 단계에서, 분류부(120)는 서브 타일들 각각의 끝점들을 이용하여 베지어 커브의 파라미터들에 대한 적어도 하나의 서브 타일의 위치를 식별한다. 예를 들어, 각각의 서브 타일의 위치는 베지어 커브의 내부, 외부 또는 부분 내부 중 어느 하나로 식별될 수 있다. 1240 단계에서, 분류부(120)는 적어도 하나의 서브 타일을 베지어 커브에 대한 내부 타일, 외부 타일 또는 부분 내부 타일로 분류한다. 서브 타일들에 대한 분류는 도 8 내지 도 11을 참조하여 상술한 바와 같이 루프-블린 테스트, 최대/최소 테스트 및 라인 테스트의 조합을 이용하여 수행된다.In step 1210, the classifier 120 classifies some of the tiles into partial inner tiles. The process of classifying a tile into a partial inner tile is described above with reference to FIG. In step 1220, the classifier 120 divides each of the partial inner tiles into sub tiles based on the memory limitation. In step 1230, the classifier 120 uses the end points of each of the sub tiles to identify the location of at least one subtile for the parameters of the Bezier curve. For example, the position of each subtile may be identified as either inside, outside, or inside the Bezier curve. In step 1240, the classifier 120 classifies at least one subtile into an inner tile, an outer tile, or a partial inner tile for a Bezier curve. The classification for the sub-tiles is performed using a combination of loop-blin test, max / min test and line test as described above with reference to Figs. 8-11.

도 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 preprocessing unit 110 or the rendering unit 130. Fig. In addition, the steps and other descriptions shown in Figure 12 provide the basis for a control program that may be executed in a microcontroller, microprocessor, or equivalent device.

도 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 classifier 120 may divide a tile 1310 included in the frame 1300 into four sub-tiles. 14A shows an example in which tile binning is performed without performing sub-tiling. Meanwhile, FIG. 14B shows an example in which tile-binning is performed together with sub-tiling. 14A and 14B, the classifying unit 120 may divide each of gray tiles into sub tiles and classify each of the sub tiles into an inner tile or an outer tile.

도 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 operation 1510, the rendering unit 130 generates a location marker list corresponding to each of the classified tiles based on the classification result. Here, the classification means a process in which the classifier 120 classifies tiles (or sub tiles). The list may be generated as a linear list or bitstream, but is not limited thereto. In step 1520, the rendering unit 130 determines the color of the given tile. If it is assumed that the color of a given tile is white indicating that the tile is an inner tile for the Bezier curve, the rendering unit 130 declares all the fragments included in the tile as an inner fragment in step 1530, Proceed line. Here, the rendering pipeline refers to a standard rendering process executed in a graphics processing unit (GPU) present in the art. Also, after step 1530 is performed, the rendering unit 130 performs step 1570. FIG.

한편, 주어진 타일의 컬러가 그 타일이 베지어 커브에 대한 외부 타일임을 나타내는 녹색이라고 가정하면, 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 rendering unit 130 declares all the fragments included in the tile as an outer fragment, Do not perform. Also, assuming that the color of a given tile is gray indicating that the tile is a partial inner tile of the Bezier curve, the rendering unit 130, in step 1550, Test (per fragment loop blinn test). The result of a loop-by-fragment test per fragment generates two outputs (i.e., an inner fragment, an outer fragment).

구체적으로, 만약 부분 내부 타일의 프래그먼트들이 루프-블린 테스트를 통과하면, 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 rendering unit 130 classifies the fragments into inner fragments. In step 1570, the rendering unit 130 passes each of the internal fragments through the pixel shader or other units of the GPU rendering pipeline. Conversely, if the fragments of the partial inner tile do not pass the loop-blind test, then in step 1580, the rendering unit 130 classifies the fragments into outer fragments. In step 1590, the rendering unit 130 rejects the outer fragments. In other words, the rendering unit 130 does not perform any further rendering on the outer fragments. Thereafter, each of the classified tiles is filled based on the classification result described above. For example, if a given tile is classified as an outer tile, that tile is not rendered and goes to the next tile. Conversely, if a given tile is classified as a partial inner tile, a shader process is applied to fill the tile.

도 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 preprocessing unit 110 or the classifying unit 120. Fig. In addition, the steps and other descriptions shown in Figure 15 provide the basis for a control program that may be executed in a microcontroller, microprocessor, or equivalent device.

도 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 step 1610, the rendering apparatuses 100 and 101 preprocess the Bezier curve. In step 1620, the rendering apparatuses 100 and 101 perform a convex hole inspection on all the tiles included in the frame buffer. The result of the convex hole test produces two outputs. The first output of the convex hole test corresponds to tiles where all end points are located outside the convex hole. Accordingly, in step 1630, the rendering apparatuses 100 and 101 acquire tiles where all the end points are located outside the convex holes. In step 1632, the rendering apparatuses 100 and 101 allocate blue to the obtained tiles. The second output of the convex hole test corresponds to tiles where at least one endpoint intersects the convex hole. Thus, in step 1640, the rendering apparatuses 100 and 101 acquire tiles where at least one endpoint intersects the convex hole. In step 1650, the rendering apparatuses 100 and 101 perform a loop-blind test on the obtained tiles. The result of the loop-blin test produces three outputs. The first output of the loop-blin test corresponds to the tiles where all the end points are located inside the Bezier curve and the convex hole. Thus, in step 1660, the rendering apparatuses 100 and 101 acquire tiles where all endpoints are located within the Bezier curve and convex holes. In step 1662, the rendering apparatuses 100 and 101 allocate white to the obtained tiles.

루프-블린 테스트의 제 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 step 1670, the rendering apparatuses 100 and 101 acquire tiles within which some endpoints are located within the Bezier curve. In step 1672, the rendering apparatuses 100 and 101 assign gray to the obtained tiles.

루프-블린 테스트의 제 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 step 1680, the rendering apparatus 100, 101 performs a maximum / minimum test on the poles of the Bezier curve to classify the tiles located outside of the Bezier curve into outer tiles for all endpoints . If the given tile passes the maximum / minimum test, then in step 1682, the rendering device 100,101 assigns a green to the tile. Conversely, if the given tile does not pass the maximum / minimum test, then in step 1684, the rendering device 100, 101 performs a line test. If the given tile passes the line test, then in step 1686, the rendering device 100,101 assigns the green to that tile.

도 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 preprocessing unit 110, the classifying unit 120, or the rendering unit 130. FIG. In addition, the steps and other descriptions shown in Figure 16 provide the basis for a control program that may be executed in a microcontroller, microprocessor, or equivalent device.

도 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 rendering apparatus 100, 101 initially displays all the tiles in gray. Referring to FIG. 17B, the rendering apparatuses 100 and 101 perform a convex hole inspection to obtain tiles located outside the convex hole 1710 and tiles intersecting the convex hole 1710. FIG. The rendering apparatuses 100 and 101 display tiles located outside the convex hole 1710 in blue. Referring to FIG. 17C, the rendering apparatus 100, 101 performs a loop-blind test to determine whether all of the endpoints within the Bezier curve 1720 and some of the endpoints are within the Bezier curve 1720 Acquire tiles located inside. At this time, the rendering apparatuses 100 and 101 can perform the loop-blind test using the implicit function equation of Equation (8). Rendering apparatuses 100 and 101 display tiles in which all endpoints are located inside Bezier curve 1720 in white. Referring to FIG. 17D, the rendering apparatus 100, 101 performs a maximum / minimum test on the pole 1730 to obtain tiles where all endpoints are located outside of the Bezier curve 1720. The rendering apparatuses 100 and 101 display tiles in which all endpoints are located outside of the Bezier curve 1720 in green. On the other hand, there may be cases where all the end points are located outside the Bezier curve 1720 but the pole 1730 is located in the middle of the tile. In that case, the rendering device 100, 101 does not classify the tile as an external tile, but instead performs an appropriate test to identify whether the tile is an inner tile, an outer tile, or a partial inner tile. Referring to FIG. 17E, the rendering apparatuses 100 and 101 perform a line test on gray tiles where all the end points are located outside the Bezier curve 1720. The line test is performed to determine whether the remaining tiles are located on the same side with respect to the line 1740 connected from the pole 1720 to the base of the convex hole 1710. [ If the remaining tiles are located on the same side with respect to line 1740, the rendering apparatus 100,101 displays the tiles in green. The points formed by the two points on line 1740 and the signed area of the point to be inspected may be determined by one skilled in the art to check for the presence of a point on any side of line 1740, Which is determined using any method. Thus, additional tiles may be displayed in green after the line test is performed.

도 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 computing system 1800 includes at least one processing unit 1810 including a control unit 1811 and an arithmetic logic unit (ALU) 1812, a memory 1821, a tile memory A storage unit 1823, a graphics processing unit (GPU) 1830, a plurality of network devices 1840, a plurality of input / output devices 1850, and a frame buffer 1860. On the other hand, it will be understood by those of ordinary skill in the art that the computing system 1800 may include other functional components not shown in FIG.

처리부(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 processing unit 1810 processes the instructions for the method of the present invention. The processing unit 1810 receives commands from the control unit 1811 in order to perform instruction calibration. In addition, the processing unit 1810 performs other logical and arithmetic operations associated with the execution of the instructions, with the help of the ALU 1812. The instructions and codes required for the processing unit 1810 to operate may be stored in the memory 1821, the storage unit 1823 or both the memory 1821 and the storage unit 1823. The instructions and codes are read from memory 1821 and / or storage 1823 and executed by processing unit 1810. The processor 1810 may be a microprocessor, a microcontroller, a complex instruction set computing (CISC) microprocessor, a RISC (Reduced Instruction Set Computing) microprocessor, a VLIW (Very Long Instruction Word) microprocessor, an Explicitly Parallel Instruction Computing , A graphics processor, a digital signal processor, or some other type of processing circuitry, but is not limited thereto. The processor 1810 may also include embedded controllers, such as general purpose or programmable logic devices or arrays, application specific integrated circuits, single chip computers, smart cards, and the like .

메모리(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 memory 1821 may be a volatile memory or a non-volatile memory. Various computer readable storage media may be accessed or stored from memory 1821 elements. The memory elements may be read-only memory (ROM), random access memory (RAM), erasable programmable read-only memory (EP-ROM), electrically erasable programmable read-only memory (EEP-ROM), hard drive, , Compact disks, digital video disks, diskettes, magnetic tape cartridges, memory cards, etc.), and suitable memory devices for storing computer readable instructions.

타일 메모리(1822)는 타일 비닝 중에 그래픽 이미지에 속하는 특정 타일들을 나타낸다. 타일 메모리(1822)는 저장부(1823)의 일부분일 수도 있으나, 이에 제한되지 않는다. 타일 메모리(1822)는 처리된 타일들 각각에 대한 픽셀 값들을 저장한다. 또한, 타일 메모리(1822)는 타일 사이즈를 저장하고, 타일 비닝 중에 수행되는 테스트들 각각에 대한 출력물들을 저장한다.The tile memory 1822 represents specific tiles belonging to the graphic image during tile binning. The tile memory 1822 may be part of the storage 1823, but is not limited thereto. Tile memory 1822 stores pixel values for each of the processed tiles. Tile memory 1822 also stores tile sizes and stores output for each of the tests performed during tile binning.

저장부(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 storage unit 1823 stores parameters that are calculated while the curve pre-processing is performed. The storage unit 1823 may be a ROM (Read Only Memory), a RAM (Random Access Memory), an EP-ROM (Erasable Programmable Read Only Memory), an EEP-ROM (Electrically Erasable Programmable Read Only Memory), a hard drive, (E. G., Compact disks, digital video disks, diskettes, magnetic tape cartridges, memory cards, etc.) and suitable memory devices for storing computer readable instructions.

그래픽 처리 장치(1830)는 도 1의 렌더링 장치(100) 또는 도 7에 도시된 렌더링 장치(101)로 구현될 수 있다. 그래픽 처리 장치(1830)는 타일 비닝된 베지어 커브를 렌더링하기 위한 타일 기반 렌더링을 수행한다. 그래픽 처리 장치(1830)는 베지어 커브와 관련된 파라미터들을 연산하고, 연산된 파라미터들에 기초하여 프레임에 포함된 타일들을 베지어 커브에 대한 내부 타일, 외부 타일, 부분 내부 타일 중 어느 하나로 분류한다. 또한, 그래픽 처리 장치(1830)는 분류 결과에 기초하여 베지어 커브의 타일 기반 렌더링을 수행한다.The graphics processing unit 1830 may be implemented by the rendering apparatus 100 of FIG. 1 or the rendering apparatus 101 shown in FIG. The graphics processing unit 1830 performs tile-based rendering to render the tiled binned Bezier curves. The graphics processing unit 1830 computes parameters related to the Bezier curve and classifies the tiles contained in the frame into either an inner tile, an outer tile, or a partial inner tile for the Bezier curve based on the computed parameters. In addition, the graphics processing unit 1830 performs tile-based rendering of the Bezier curve based on the classification result.

프레임 버퍼(1860)는 렌더링 정보를 저장한다. 또한, 프레임 버퍼(1860)는 그래픽 이미지의 픽셀 값들을 저장한다. 프레임 버퍼(1860)의 사이즈는 필요한 픽셀 위치들의 수에 비례한다.The frame buffer 1860 stores rendering information. In addition, the frame buffer 1860 stores pixel values of the graphic image. The size of the frame buffer 1860 is proportional to the number of pixel locations required.

렌더링 장치(100, 101)는 컴퓨터로 판독할 수 있는 명령어들의 형태로 상술한 저장 매체에 저장될 수 있고, 처리부(1810)에 의하여 실행될 수 있다. 예를 들어, 컴퓨터 프로그램은 타일 비닝된 베지어 커브를 렌더링하기 위한 타일 기반 렌더링 프로세스가 수행되도록 처리부(1810)를 동작시키는 컴퓨터로 판독할 수 있는 명령어들을 포함할 수 있다. 한편, 컴퓨터 프로그램은 CD-ROM(Compact Disk-Read Only Memory)에 저장될 수 있으며, CD-ROM으로부터 비휘발성 메모리 내의 하드 드라이브로 로딩될 수 있다The rendering devices 100 and 101 may be stored in the storage medium described above in the form of computer readable instructions and executed by the processing unit 1810. [ For example, the computer program may include computer readable instructions for causing the processor 1810 to perform a tile-based rendering process for rendering a tiled bezier curve. On the other hand, the computer program may be stored in a Compact Disk-Read Only Memory (CD-ROM) and may be loaded from a CD-ROM into a hard drive in nonvolatile memory

네트워크 디바이스들(1840) 또는 입출력 디바이스들(1850)은 네트워킹 유닛 및 입출력 디바이스 유닛을 통하여 컴퓨팅 시스템과 연결될 수 있다.Network devices 1840 or input / output devices 1850 may be coupled to the computing system via a networking unit and an input / output device unit.

그래픽 처리 장치(1830)는 복수의 2차 베지어 커브들을 획득하기 위하여 큐빅 커브들이 분해된 경우, 그 큐빅 커브들을 렌더링할 수 있다.The graphics processing unit 1830 may render the cubic curves if the cubic curves are decomposed to obtain a plurality of quadratic Bezier curves.

상술한 바에 따르면, 렌더링 장치(100, 101)는 베지어 커브를 렌더링하는데 소모되는 연산 전력을 감소시킬 수 있다.As described above, the rendering apparatuses 100 and 101 can reduce the computational power consumed in rendering the Bezier curve.

한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, 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)

타일 기반 렌더링(tile-based rendering)을 수행하는 방법에 있어서,
객체(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.
제 1 항에 있어서,
상기 파라미터들은 바운딩 박스(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.
제 1 항에 있어서,
상기 분류하는 단계는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들(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.
제 1 항에 있어서,
상기 분류하는 단계는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브에 대응하는 컨벡스 홀의 내부에 위치하는 타일들을 결정하는 단계;
상기 결정된 타일들 각각에 대하여 루프-블린 테스트를 수행하는 단계; 및
상기 루프-블린 테스트의 결과에 기초하여 상기 결정된 타일들을 분류하는 단계;를 포함하는 방법.
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.
제 4 항에 있어서,
상기 분류하는 단계는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 컨벡스 홀 및 상기 베지어 커브의 내부에 위치하는 적어도 하나의 타일을 식별하는 단계; 및
상기 식별된 적어도 하나의 타일을 제 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.
제 4 항에 있어서,
상기 분류하는 단계는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 베지어 커브의 외부에 위치하는 적어도 하나의 타일을 식별하는 단계; 및
상기 식별된 적어도 하나의 타일을 제 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.
제 6 항에 있어서,
상기 식별하는 단계는
상기 베지어 커브의 극점의 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.
제 6 항에 있어서,
상기 식별하는 단계는
상기 베지어 커브의 극점의 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.
제 6 항에 있어서,
상기 식별하는 단계는
상기 베지어 커브의 극점으로부터 상기 컨벡스 홀까지 연결된 라인의 일 측면에 위치하는 적어도 하나의 타일을 식별하는 방법.
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 위치 표식으로 분류하는 단계;
상기 제 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.
제 1 항에 있어서,
상기 타일 기반 렌더링을 수행하는 단계는
상기 타일들의 분류 결과에 기초하여 상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록을 생성하는 단계를 포함하는 방법.
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.
제 1 항에 있어서,
상기 타일 기반 렌더링을 수행하는 단계는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 내부에 위치하는 타일을 식별하는 단계; 및
상기 식별된 타일의 프래그먼트들 각각에 대하여 상기 타일 기반 렌더링을 수행하는 단계;를 포함하는 방법.
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.
제 1 항에 있어서,
상기 타일 기반 렌더링을 수행하는 단계는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 외부에 위치하는 타일을 식별하는 단계; 및
상기 식별된 타일의 프래그먼트들에 대해서는 상기 타일 기반 렌더링을 수행하지 않는 단계;를 포함하는 방법.
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.
제 1 항에 있어서,
상기 타일 기반 렌더링을 수행하는 단계는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 일부분이 상기 베지어 커브의 내부에 위치하는 타일을 식별하는 단계;
상기 식별된 타일의 프래그먼트들 각각에 대하여 루프-블린 테스트를 수행하는 단계;
상기 테스트의 결과에 기초하여 상기 프레그먼트들을 상기 베지어 커브의 내부에 위치하는 프래그먼트 또는 상기 베지어 커브의 외부에 위치하는 프래그먼트로 분류하는 단계;
상기 프래그먼트들의 분류 결과에 기초하여 상기 식별된 타일에 대한 상기 타일 기반 렌더링을 수행하는 단계;를 포함하는 방법.
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.
제 1 항 내지 제 14 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.A computer-readable recording medium storing a program for causing a computer to execute the method according to any one of claims 1 to 14. 타일 기반 렌더링(tile-based rendering)을 수행하는 장치에 있어서,
객체(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.
제 16 항에 있어서,
상기 파라미터들은 바운딩 박스(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.
제 16 항에 있어서,
상기 분류부는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들(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.
제 16 항에 있어서,
상기 분류부는
상기 프레임에 포함된 타일들 중 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브에 대응하는 컨벡스 홀의 내부에 위치하는 타일들을 결정하고,
상기 결정된 타일들 각각에 대하여 루프-블린 테스트를 수행하고,
상기 루프-블린 테스트의 결과에 기초하여 상기 결정된 타일들을 분류하는 장치.
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.
제 19 항에 있어서,
상기 분류부는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 컨벡스 홀 및 상기 베지어 커브의 내부에 위치하는 적어도 하나의 타일을 식별하고,
상기 식별된 적어도 하나의 타일을 제 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.
제 19 항에 있어서,
상기 분류부는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 전부가 상기 베지어 커브의 외부에 위치하는 적어도 하나의 타일을 식별하고,
상기 식별된 적어도 하나의 타일을 제 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.
제 21 항에 있어서,
상기 분류부는
상기 베지어 커브의 극점의 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.
제 21 항에 있어서,
상기 분류부는
상기 베지어 커브의 극점의 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.
제 21 항에 있어서,
상기 분류부는
상기 베지어 커브의 극점으로부터 상기 컨벡스 홀까지 연결된 라인의 일 측면에 위치하는 적어도 하나의 타일을 식별하는 장치.
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.
제 19 항에 있어서,
상기 분류부는
상기 루프-블린 테스트의 결과에 기초하여 상기 타일의 모서리들에 대응하는 끝점들 중 일부가 상기 베지어 커브의 내부에 위치하는 타일들을 식별하고,
상기 식별된 적어도 하나의 타일을 제 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.
제 16 항에 있어서,
상기 렌더링부는
상기 타일들의 분류 결과에 기초하여 상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록을 생성하는 장치.
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.
제 16 항에 있어서,
상기 렌더링부는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 내부에 위치하는 타일을 식별하고,
상기 식별된 타일의 프래그먼트들 각각에 대하여 상기 타일 기반 렌더링을 수행하는 장치.
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.
제 16 항에 있어서,
상기 렌더링부는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 상기 베지어 커브의 외부에 위치하는 타일을 식별하고,
상기 식별된 타일의 프래그먼트들에 대해서는 상기 타일 기반 렌더링을 수행하지 않는 장치.
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.
제 16 항에 있어서,
상기 렌더링부는
상기 프레임에 포함된 타일들 각각에 대응하는 위치 표식 목록에 기초하여 일부분이 상기 베지어 커브의 내부에 위치하는 타일을 식별하고,
상기 식별된 타일의 프래그먼트들 각각에 대하여 루프-블린 테스트를 수행하고,
상기 테스트의 결과에 기초하여 상기 프레그먼트들을 상기 베지어 커브의 내부에 위치하는 프래그먼트 또는 상기 베지어 커브의 외부에 위치하는 프래그먼트로 분류하고,
상기 프래그먼트들의 분류 결과에 기초하여 상기 식별된 타일에 대한 상기 타일 기반 렌더링을 수행하는 장치.
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.
제 16 항에 있어서,
상기 타일 기반 렌더링을 수행하는 장치는 그래픽 처리 장치(Graphical Processing Unit)을 포함하는 장치.
17. The method of claim 16,
Wherein the apparatus for performing tile-based rendering comprises a graphics processing unit.
KR1020160001614A 2015-03-20 2016-01-06 Method and apparatus for performing tile-based rendering KR102585220B1 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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