KR100742155B1 - 스캔라인 형성 방법 및 장치 - Google Patents

스캔라인 형성 방법 및 장치 Download PDF

Info

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
Application number
KR1020050135050A
Other languages
English (en)
Other versions
KR20070071526A (ko
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 KR1020050135050A priority Critical patent/KR100742155B1/ko
Publication of KR20070071526A publication Critical patent/KR20070071526A/ko
Application granted granted Critical
Publication of KR100742155B1 publication Critical patent/KR100742155B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing 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

스캔라인 형성 방법 및 장치{Method and apparatus for making scan line}
도 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. 래스터라이저에서 정점 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으로 이루어진 삼각형에 대한 데이터를 버퍼에 저장하는 단계
    를 포함하는 스캔라인 형성 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 스캔라인은 상기 삼각형의 y좌표가 정수인 수평선 중 상기 삼각형의 내부에 포함되는 선분 및 상기 삼각형의 y좌표가 정수+05인 수평선 중 상기 삼각형의 내부에 포함되는 선분 중 어느 하나인 것
    을 특징으로 하는 스캔라인 형성 방법.
  4. 제3항에 있어서,
    상기 스캔라인이 상기 삼각형의 y좌표가 정수인 수평선 중 상기 삼각형의 내부에 포함되는 선분인 경우 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 올림한 정수이며, 상기 스캔라인이 상기 삼각형의 y좌표가 정수+05인 수평선 중 상기 삼각형의 내부에 포함되는 선분인 경우 상기 y1 및 상기 y2는 각각 상기 정점 1 및 상기 정점 2에서 y좌표를 반올림한 정수에 0.5를 더한 값인 것
    을 특징으로 하는 스캔라인 형성 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 정점 1, 정점2 및 정점 4로 이루어진 삼각형에 대한 데이터는 상기 점 1의 파라미터 값 및 스텝 값, 상기 점 2의 x좌표 및 x의 스텝 값을 포함하는 것
    을 특징으로 하는 스캔라인 형성 방법.
  7. 제1항에 있어서,
    상기 정점 2, 상기 정점4 및 상기 정점 3으로 이루어진 삼각형에 대한 데이터는 상기 점 3의 파라미터 값 및 스텝 값, 상기 점 4의 x좌표 및 x의 스텝 값을 포함하는 것
    을 특징으로 하는 스캔라인 형성 방법.
  8. 제1항에 있어서,
    상기 삼각형이 제2 유형인 경우인 경우 상기 점 1 및 상기 점 3에서의 파라미터 값 및 스텝 값, 상기 점 2 및 상기 점 4에서의 x 좌표 및 x의 스텝 값을 버퍼에 저장하는 단계를 더 포함하는 것
    을 특징으로 하는 스캔라인 형성 방법.
  9. 제1항에 있어서,
    상기 파라미터는 좌표 값, 텍스쳐 좌표 및 칼라 픽셀 값을 포함하는 것
    을 특징으로 하는 스캔라인 형성 방법.
  10. 제1항에 있어서,
    상기 스텝 값은 스캔라인의 시작점이나 끝점간의 파라미터 변화율인 것
    을 특징으로 하는 스캔라인 형성 방법.
  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으로 이루어진 삼각형에 대한 데이터를 버퍼에 저장하는 수단
    을 포함하는 래스터라이저.
KR1020050135050A 2005-12-30 2005-12-30 스캔라인 형성 방법 및 장치 KR100742155B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100908123B1 (ko) * 2006-05-26 2009-07-16 삼성전자주식회사 원근 보정을 수행하는 3차원 그래픽 처리 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
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 三角形ポリゴン描画装置および三角形ポリゴン描画方法

Patent Citations (4)

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