KR100742155B1 - 스캔라인 형성 방법 및 장치 - Google Patents
스캔라인 형성 방법 및 장치 Download PDFInfo
- Publication number
- KR100742155B1 KR100742155B1 KR1020050135050A KR20050135050A KR100742155B1 KR 100742155 B1 KR100742155 B1 KR 100742155B1 KR 1020050135050 A KR1020050135050 A KR 1020050135050A KR 20050135050 A KR20050135050 A KR 20050135050A KR 100742155 B1 KR100742155 B1 KR 100742155B1
- Authority
- KR
- South Korea
- Prior art keywords
- vertex
- triangle
- point
- rside
- lside
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
본 발명은 스캔라인 형성 방법 및 장치에 관한 것이다. 상기 방법은 삼각형의 유형을 판단하는 단계-여기서 삼각형의 유형은 제1 유형 및 제2 유형을 포함함-; 판단된 삼각형의 유형에 따라 b2m_lside, b2m_rside, m2t_lside 및 m2t_rside를 판단하는 단계; b2m_lside 변 위에 있으며 y 좌표가 y1인 점1 및 m2t_lside 변 위에 있으며 y좌표가 y2인 점 3에서의 파라미터 값을 계산하는 단계; b2m_lside 및 m2t_lside 변 위에서의 스텝 값을 계산하는 단계; b2m_rside 변 위에 있으며 y좌표가 y1인 점 2 및 m2t_rside 변 위에 있으며 y좌표가 y2인 점 4에서의 파라미터 값을 계산하는 단계; b2m_rside 및 m2t_rside 변 위에서의 스텝 값을 계산하는 단계; 삼각형이 제1 유형인 경우 정점 1, 정점 2 및 정점 4로 이루어진 삼각형에 대한 데이터를 FIFO에 저장하는 단계-여기서 정점 4는 정점 2와 y좌표가 동일하며 삼각형의 변 위에 있는 점을 나타냄-; 및 정점 2, 정점 4 및 정점 3으로 이루어진 삼각형에 대한 데이터를 FIFO에 저장하는 단계를 포함한다.
스캔라인, 래스터라이저
Description
도 1 내지 도 3은 종래 기술에 따른 스캔라인 생성 방법을 설명하기 위한 도면들.
도 4는 본 발명의 바람직한 일 실시예에 따른 스캔라인을 형성할 삼각형의 유형을 나타낸 도면.
도 5는 본 발명의 바람직한 일 실시예에 따른 스캔라인 형성 방법을 설명하기 위한 도면.
도 6은 본 발명의 바람직한 일 실시예에 따른 래스터라이저의 구성도.
도 7은 본 발명의 바람직한 일 실시예에 따른 init_sline 블록에서 데이터를 FIFO 버퍼에 저장하는 방법을 나타낸 순서도.
<도면의 주요 부분에 대한 부호의 설명>
601 : init_sline 블록
603 : FIFO 버퍼
605 : sline_gen 블록
본 발명은 래스터라이저에서 스캔라인을 생성하는 방법 및 장치에 관한 것으로, 좀 더 구체적으로 래스터라이저의 서브 블록 중에서 스캔라인 생성을 위한 필요한 데이터를 만드는 블록과 이 데이터를 이용하여 실제 스캔라인을 만드는 블록 사이에 존재하는 FIFO의 폭을 줄일 수 있는 방법 및 장치에 관한 것이다.
래스터라이저(rasterizer)는 삼각형의 세 정점 데이터를 입력 받아 삼각형이 화면상에서 포함하는 모든 픽셀들의 정보를 만들어내는 기능을 한다. 대표적인 래스터라이저의 알고리즘으로는 스캔라인 알고리즘이 있다. 이 알고리즘은 먼저 삼각형이 포함하는 스캔라인들을 생성한 후 그 스캔라인 위에 있는 픽셀들을 찾고 그 픽셀들의 정보를 만들어내는 방법이다. 스캔라인을 생성한다는 것은 스캔라인의 시작과 끝점의 각 파라미터 값을 구하는 것을 말한다.
도 1 내지 도 3을 참조하여 종래 기술에 따른 래스터라이저의 구성 및 스캔라인 생성 방법을 설명하면 다음과 같다.
도 1 내지 도 3을 참조하면, 먼저 스캔라인이라 함은 y 좌표가 정수인 수평선 중 삼각형(101, 103) 내에 포함된 선분을 의미한다. 스캔라인 생성을 위한 삼각형(101, 103)은 정점 1, 정점 2 및 정점 3으로 이루어지며, 이때 정점 1, 정점 2 및 정점 3의 y 좌표 값은 차례로 큰 값을 갖는다. 삼각형의 유형에는 제1 유형(101)과 제2 유형(103)이 있다.
종래의 래스터라이저는 스캔라인 생성을 위한 필요한 데이터를 만드는 블록(init_sline, 201), 상기 데이터를 이용하여 실제 스캔라인을 만드는 블록(sline_gen, 205) 및 FIFO(203)를 포함한다. init_sline 블록(201)은 앞 단에서 계산된 그래디언트, 기울기 값을 이용하여 점 1 내지 점 4의 파라미터 값과 스텝 값을 구하는 블록이다. 그리고 sline_gen 블록(205)은 이 파라미터 값과 스텝 값을 이용하여 실제 스캔라인의 시작점과 끝점을 생성한다. sline_gen 블록(205)이 생성하는 라인의 개수는 삼각형의 크기에 따라 가변적이므로 처리시간 또한 예측할 수 없다. FIFO(First In First Out 버퍼, 203)는 sline_gen 블록(205)의 처리시간이 지연되더라도 init_sline 블록(201)의 데이터를 처리하고 저장한다.
삼각형의 모양에 따라 차이가 있지만 스캔라인을 생성하기 위한 데이터는 첫째 세 정점의 y 좌표를 올림 한 정수 좌표 y1, y2, y3, 둘째 점1, 점3에서의 파라미터 값, 셋째 점2, 점4에서의 x 좌표 값, 넷째 점1, 점3에서 파라미터의 스텝 값, 다섯째 점2, 점4에서 x 좌표의 스텝 값, 여섯째 각 파라미터의 x 축에 대한 그래디언트 값을 포함한다. 이러한 스캔라인 생성을 위한 데이터는 FIFO(203)에 저장되는데 FIFO(203)에 한 번에 저장되는 데이터의 크기를 FIFO의 폭(width)이라고 부른다. 앞서 언급하였듯이, FIFO(203)에 저장될 데이터, 즉 스캔라인을 생성하는 데 필요한 데이터는 삼각형의 모양에 따라 다르지만 FIFO(203)의 폭은 하드웨어적으로 고정된다.
이러한 구성을 가지는 래스터라이저의 init_sline 블록(201)에서 도 1의 점 1 내지 점 4에서의 파라미터 값과 스텝 값을 구하는 과정은 다음과 같다. 먼저 init_sline 블록(201)은 dxdy21 < dxdy31 조건에 따라 삼각형의 유형을 판단하고(단계 301), 각 유형에 따라 b2m_lside, b2m_rside, m2t_lside, m2t_rside 변을 결정한다(단계 303, 단계 305). b2m, m2t, lside 및 rside는 각각 bottom to middle, middle to bottom, left side 및 right side의 약자를 의미한다. 이때 dxdy21 < dxdy31 조건을 만족하는 경우가 도 1에서 제1 유형의 삼각형(101)이고, dxdy21 < dxdy31 조건을 만족하지 아니하는 경우가 제2 유형의 삼각형(103)이 된다. 그리고 init_sline 블록(201)은 b2m_lside, m2t_lside 변 위에 있으며 y좌표가 각각 y1, y2인 점1, 점3 에서의 모든 파라미터 값과 스텝 값을 구한다(단계 307, 단계 309). 그 다음에는 init_sline 블록(201)은 b2m_rside, m2t_rside 변 위에 있으며 y좌표가 각각 y1, y2인 점2, 점4 에서의 x 좌표 값과 x의 스텝 값(기울기)을 구한다(단계 311, 단계 313). 마지막으로 init_sline 블록(201)은 점1 내지 점4의 파라미터 값과 스텝 값 들을 비롯하여 도 2의 데이터 값을 출력하고 FIFO(203)에 저장한다(단계 315).
앞에서 설명한 데이터들을 가지고 있으면 도 1에서 볼 수 있듯이 모든 스캔라인을 생성할 수 있다. 하지만 삼각형의 모양에 따라 위 데이터가 모두 필요하지 않는 경우가 있다. 예를 들어, 도 1에서 제2 유형의 삼각형(103)이라면 점 3에 대한 모든 파라미터 값과 파라미터의 스텝 값이 필요하지 않다. 즉 스캔라인을 생성하기 위해서 필요한 데이터의 종류는 삼각형의 모양에 따라 다르다. 따라서 그 데이터의 양도 달라지는데 예를 들면, 도 1에서 제1 유형의 삼각형(101)의 경우에는 점 1, 점 2, 점 3의 정보가 필요하며 도 1에서 제2 유형의 삼각형(103)의 경우에는 점1, 점2, 점4의 정보가 필요하다. 하지만 점 3과 점 4의 데이터의 크기는 큰 차이가 있다. 점 3에 대해서는 x 좌표 값을 포함한 모든 파라미터의 값과 각 파라미터의 스텝 값이 필요한 반면, 점 4에 대해서는 x 좌표 값과 x 좌표의 스텝 값만 필요하기 때문이다. 결론적으로 래스터라이저의 FIFO(203)는 도 1의 제1 유형의 삼각형(101)의 경우까지 지원해야 한다. 앞서 본 바와 같이 FIFO의 폭은 고정되어 있으므로, 데이터가 가장 많은 경우 즉 도 1의 제1 유형의 삼각형(101)의 경우에 맞춰 FIFO의 폭이 결정되고, 이는 FIFO의 비효율적인 사용을 초래한다. 다시 말하면 init_sline 블록(201)의 출력 데이터의 크기가 FIFO(203)의 폭보다 작더라도 폭 단위로 데이터가 저장되기 때문에 FIFO(203)가 비효율적으로 사용되는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 제1 유형의 삼각형의 경우 삼각형을 두 개로 나누어서 스캔라인 형성에 필요한 데이터를 두 번에 나누어 출력함으로써 FIFO의 폭의 크기를 줄일 수 있는 스캔라인 형성 방법 및 장치를 제공하고자 하는 것이다.
상술한 목적들을 달성하기 위하여, 본 발명의 일 측면에 따르면 래스터라이저에서 정점 1, 정점 2 및 정점 3으로 이루어진 삼각형의 스캔라인을 형성하는 방 법에 있어서, 상기 삼각형의 유형을 판단하는 단계-여기서 상기 삼각형의 유형은 제1 유형 및 제2 유형을 포함함-; 상기 판단된 삼각형의 유형에 따라 b2m_lside, b2m_rside, m2t_lside 및 m2t_rside를 판단하는 단계; 상기 b2m_lside 변 위에 있으며 y 좌표가 y1인 점1 및 상기 m2t_lside 변 위에 있으며 y좌표가 y2인 점 3에서의 파라미터 값을 계산하는 단계; 상기 b2m_lside 및 상기 m2t_lside 변 위에서의 스텝 값을 계산하는 단계; 상기 b2m_rside 변 위에 있으며 y좌표가 상기 y1인 점 2 및 상기 m2t_rside 변 위에 있으며 y좌표가 상기 y2인 점 4에서의 파라미터 값을 계산하는 단계; 상기 b2m_rside 및 상기 m2t_rside 변 위에서의 스텝 값을 계산하는 단계; 상기 삼각형이 제1 유형인 경우 상기 정점 1, 상기 정점 2 및 상기 정점 4로 이루어진 삼각형에 대한 데이터를 FIFO에 저장하는 단계-여기서 정점 4는 상기 정점 2와 y좌표가 동일하며 상기 삼각형의 변 위에 있는 점을 나타냄-; 및 상기 정점 2, 상기 정점 4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터를 FIFO에 저장하는 단계를 포함하는 스캔라인 형성 방법을 제공할 수 있다.
바람직한 실시예에서 상기 삼각형이 dxdy21 < dxdy31 의 조건을 만족하는 경우에 제1 유형 삼각형이며, dxdy21 < dxdy31 의 조건을 만족하지 아니한 경우에 제2 유형 삼각형인 것을 특징으로 한다. 또한 상기 스캔라인은 상기 삼각형의 y좌표가 정수인 수평선 중 상기 삼각형의 내부에 포함되는 선분 및 상기 삼각형의 y좌표가 정수+05인 수평선 중 상기 삼각형의 내부에 포함되는 선분 중 어느 하나인 것을 특징으로 한다. 또한 상기 스캔라인이 상기 삼각형의 y좌표가 정수인 수평선 중 상기 삼각형의 내부에 포함되는 선분인 경우 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 올림한 정수이며, 상기 스캔라인이 상기 삼각형의 y좌표가 정수+05인 수평선 중 상기 삼각형의 내부에 포함되는 선분인 경우 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 반올림한 정수에 0.5를 더한 값인 것을 특징으로 한다.
또한 상기 정점 1, 상기 정점 2 및 상기 정점 3은 y좌표 값이 차례로 커지는 것을 특징으로 한다. 또한 상기 정점 1, 정점2 및 정점 4로 이루어진 삼각형에 대한 데이터는 상기 점 1의 파라미터 값 및 스텝 값, 상기 점 2의 x좌표 및 x의 스텝 값을 포함하는 것을 특징으로 한다. 또한 상기 정점 2, 상기 정점4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터는 상기 점 3의 파라미터 값 및 스텝 값, 상기 점 4의 x좌표 및 x의 스텝 값을 포함하는 것을 특징으로 한다.
또한 상기 삼각형이 제2 유형인 경우인 경우 상기 점 1 및 상기 점 3에서의 파라미터 값 및 스텝 값, 상기 점 2 및 상기 점 4에서의 x 좌표 및 x의 스텝 값을 FIFO에 저장하는 단계를 더 포함하는 것을 특징으로 한다. 또한 상기 파라미터는 좌표 값, 텍스쳐 좌표 및 칼라 픽셀 값을 포함하는 것을 특징으로 한다. 또한 상기 스텝 값은 스캔라인의 시작점이나 끝점간의 파라미터 변화율인 것을 특징으로 한다.
본 발명의 다른 측면에 따르면, 정점 1, 정점 2 및 정점 3으로 이루어진 삼각형의 유형을 판단하는 수단-여기서 상기 삼각형의 유형은 제1 유형 및 제2 유형을 포함함-; 상기 판단된 삼각형의 유형에 따라 b2m_lside, b2m_rside, m2t_lside 및 m2t_rside를 판단하는 수단; 상기 b2m_lside 변 위에 있으며 y 좌표가 y1인 점 1 및 상기 m2t_lside 변 위에 있으며 y좌표가 y2인 점 3에서의 파라미터 값을 계산하는 수단-여기서 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 올림한 정수 및 상기 정점 1 및 상기 정점 2에서 y좌표를 반올림한 정수에 0.5를 더한 값 중 어느 하나임-; 상기 b2m_lside 및 상기 m2t_lside 변 위에서의 스텝 값을 계산하는 수단; 상기 b2m_rside 변 위에 있으며 y좌표가 상기 y1인 점 2 및 상기 m2t_rside 변 위에 있으며 y좌표가 상기 y2인 점 4에서의 파라미터 값을 계산하는 수단; 상기 b2m_rside 및 상기 m2t_rside 변 위에서의 스텝 값을 계산하는 수단; 상기 삼각형이 제1 유형인 경우 상기 정점 1, 상기 정점 2 및 상기 정점 4로 이루어진 삼각형에 대한 데이터를 FIFO에 저장하는 수단-여기서 정점 4는 상기 정점 2와 y좌표가 동일하며 상기 삼각형의 변 위에 있는 점을 나타냄-; 및 상기 정점 2, 상기 정점 4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터를 FIFO에 저장하는 수단을 포함하는 래스터라이저를 제공할 수 있다.
이어서, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
바람직한 실시예의 상세한 설명에 앞서 본 발명에서 사용될 용어를 정의 하면 다음과 같다. 스캔라인은 y좌표가 정수인 수평선 중 삼각형 내에 포함되는 선분 또는 y좌표가 정수+0.5인 수평선 중 삼각형 내에 포함되는 선분을 의미한다. 파라미터는 좌표(x, y, z), 텍스쳐 좌표(u, v), 칼라(r, g, b, a) 등 픽셀이 갖는 모든 데이터를 포함하며, 그래디언트는 x, y축에 대한 파라미터의 변화율을 의미하며, 스텝 값은 스캔라인의 시작점이나 끝점 간의 파라미터 변화율을 의미한다. 본 명세서에서는 설명의 편의를 위해 스캔라인은 y좌표가 정수인 경우를 예를 들어 설명하기로 한다.
도 4는 본 발명의 바람직한 일 실시예에 따른 스캔라인을 형성할 삼각형의 유형을 나타낸 도면이다.
도 4를 참조하면, 본 발명에서 스캔라인을 형성할 삼각형의 유형은 왼쪽 삼각형 모양을 하는 제1 유형 삼각형과 오른쪽 삼각형 모양을 하는 제2 유형 삼각형의 두 유형이 있다. 제1 유형 삼각형은 dxdy21 < dxdy31 의 조건을 만족하는 삼각형으로 분류된다. 이때 dxdy21은 Δx21/Δy21로 정의 되며, dxdy31은 Δx31/Δy31로 정의된다.
제1 유형 삼각형 및 제2 유형 삼각형은 정점 1, 정점 2 및 정점 3을 꼭지점으로 가지는 삼각형이며, 이때 정점 3의 y 좌표 값은 정점 2의 y 좌표 값보다 크며, 정점 2의 y 좌표 값은 정점 1의 y 좌표 값보다 크다. 제1 유형 삼각형 및 제2 유형 삼각형의 각 변은 도 4와 같이 b2m, m2t, lside, rside로 표시 가능하며, 이때 b2m, m2t, lside, rside는 각각 bottom to middle, middle to bottom, left side, right side 의 약자를 의미한다.
도 5는 본 발명의 바람직한 일 실시예에 따른 스캔라인 형성 방법을 설명하기 위한 도면이다.
도 5를 참조하면, y1, y2 및 y3은 각각 정점 1, 정점 2 및 정점 3의 y 좌표 값을 올림한 y 좌표 값을 의미한다. 한편 스캔라인이 y좌표가 정수+0.5인 수평선 중 삼각형 내에 포함되는 선분을 의미하는 경우에는 y1, y2 및 y3은 각각 정점 1, 정점 2 및 정점 3의 y 좌표 값을 반올림한 후 0.5를 더한 값들이 될 수 있다. 점 1은 삼각형의 b2m_lside 변 위에 있으며 y 좌표 값이 y1인 점이다. 점 2는 b2m_rside 변 위에 있으며 y 좌표 값이 y1인 점이다. 점 3은 삼각형의 m2t_lside 변 위에 있으며 y 좌표 값이 y2인 점이다. 점 4는 삼각형의 m2t_rside 변 위에 있으며 y 좌표 값이 y2인 점이다.
본 발명의 특징은 제2 유형 삼각형은 기존의 방식에 따라 스캔라인을 형성하며, 제1 유형 삼각형의 경우 출력을 2회 나누어 한다는 데 있다. 즉 본 발명에 따른 래스터라이저는 제1 유형 삼각형을 정점 1, 정점 2 및 정점 4로 이루어진 삼각형과 정점 2, 정점 4 및 정점 3으로 이루어진 삼각형으로 분리한 후, 이들 각각의 삼각형에 대한 데이터를 출력한다. 이때 첫 번째 출력은 정점1, 정점2, 정점4로 이루어지는 삼각형에 대한 데이터이고 두 번째 출력은 정점2, 정점4, 정점3으로 이루어지는 삼각형에 대한 데이터이다. 구체적으로, 첫 번째 출력은 점 1에서의 파라미터 값과 스텝 값, 점 2에서의 x 좌표 값, x 의 스텝 값을 포함한다. 두 번째 출력은 점 3에 대한 파라미터 값과 스텝 값, 점4에 대한 x 좌표 값, x의 스텝 값을 포함한다. 이렇게 제1 유형 삼각형의 경우 출력을 2회로 나누는 경우, 출력 값을 저장하는 FIFO의 폭을 제2 유형 삼각형의 스캔라인을 형성할 때 필요한 데이터 양 만큼으로 줄일 수 있어 제1 유형 삼각형을 위해 낭비되는 FIFO의 공간이 줄어든다.
이하 점 1, 점 2, 점 3 및 점 4의 정보를 구하는 과정을 설명한다. 이때 점 1 및 점 3에서는 모든 파라미터 값 및 스텝 값을 계산해야 하며, 점 2 및 점 4에서는 다른 파라미터 값은 계산할 필요가 없으며 x 좌표 값과 스텝 값만 구하면 된다.
점 1의 정보는 다음과 같이 구한다.
x1 : 점 1의 x 좌표 값
x1 = vertex1_x + prestep_x21
vertex1_x : 정점1에서의 x 좌표 값
prestep_x21 = prestep_y21 * dxdy21
prestep_y21 = y1 - vertex1_y
dxdy21 = Δx21 / Δy21
y1 : vertex1_y를 올림 한 정수 값
r1 : 점 1의 컬러 RGBA 중 r 값(같은 방식으로 다른 파라미터 값 계산)
r1 = vertex1_r + gradient_drdy * prestep_y21 + gradient_drdx * prestep_x21
vertex1_r : 정점1 에서의 r 값
gradient_drdx , gradient_drdy : r 값의 x, y 축에 대한 그래디언트 값
prestep_x21 = prestep_y21 * dxdy21
prestep_y21 = y1 - vertex1_y
step_x1 : 점1의 x 스텝 값
step_x1 = dxdy21 = Δx21 / Δy21
step_r1 : 점1의 r 스텝 값 (같은 방식으로 다른 파라미터의 스텝 값 계산)
step_r1 = gradient_drdy + gradient_drdx * dxdy21
점 3의 정보는 다음과 같이 구한다.
x3 : 점3의 x 좌표 값
x3 = vertex2_x + prestep_x32
vertex2_x : 정점2에서의 x 좌표 값
prestep_x32 = prestep_y32 * dxdy32
prestep_y32 = y2 - vertex2_y
dxdy32 = Δx32 / Δy32
y2 : vertex2_y를 올림 한 정수 값
r3 : 점 3의 컬러 RGBA 중 r 값(다른 파라미터에 대해서는 같은 방식으로 계산될 수 있다)
r3 = vertex2_r + gradient_drdy * prestep_y32 + gradient_drdx * prestep_x32
vertex2_r : 정점2 에서의 r 값
gradient_drdx , gradient_drdy : r 값의 x, y 축에 대한 그래디언트 값
prestep_x32 = prestep_y32 * dxdy32
prestep_y32 = y2- vertex2_y
step_x3 : 점3의 x 스텝 값
step_x3 = dxdy32 = Δx32 / Δy32
step_r3 : 점3의 r 스텝 값 (같은 방식으로 다른 파라미터의 스텝 값 계산)
step_r3 = gradient_drdy + gradient_drdx * dxdy32
점 2의 정보는 다음과 같이 구한다.
x2 : 점2의 x 좌표 값
x2 = vertex1_x + prestep_x31
vertex1_x : 정점1에서의 x 좌표 값
prestep_x31 = prestep_y31 * dxdy31
prestep_y31 = y1 - vertex1_y
dxdy31 = Δx31 / Δy31
y1 : vertex1_y를 올림 한 정수 값
step_x2 : 점2의 x 스텝 값
step_x2 = dxdy31 = Δx31 / Δy31
점 4에서의 정보도 점 2에서와 구하는 방법과 동일한 방법에 의하여 구할 수 있다. 상기 방법에 의하여 구한 점1, 점2, 점3 및 점 4에서의 파라미터 값에 스텝 값을 더해가면 모든 스캔라인의 시작점과 끝점의 파라미터 값을 구할 수 있다. 그리고 이러한 스캔라인들의 시작점, 끝점 데이터를 이용하면, 래스터라이저의 궁극적인 목표인 스캔라인 위의 픽셀 정보들을 얻을 수 있다.
도 6은 본 발명의 바람직한 일 실시예에 따른 래스터라이저의 구성도이다.
도 6을 참조하면, 본 발명에 따른 래스터라이저는 스캔라인 생성을 위한 필요한 데이터를 만드는 블록(init_sline, 601), 상기 데이터를 이용하여 실제 스캔라인을 만드는 블록(sline_gen, 605) 및 FIFO 버퍼(603)를 포함한다. init_sline 블록(601)은 앞 단에서 계산된 그래디언트, 기울기 값을 이용하여 도 5에서 설명한 점 1 내지 점 4의 파라미터 값과 스텝 값을 구하는 블록이다. 그리고 sline_gen 블록(605)은 이 파라미터 값과 스텝 값을 이용하여 실제 스캔라인의 시작점과 끝점을 생성한다. sline_gen 블록(605)이 생성하는 라인의 개수는 삼각형의 크기에 따라 가변적이므로 처리시간 또한 예측할 수 없다. 따라서 FIFO 버퍼(First In First Out 버퍼, 603)는 sline_gen 블록(605)의 처리시간이 지연되더라도 init_sline 블록(601)의 데이터를 처리하고 저장하는 기능을 수행한다.
본 발명에 따르는 경우 스캔라인 형성을 위하여 init_sline 블록(601)에서 FIFO에 저장하는 데이터는 첫째 정수 y 좌표 y1, y2 및 y3, 둘째 왼쪽 변의 파라미터 값, 셋째 점 2, 점 4에서의 x 좌표 값, 넷째 왼쪽 변의 파라미터 스텝 값, 다섯째 점 2 및 점 4에서의 x 좌표의 스텝 값, 여섯째 각 파라미터의 x 축에 대한 그래디언트 값을 포함한다. 종래에는 FIFO의 폭이 제1 유형 삼각형을 지원할 수 있도록 크게 설정되어야 했다. 하지만 본 발명에서 제안하는 방법을 사용하면 제1 유형 삼각형도 다른 모양의 삼각형과 같은 양의 데이터를 출력하되 출력을 2회 실시하게 되므로, 두 점이 아닌 한 점에 대해서만 파라미터 값과 파라미터 스텝 값을 출력하면 된다. 따라서 본 발명에 의하면 FIFO(603)는 종래와 비교하여 폭이 작아도 된다.
도 7은 본 발명의 바람직한 일 실시예에 따른 init_sline 블록에서 데이터를 FIFO 버퍼에 저장하는 방법을 나타낸 순서도이다.
도 7을 참조하면, 본 발명에 따른 init_sline 블록에서 데이터를 FIFO 버퍼에 저장하는 방법에서 각 점에서의 파라미터와 스텝 값 계산 과정은 종래의 방법과 동일하다. 다만, 출력 시에만 삼각형의 모양에 따라 다른 방식을 취한다. 먼저 init_sline 블록은 dxdy21 < dxdy31 조건에 따라 삼각형의 유형을 판단한다(단계 701). init_sline 블록은 삼각형의 유형에 따라 b2m_lside, b2m_rside, m2t_lside, m2t_rside 변을 결정한다(단계 703, 단계 705). 이때 dxdy21 < dxdy31 조건을 만족하는 경우가 제1 유형 삼각형이며, dxdy21 < dxdy31 조건을 만족하지 아니하는 경우가 제2 유형 삼각형이다. 제1 유형의 삼각형인 경우 b2m_lside, b2m_rside, m2t_lside 및 m2t_rside는 각각 변 21, 변31, 변 32 및 변 31에 해당된다. 또한 제2 유형 삼각형인 경우 b2m_lside, b2m_rside, m2t_lside 및 m2t_rside는 각각 변 31, 변 21, 변 31 및 변 32에 해당된다.
이후, init_sline 블록은 b2m_lside, m2t_lside 변 위에 있으며 y좌표가 각각 y1, y2인 점1, 점3 에서의 모든 파라미터 값과 스텝 값을 구한다(단계 707, 단계 709). 이후, init_sline 블록은 b2m_rside, m2t_rside 변 위에 있으며 y좌표가 각각 y1, y2인 점2, 점4 에서의 x 좌표 값과 x의 스텝 값(기울기)을 구한다(단계 711, 단계 713).
이후 init_sline 블록은 dxdy21 < dxdy31 조건에 따라 삼각형의 유형을 판단한다(단계 715). 이때 제1 유형 삼각형인 경우 init_sline 블록은 점1, 점3의 파라미터 값과 스텝 값을 동시에 FIFO에 저장하지 않고, 한 삼각형을 도 5처럼 두 개의 삼각형으로 간주하여 출력한다. 먼저 init_sline 블록은 도 5에서 정점1, 정점2, 정점4로 이루어진 삼각형에 대한 데이터로서 점1의 파라미터 값과 파라미터 스텝 값, 점2의 x좌표 값을 출력한다(단계 717). 이후 init_sline 블록은 정점2, 정점4, 정점3으로 이루어진 삼각형에 대한 데이터로서 점 3의 파라미터 값과 파라미터 스텝 값, 점 4의 x 좌표 값을 출력한다(단계 719).
한편 제2 유형 삼각형인 경우 init_sline 블록은 종래 방식과 동일하게 단계 707 내지 단계 713에서 구한 결과들을 FIFO에 저장한다(단계 721).
종래에는 두 점에 대한 파라미터 값과 파라미터 스텝 값을 저장할 수 있도록 FIFO의 폭이 결정되어졌지만, 본 발명에 의하는 경우 FIFO의 폭이 하나의 점에 대 한 파라미터 값과 파라미터 스텝 값을 저장할 수 있는 크기이면 된다.
본 발명은 상기 실시예에 한정되지 않으며, 많은 변형이 본 발명의 사상 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 가능함은 물론이다.
본 발명에 의하면 래스터라이저의 FIFO 버퍼의 폭을 줄일 수 있으며, 출력 데이터가 이 폭을 넘는 경우에 대해서는 2회에 걸쳐 저장을 실시함으로써 FIFO 버퍼의 공간이 낭비되지 않도록 하여 상대적으로 작은 면적의 FIFO를 이용하여 대등한 성능을 얻을 수 있다.
Claims (11)
- 래스터라이저에서 정점 1, 정점 2 및 정점 3으로 이루어진 삼각형의 스캔라인을 형성하는 방법에 있어서,상기 삼각형의 유형을 판단하는 단계-여기서 상기 삼각형의 유형은, y좌표 값이 차례로 커지는 순서인 정점 1, 정점 2 및 정점 3으로 이루어진 제1 유형 삼각형과 제2 유형 삼각형 중 어느 하나에 해당하며, dxdy21 < dxdy31 의 조건을 만족하는 경우에는 제1 유형 삼각형으로 판단하고, dxdy21 < dxdy31 의 조건을 만족하지 아니하는 경우에는 제2 유형 삼각형으로 판단함(여기에서, dxdy21은 정점 1과 정점 2 간의 x좌표값의 변화율에 대한 y좌표값의 변화율인 Δx21/Δy21이고, dxdy31은 정점 1과 정점 2간의 x좌표값의 변화율에 대한 y좌표값의 변화율인Δx31/Δy31임)-;상기 판단된 삼각형의 유형에 따라 b2m_lside 변, b2m_rside 변, m2t_lside 변 및 m2t_rside 변을 판단하는 단계-여기에서, 상기 삼각형이 제1 유형 삼각형인 경우에는 b2m_lside 변은 정점 1로부터 정점 2 사이의 변이고 b2m_rside 변은 정점 1로부터 정점 4 사이의 변이고 m2t_lside 변은 정점 2로부터 정점 3 사이의 변이고 m2t_rside 변은 정점 4로부터 정점 3 사이의 변이며, 상기 삼각형이 제2 유형 삼각형인 경우에는 b2m_lside 변은 정점 1로부터 정점 4 사이의 변이고 b2m_rside 변은 정점 1로부터 정점 2 사이의 변이고 m2t_lside 변은 정점 4로부터 정점 3 사이의 변이고 m2t_rside 변은 정점 2로부터 정점 3 사이의 변임(여기에서, 정점 4는 정점 2와 y좌표값이 동일하며 정점 1로부터 정점 3 사이의 변 위에 있는 점임)-상기 b2m_lside 변 위에 있으며 y 좌표가 y1인 점1 및 상기 m2t_lside 변 위에 있으며 y좌표가 y2인 점 3에서의 파라미터 값을 계산하는 단계;상기 b2m_lside 및 상기 m2t_lside 변 위에서의 스텝 값을 계산하는 단계;상기 b2m_rside 변 위에 있으며 y좌표가 상기 y1인 점 2 및 상기 m2t_rside 변 위에 있으며 y좌표가 상기 y2인 점 4에서의 파라미터 값을 계산하는 단계;상기 b2m_rside 및 상기 m2t_rside 변 위에서의 스텝 값을 계산하는 단계;상기 삼각형이 제1 유형인 경우 상기 정점 1, 상기 정점 2 및 상기 정점 4로 이루어진 삼각형에 대한 데이터를 버퍼에 저장하는 단계; 및상기 정점 2, 상기 정점 4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터를 버퍼에 저장하는 단계를 포함하는 스캔라인 형성 방법.
- 삭제
- 제1항에 있어서,상기 스캔라인은 상기 삼각형의 y좌표가 정수인 수평선 중 상기 삼각형의 내부에 포함되는 선분 및 상기 삼각형의 y좌표가 정수+05인 수평선 중 상기 삼각형의 내부에 포함되는 선분 중 어느 하나인 것을 특징으로 하는 스캔라인 형성 방법.
- 제3항에 있어서,상기 스캔라인이 상기 삼각형의 y좌표가 정수인 수평선 중 상기 삼각형의 내부에 포함되는 선분인 경우 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 올림한 정수이며, 상기 스캔라인이 상기 삼각형의 y좌표가 정수+05인 수평선 중 상기 삼각형의 내부에 포함되는 선분인 경우 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 반올림한 정수에 0.5를 더한 값인 것을 특징으로 하는 스캔라인 형성 방법.
- 삭제
- 제1항에 있어서,상기 정점 1, 정점2 및 정점 4로 이루어진 삼각형에 대한 데이터는 상기 점 1의 파라미터 값 및 스텝 값, 상기 점 2의 x좌표 및 x의 스텝 값을 포함하는 것을 특징으로 하는 스캔라인 형성 방법.
- 제1항에 있어서,상기 정점 2, 상기 정점4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터는 상기 점 3의 파라미터 값 및 스텝 값, 상기 점 4의 x좌표 및 x의 스텝 값을 포함하는 것을 특징으로 하는 스캔라인 형성 방법.
- 제1항에 있어서,상기 삼각형이 제2 유형인 경우인 경우 상기 점 1 및 상기 점 3에서의 파라미터 값 및 스텝 값, 상기 점 2 및 상기 점 4에서의 x 좌표 및 x의 스텝 값을 버퍼에 저장하는 단계를 더 포함하는 것을 특징으로 하는 스캔라인 형성 방법.
- 제1항에 있어서,상기 파라미터는 좌표 값, 텍스쳐 좌표 및 칼라 픽셀 값을 포함하는 것을 특징으로 하는 스캔라인 형성 방법.
- 제1항에 있어서,상기 스텝 값은 스캔라인의 시작점이나 끝점간의 파라미터 변화율인 것을 특징으로 하는 스캔라인 형성 방법.
- 정점 1, 정점 2 및 정점 3으로 이루어진 삼각형의 스캔라인을 형성하는 래스터라이저에 있어서,상기 삼각형의 유형을 판단하는 수단-여기서 상기 삼각형의 유형은, y좌표 값이 차례로 커지는 순서인 정점 1, 정점 2 및 정점 3으로 이루어진 제1 유형 삼각형과 제2 유형 삼각형 중 어느 하나에 해당하며, dxdy21 < dxdy31 의 조건을 만족하는 경우에는 제1 유형 삼각형으로 판단하고, dxdy21 < dxdy31 의 조건을 만족하지 아니하는 경우에는 제2 유형 삼각형으로 판단함(여기에서, dxdy21은 정점 1과 정점 2 간의 x좌표값의 변화율에 대한 y좌표값의 변화율인 Δx21/Δy21이고, dxdy31은 정점 1과 정점 2간의 x좌표값의 변화율에 대한 y좌표값의 변화율인Δx31/Δy31임)-;상기 판단된 삼각형의 유형에 따라 b2m_lside 변, b2m_rside 변, m2t_lside 변 및 m2t_rside 변을 판단하는 수단-여기에서, 상기 삼각형이 제1 유형 삼각형인 경우에는 b2m_lside 변은 정점 1로부터 정점 2 사이의 변이고 b2m_rside 변은 정점 1로부터 정점 4 사이의 변이고 m2t_lside 변은 정점 2로부터 정점 3 사이의 변이고 m2t_rside 변은 정점 4로부터 정점 3 사이의 변이며, 상기 삼각형이 제2 유형 삼각형인 경우에는 b2m_lside 변은 정점 1로부터 정점 4 사이의 변이고 b2m_rside 변은 정점 1로부터 정점 2 사이의 변이고 m2t_lside 변은 정점 4로부터 정점 3 사이의 변이고 m2t_rside 변은 정점 2로부터 정점 3 사이의 변임(여기에서, 정점 4는 정점 2와 y좌표값이 동일하며 정점 1로부터 정점 3 사이의 변 위에 있는 점임)-상기 b2m_lside 변 위에 있으며 y 좌표가 y1인 점1 및 상기 m2t_lside 변 위에 있으며 y좌표가 y2인 점 3에서의 파라미터 값을 계산하는 수단;상기 b2m_lside 및 상기 m2t_lside 변 위에서의 스텝 값을 계산하는 수단;상기 b2m_rside 변 위에 있으며 y좌표가 상기 y1인 점 2 및 상기 m2t_rside 변 위에 있으며 y좌표가 상기 y2인 점 4에서의 파라미터 값을 계산하는 수단;상기 b2m_rside 및 상기 m2t_rside 변 위에서의 스텝 값을 계산하는 수단;상기 삼각형이 제1 유형인 경우 상기 정점 1, 상기 정점 2 및 상기 정점 4로 이루어진 삼각형에 대한 데이터를 버퍼에 저장하는 수단; 및상기 정점 2, 상기 정점 4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터를 버퍼에 저장하는 수단을 포함하는 래스터라이저.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050135050A KR100742155B1 (ko) | 2005-12-30 | 2005-12-30 | 스캔라인 형성 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050135050A KR100742155B1 (ko) | 2005-12-30 | 2005-12-30 | 스캔라인 형성 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070071526A KR20070071526A (ko) | 2007-07-04 |
KR100742155B1 true KR100742155B1 (ko) | 2007-07-24 |
Family
ID=38506643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050135050A KR100742155B1 (ko) | 2005-12-30 | 2005-12-30 | 스캔라인 형성 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100742155B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100908123B1 (ko) * | 2006-05-26 | 2009-07-16 | 삼성전자주식회사 | 원근 보정을 수행하는 3차원 그래픽 처리 방법 및 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990015445A (ko) * | 1997-08-06 | 1999-03-05 | 윤종용 | 사각형을 이용한 래스터화 방법 |
KR100269100B1 (ko) | 1993-10-30 | 2000-10-16 | 윤종용 | 삼각형탐색방법및이를채용한래스터라이저 |
US20030122821A1 (en) | 2001-12-19 | 2003-07-03 | Canon Kabushiki Kaisha | Overlapping triangle meshes |
JP2004029864A (ja) | 2002-06-03 | 2004-01-29 | Mitsubishi Electric Corp | 三角形ポリゴン描画装置および三角形ポリゴン描画方法 |
-
2005
- 2005-12-30 KR KR1020050135050A patent/KR100742155B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100269100B1 (ko) | 1993-10-30 | 2000-10-16 | 윤종용 | 삼각형탐색방법및이를채용한래스터라이저 |
KR19990015445A (ko) * | 1997-08-06 | 1999-03-05 | 윤종용 | 사각형을 이용한 래스터화 방법 |
US20030122821A1 (en) | 2001-12-19 | 2003-07-03 | Canon Kabushiki Kaisha | Overlapping triangle meshes |
JP2004029864A (ja) | 2002-06-03 | 2004-01-29 | Mitsubishi Electric Corp | 三角形ポリゴン描画装置および三角形ポリゴン描画方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20070071526A (ko) | 2007-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101916341B1 (ko) | 스크린 위치에 따라 달라지는 분해능을 가진 다수의 렌더 타겟을 위한 텍스처 매핑을 위한 그라디언트 조정 | |
US7746342B2 (en) | Drawing processing apparatus, texture processing apparatus, and tessellation method | |
US8823705B2 (en) | Image generating apparatus and image generating method for generating images by rendering a polygon | |
KR20050030595A (ko) | 화상 처리 장치 및 그 방법 | |
JP2010510608A (ja) | グラフィックスアプリケーションのための効率的なシザリング | |
JP2008059582A (ja) | 省エネのためのlod値計算方法とこれを利用した3次元レンダリングシステム | |
JPS6380375A (ja) | テクスチヤマツピング装置 | |
JP5657099B2 (ja) | テクスチャマッピング装置 | |
JPH11161819A (ja) | 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体 | |
US7015930B2 (en) | Method and apparatus for interpolating pixel parameters based on a plurality of vertex values | |
KR100742155B1 (ko) | 스캔라인 형성 방법 및 장치 | |
KR20090059800A (ko) | 폴리곤의 특징에 적응된 순서로 래스터화하는 래스터화엔진 및 3차원 그래픽스 시스템 | |
JP4664169B2 (ja) | 図形描画装置及び図形描画プログラム | |
US6972760B2 (en) | Area and span based Z-buffer | |
US6518969B2 (en) | Three dimensional graphics drawing apparatus for drawing polygons by adding an offset value to vertex data and method thereof | |
CA2743036C (en) | Vector image drawing device, vector image drawing method, and recording medium | |
US8576219B2 (en) | Linear interpolation of triangles using digital differential analysis | |
JP2007141196A (ja) | ポリゴン・シルエットライン・アンチエイリアス回路 | |
JP3587105B2 (ja) | 図形データ処理装置 | |
JP3872056B2 (ja) | 描画方法 | |
US20160321835A1 (en) | Image processing device, image processing method, and display device | |
JP4106719B2 (ja) | 画像処理装置 | |
JP4214644B2 (ja) | 2次元パターン生成装置 | |
JPH0477882A (ja) | 三角形ポリゴン描画方法およびその装置 | |
JP2006113909A (ja) | 画像処理装置、画像処理方法及び画像処理プログラム |
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 | ||
FPAY | Annual fee payment |
Payment date: 20130626 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140701 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20150629 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160630 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20180627 Year of fee payment: 12 |