KR100232931B1 - 컴퓨터 그래픽용 쉐이딩 방법 및 시스템 - Google Patents

컴퓨터 그래픽용 쉐이딩 방법 및 시스템 Download PDF

Info

Publication number
KR100232931B1
KR100232931B1 KR1019900020769A KR900020769A KR100232931B1 KR 100232931 B1 KR100232931 B1 KR 100232931B1 KR 1019900020769 A KR1019900020769 A KR 1019900020769A KR 900020769 A KR900020769 A KR 900020769A KR 100232931 B1 KR100232931 B1 KR 100232931B1
Authority
KR
South Korea
Prior art keywords
value
vertex
circuit
trapezoids
dda
Prior art date
Application number
KR1019900020769A
Other languages
English (en)
Other versions
KR910012997A (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
Priority claimed from JP33214789A external-priority patent/JP2770513B2/ja
Priority claimed from JP1333632A external-priority patent/JPH03192480A/ja
Priority claimed from JP33363389A external-priority patent/JP2770514B2/ja
Priority claimed from JP33363589A external-priority patent/JP2814631B2/ja
Priority claimed from JP1333634A external-priority patent/JPH03192482A/ja
Application filed by 이데이 노부유끼, 소니 가부시키가이샤 filed Critical 이데이 노부유끼
Publication of KR910012997A publication Critical patent/KR910012997A/ko
Application granted granted Critical
Publication of KR100232931B1 publication Critical patent/KR100232931B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Landscapes

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

Abstract

복수의 다각형으로 곡면을 근사화하고, 복수의 다각형의 정점들에 값을 입력하고, 선형 보간에 의해 복수의 다각형의 각 정점에 대한 입력값으로 복수의 다각형들의 내부의 값을 구하는 컴퓨터 그래픽을 위한 쉐이딩 방법 및 장치, 주사선의 끝점에서의 값을 계산하기 위하여 각 정점값에 대해서 수직 방향의 보정 연산이 행해진다. 좌표 격자점상의 시작점의 값을 계산하기 위하여 주사선의 끝점의 값에 대해서 수평 방향의 보정 연산이 행해진다. 시작점값에 대한 변화분은 각 좌표 격자점상의 값을 구하기 위하여 가산된다.

Description

컴퓨터 그래픽용 쉐이딩 방법 및 시스템
제1도는 보정 연산을 설명하는 개략도.
제2도는 발명의 보정 연산 기능이 있는 DDA 연산 회로의 블록도.
제3도는 제2도의 보정 연산 기능이 있는 DDA 연산 회로를 설명하는 블록도.
제4도는 보정 연산 기능이 있는 DDA 연산 회로에 의한 곱셈 알고리즘을 설명하는 개략도.
제5도는 쉐이딩(shading)을 설명하는 개략도.
제6도는 본 발명의 실시예를 설명하는 플로우 챠트.
제7도 및 제8도는 본 발명의 실시예에서 임의 다각형의 처리를 설명하는 개략도.
제9도 및 제10도는 본 발명의 실시예에서 큰 연산 오차를 고려하는 처리를 설명하는 개략도.
제11도는 본 발명의 일실시예를 도시하는 블록도.
제12도는 본 발명에 의한 병렬 처리 상태 전이 회로의 블록도.
제13도는 대기 회로의 블록도.
제14도는 대기 회로의 일례를 설명하는 타이밍 챠트.
제15도는 점프 회로의 블록도.
제16도는 조인(join)회로의 블록도.
제17도는 지연 회로의 블록도.
* 도면의 주요부분에 대한 부호의 설명
15, 16 : 멀티플렉서 17 : 감산기
18 : 멀티플렉서 19 : 제산기
22 : 감산기 31 : 멀티플렉서
34 : 제로 판정기 35 : 가산기
36 : 래치 38 : 멀티플렉서
본 발명은 2차원 디스플레이상에 표시되는 3차원 물체를 쉐이딩하기 위하여 사용되는 컴퓨터용 쉐이딩 장치 및 쉐이딩 방법에 관한 것이다.
컴퓨터 그래픽에 있어서, 3차원 물체가 2차원 디스플레이상에 표시될 때, 3차원 물체의 박진성 및 가시성을 개선하기 위하여 3차원 물체의 표면이 쉐이딩된다. 3차원 물체 표면에 명암을 주는 방법을 쉐이딩이라고 한다. 예를 들면, 점광원의 위치가 결정되는 경우, 쉐이딩 디스플레이 방법이 사용되며, 점광원에 수직한 표면은 밝게 되고, 표면의 휘도는 점광원의 수직성에 비례하게 된다.
2차원 디스플레이상에 표시된 3차원 물체는 복잡한 곡면을 가지고 있다.
곡면의 형상에 따른 복잡한 곡면을 가진 3차원 물체를 자연스럽게 최적으로 쉐이딩하기 위해서는, 복수 다각형으로 곡면을 근사화하고, 다각형의 각 정점 좌표의 값을 입력하며, 선형 보간에 의해 정점 좌표에 주어진 값으로 다각형내의 값을 구하는 방법이 사용된다. 선형 보간은 좌표 격자의 각 간격의 변동이 연속해서 가산되는 DDA(디지탈 미분 해석기)연산을 이용하여 행해진다(예, 일본 특허 공개 공보 소 61-52737호).
2차원 디스플레이상에 3차원 물체를 표시하기 위해, 좌표 격자점상에 픽셀(pixel)이 제공된다. 이 픽셀에 따른 값(깊이값 및 휘도값)이 입력된다.
상술한 바와 같이, 곡면을 복수의 다각형으로 근사화하고, 각 다각형의 정점 좌표값을 입력하며, 선형 보간에 의하여 각 다각형내의 값을 구하기 위한 방법에 있어서, 각 정점의 좌표는 좌표 격자점에서 벗어날 수가 있다.
그러나, 지금까지 좌표 격자점 이외의 다른 좌표에 값이 입력될 수 없다.
이를 방지하기 위하여 곡면을 근사화하여 구한 다각형의 정점 좌표가 격자점에서 벗어날 때, 다각형의 정점 좌표값은 좌표에 가장 근접한 좌표 격자점상의 값으로 처리된다.
이 경우, 좌표 격자점의 픽셀에는 그 픽셀에 정확한 값이 입력되는 것이 아니라 좌표 격자점에 근접한 좌표값이 입력된다. 따라서, 3차원 물체가 이동되거나 변형될 때 혹은 광원이 이동될 때, 영상은 1픽셀의 정확도로 깜박인다.
지금까지, 곡면을 복수의 다각형으로 근사화하고, 다각형의 정점 좌표값을 입력하며, 각 다각형 내의 값을 선형 보간에 의해 각 정점 좌표에 대한 입력값으로 구하는 방법에 있어서, 곡면은 사다리꼴 또는 삼각형과 같은 특정 다각형으로 근사화된다.
임의의 다각형으로 곡면이 근사화될 때, 대용량의 메모리가 요구된다. 즉, 임의의 다각형을 처리하기 위하여 메모리는 동시에 다각형의 정점값을 저장해야 한다. 따라서, 정점수가 한정되지 않은 다각형을 처리하기 위해서는 무한 메모리 용량이 필요하다.
그러나, 사다리꼴 또는 삼각형과 같은 특정 다각형으로 곡면을 근사화할 때, 드로잉(drawint)효율성은 나빠진다. 따라서, 임의의 다각형으로 곡면이 근사화될 때, 드로잉 효율성은 개선될 것이며, 복잡한 곡면이 실시간을 기준으로 최적 쉐이딩될 것이다.
따라서, 본 발명의 제1목적은, 각 정점값에 대해서 수직 방향으로 보정 연산을 행하고, 주사선의 끝점값에 대해서 수평방향으로 보정 연산을 행하고, 각 좌표 격자점상의 값을 구하는 것에 의해, 좌표 격자점상에서 정확한 값들이 입력될 수 있고 따라서 깜박거림이 없는 자연스런 쉐이딩이 실시간에서 얻어질 수 있는 컴퓨터 그래픽 쉐이딩 방법을 제공하는 것이다.
본 발명의 제2목적은, 변화분을 연속해서 가산하는 DDA 연산과 초기 위치값을 변화분에 곱하는 보정 연산을 행할 수 있는 부가의 루프를 사용함으로써, 하드웨어가 단순해질 수 있는 컴퓨터 그래픽용 쉐이딩 장치를 제공하는 것이다.
본 발명의 제3목적은, 소정 시간까지 입력 신호를 지연시키는 병렬 처리 회로를 제공하고 수직 및 수평방향으로 연산의 병렬 처리 제어를 행함으로써, 데이터의 흐름을 용이하게 이해할 수 있고 높은 유지성을 가진 병렬 처리가 수행될 수 있는 컴퓨터 그래픽용 쉐이딩 장치를 제공하는 것이다.
본 발명의 제4목적은, 메모리 용량을 늘리지 않고도 임의의 다각형을 처리할 수 있는 컴퓨터 그래픽용 쉐이딩 방법을 제공하는 것이다.
본 발명의 제5목적은, 다각형의 수직 길이가 소정 값 이하일지라도 제산기는 오버플로우 되지 않으며, 그려진 영상이 무질서하지 않는 컴퓨터 그래픽용 쉐이딩 방법을 제공하는 것이다.
본 발명의 제6목적은, 도형의 연속성을 향상시킬 수 있는 컴퓨터 그래픽용 쉐이딩 방법을 제공하는 것이다.
본 발명의 제7목적은, 곡면을 복수의 다각형으로 근사화하고, 애트리뷰트의 정수부의 비트수에 따라 수평 방향 및 수직방향으로 좌표값의 소수부 비트수를 제공하는 선형 보간에 의해 복수의 다각형의 내부값을 구하므로써 연산이 고정 소수점 산술 방식으로 행해질 수 있고 그러므로써 하드웨어를 단순화시키는 컴퓨터 그래픽 쉐이딩 장치를 제공하는 것이다.
본 발명의 한 특징에 따르면, 곡면을 복수의 다각형으로 근사화하고, 복수의 다각형 정점에 값을 입력하며, 선형 보간에 의해 복수의 다각형의 각 정점에 대한 입력값으로 복수의 다각형내의 값을 구하는 컴퓨터 그래픽용 쉐이딩 방법이 제공된다. 그 단계는 다음과 같다.
주사선의 끝점 값을 연산하기 위하여 각 정점값의 값에 대해서 수직 방향으로 보정 연산을 행하는 단계와, 좌표 격자점상의 시작점 값을 연산하기 위하여 주사선의 끝점값에 대해서 수평 방향으로 보정 연산을 행하는 단계와, 각 좌표 격자점상의 값을 구하기 위하여 시작점의 값에 변화분을 가산하는 단계로 이루어진다.
본 발명의 또 다른 특징에 의하면, 곡면을 복수의 다각형으로 근사화하고, 복수의 다각형 정점에 값을 입력하며, 선형 보간에 의해 복수의 다각형의 각 정점값에 대한 입력값으로 복수의 다각형내의 값을 구하는 컴퓨터 그래픽용 쉐이딩 장치가 제공되어 있으며, 쉐이딩 장치는, 가산기의 출력을 래치 회로에 공급하며, 래치 회로의 출력을 가산기에 공급하기 위한 가산 루프와, 변화분을 연속으로 가산하는 DDA 연산과 초기 위치값에 가산 루프에 의하여 행해지는 상기 변화분을 곱하는 보정 연산을 포함한다.
본 발명의 또 다른 특징에 의하면, 곡면을 복수의 다각형으로 근사화하고, 복수의 다각형 정점에 값을 입력하며, 선형 보간에 의해 복수의 다각형의 각 정점에 대한 입력값으로 복수의 다각형내의 값을 구하는 컴퓨터 그래픽용 쉐이딩 장치가 제공됨으로써, 곡면을 임의의 다각형으로 근사화하고 상기 다각형의 각 정점값을 입력하는데 있어서, 임의의 다각형은 사다리꼴로 취급되며, 각 사다리꼴의 좌변 및 우변상에 정점이 있는지 없는지가 결정되며, 상기 사다리꼴의 좌변 및 우변의 동일선상에 정점이 있을 때, 좌변 및 우변의 입력값은 동시에 입력되고, 상기 사다리꼴의 좌변 및 우변중 하나에 정점이 있을 때, 정점이 있는 변의 값이 입력되며, 이전 처리값은 다른변에 사용된다.
본 발명의 또 다른 특징에 따르면, 곡면을 복수의 다각형으로 근사화하고, 복수의 다각형의 정점에 값을 입력하며, 선형 보간에 의해 복수의 다각형의 각 정점에 대한 입력값으로 복수의 다각형내의 값을 구하는 쉐이딩 장치가 제공되며, 여기서, 에트리뷰트의 소수부의 비트수는 수평방향으로는 장치 좌표의 정수부의 비트수에 따라서 제공되거나, 수직 방향으로는 장치좌표의 정수부의 비트수에 따라서 제공되며, 수평 방향에서 좌표값의 소수부의 비트수와 수직 방향에서 좌표값의 소수부의 비트수는 애트리뷰트의 정수부의 비트수에 따라서 제공된다.
이후, 본 발명의 상기 및 다른 목적, 특징 및 이점을 첨부된 도면을 참조하여 보다 더 상세히 설명하기로 한다.
본 발명의 실시예는 다음순서로 설명될 것이다.
a. 쉐이딩 방법의 개요
b. 보정 연산
b1. 보정 연산의 원리
b2. 보정 연산 기능을 가진 DDA 연산 회로
c. 쉐이딩 방법의 설명
c1. 처리에 필요한 연산
c2. 드로잉 절차
c3. 임의의 다각형으로 확장
c4. 큰 연산 오차가 발생하는 경우의 처리
d. 쉐이딩 장치
d1. 쉐이딩 장치의 구조
d2. 연산 정확도와 비트수
e. 병렬 처리 상태 전이 회로
e1. 기본 회로의 설명
e2. 쉐이딩 처리를 위한 병렬 처리 상태 전이 회로
a. 쉐이딩 방법의 개요
본 발명은 곡면을 복수의 다각형으로 근사화하여, 각 다각형의 정점 좌표값을 입력하고, 곡면의 형상에 따라 자연스럽게 쉐이딩을 완성하기 위하여 선형 보간에 의해 정점 좌표에 대한 값으로 다각형내의 값을 구하는 프로세스에 관한 것이다.
곡면을 복수의 다각형으로 근사화하고, 각 다각형의 정점 좌표값을 입력하며, 선형 보간에 의해 다각형내의 값을 구하기 위한 프로세스에서, 각 정점의 좌표는 좌표 격자점에서 벗어날 수 있다.
본 발명의 일실시예에서 수평값 X 및 수직값 Y의 정수부를 입력함으로써 픽셀이 없는 좌표 격자점 사이의 값들이 입력될 수 있다. 이하에서는, 이러한 프로세스를 서브 픽셀 어드레싱이라 한다. 따라서, 곡면의 근사화로 구해진 다각형의 정점 좌표가 좌표 격자점을 벗어날지라도 정점 좌표에 따른 값(수평값 X 및 수직값 Y)(깊이값 Z 및 휘도값 R(적), G(녹), B(청))이 입력될 수 있다.
본 발명의 실시예에 있어서, 서브 픽셀 어드레싱이 행해진다. 그런 다음 보정 연산이 실행된다. 따라서, 각 주사선의 DDA 연산 시작점에서 좌표 격자점상의 정확한 픽셀값이 구해질 수 있다. 그런 다음 각 좌표 격자점상의 픽셀값을 구하기 위하여 DDA 연산이 반복된다.
한편, 곡면을 근사화하여 구한 사다리꼴의 원선(primitive)에 대해 좌, 우변에서 수직 보정 연산이 실행된다. 주사선의 좌단값(주사 동작은 왼쪽에서 오른쪽으로 실행되기 때문에, 주사선의 좌단은 그의 시작점과 일치한다)과 주사선의 우단값(주사선의 우단은 그의 끝점과 일치한다)이 구해진다. 수평 방향의 보정 연산에 의해 주사선의 좌, 우단 값으로 주사선의 좌단에 근접한 좌표 격자점의 시작점상의 정확한 픽셀값이 구해진다. 수평 방향의 변화분이 시작점의 픽셀값에 가산되는 수평 방향으로 DDA 연산을 반복함으로써, 각 주사선의 좌표 격자점상의 정확한 픽셀값이 구해진다. 다음 주사선의 좌단의 값이, 좌변상의 수직 방향의 변화분이 선행 주사선의 좌단값에 가산되는 수직 방향으로의 DDA 연산에 의하여 구해진다. 마찬가지로, 다음 주사선의 우단값은, 우변상의 수직 방향의 변화분이 선행 주사선의 우단값에 가산되는 수직 방향의 DDA 연산에 의해 구해진다.
이 경우, 좌표 격자점상에 정확한 픽셀값이 입력되었기 때문에, 스크린의 깜박거림이 없이 실시간에서 3차원 물체 및 광원의 움직임에 따라 고정밀의 쉐이딩이 행해진다.
곡면을 복수의 다각형으로 근사화하는데 있어서, 임의의 다각형으로 근사화 될 수 있을 때, 드로잉 효율성이 향상된다. 본 발명의 일실시예에 있어서, 좌변 및 우변의 정점이 동일 수평선상에 있을 때만 좌변 및 우변의 정점값이 동시에 입력된다. 오직 한 개의 정점값만 입력되면, 다른 정점값은 널(null)값으로 취급된다. 이 경우, 전회의 DDA 연산이 사용된다. 따라서, 사다리꼴에 대한 연산이 임의 다각형으로 확장될 수 있다.
b. 보정 연산
b1. 보정 연산의 원리
본 발명의 일실시예에 있어서, 전술한 바와 같이 좌변 및 우변의 수직 방향으로 보정 연산을 처리함으로써, 주사선의 끝점값이 구해진다. 수평 방향의 보정 연산을 처리함으로써, 시작점의 좌표 격자점상의 정확한 픽셀값이 구해진다. 그후, 좌변 및 우변 상에서 수직 방향의 DDA 연산을 반복하고 수평 방향의 DDA 연산을 반복함으로써, 각 좌표 격자점상의 픽셀값이 구해진다.
다음, 쉐이딩 프로세스를 설명하기 전에 보정 연산에 대해서 설명하기로 한다.
제1도에 도시한 바와 같이, 값 A(V) 및 B(V)는 점 A 및 B에 주어지며, 이 값들이 선형적으로 변화한다고 가정하면, 점 A 및 B 사이의 점 R의 값 R(V)를 구한다.
이 경우, 이 값들이 선형적으로 변화할 때, 점 A 및 B 사이의 점 R의 값 R(V)는 선형 보간에 의하여 구해진다.
즉, 점 A 및 B 사이의 점 R의 값R(V)는 다음의 식으로 구해진다.
이러한 선형 보간의 경우, 1회의 곱셈과 2회의 나눗셈이 실행된다. 곱셈 및 나눗셈의 회수가 증가함에 따라, 회로 규모가 커지고, 연산 시간이 길어지게 된다.
따라서, 상기 식은 다음과 같이 변형된다.
상기 식에서, 항은 변화분 DD이다.
따라서, 점 A 및 B 사이의 점 R의 값R(V)는 다음 식으로 구해진다.
R(V)=A(V)+(R-A)×DD (4)
곡면을 복수의 다각형으로 근사화하고 다각형내의 값을 선형 보간으로 구하여 쉐이딩을 행하는 경우, DDA 연산을 처리하기 위한 변화분 DD가 앞서 구해진다.
따라서, 보정 연산이 상기 식으로 변환될 때, 보정 연산은 1회의 곱셈에 의해서만 수행된다. 보정 연산 프로세스에 있어서, DDA 연산 회로가 이용된다. 보정 연산기능을 가진 DDA 연산 회로에 대해서는 다음에 설명하기로 한다.
b2. 보정 연산 기능을 가진 DDA 연산 회로
보정 연산 처리에 있어서, 전술한 바와 같이 초기 위치 A에서 보정 위치 R까지의 거리(R-A)와 변화분 DD와의 곱이 초기 위치에서의 값 A(V)에 가산된다.
이 프로세스는 제2도에 도시한 바와 같이 보정 연산 기능을 가진 DDA 연산 회로에 의해 수행된다.
보정 연산 기능을 가진 DDA 연산 회로는 3가지 모드로 설정된다. 한 모드는 보정값을 얻기 위한 보정값 연산 모드이다. 보정값 연산 모드에서, 입력 단자(30)에서 입력되는 보정 위치까지의 거리와 입력 단자(33)로부터 입력되는 변화분 DD가 곱해진다.
따라서, 다음 연산이 행해진다.
(R-A)×DD
곱셈시 보정 위치까지의 거리(R-A)는 최하위 비트로부터 직렬 데이터로서 주어진다. 보정 위치까지의 각 비트 거리(R-A)에 변화분 DD 가 곱해진 다음 우측으로 시프트된다. 그 결과의 곱은 비트 단위로 가산된다.
제2모드에서, 보정값은 보정된 값을 구하기 위하여 초기 위치 값에 가산된다. 따라서, 다음 연산이 행해지며, 점 R 의 값 R(V)가 구해진다.
A(V)+(R-V)×DD
제3모드에서, DDA 연산이 행해진다. DDA 연산에서, 변화분 DD를 이전값에 가산하는 프로세스가 반복된다.
제2도에서, 초기 위치의 값 A(V)가 입력단자(32)에서 멀티플렉서(31)의 한 입력 단자로 입력된다. 입력 단자(33)에서 입력되는 변화분 DD는 멀티플렉서(31)의 다른 단자에 공급된다. 입력 단자(32)로부터의 초기 위치의 값 A(V)과 입력 단자(33)로부터의 변화분은 병렬 데이터로서 입력된다. 멀티플렉서(31)의 한 출력이 제로 판정 회로(34)에 공급된다. 보정 위치까지의 거리(R-A)가 최하위 비트로 시작하는 직렬 데이터로서 입력 단자(30)로부터 공급된다.
제로 판정 회로(34)는 보정값 연산 모드시의 변화분 DD을 보정 위치까지의 거리(R-A)에 곱하기 위하여 사용된다.
제3도에 도시한 바와 같이, 제로 판정 회로(34)는 AND게이트(421, 422, 423, ..... 및 42n)로 구성된다. 멀티플렉서(31)의 각각의 출력 데이터 비트는 각 AND게이트(421, 422, 423,..... 및 42n)의 한 입력 단자에 공급된다.
입력 단자(30)로부터의 직렬 데이터는 각각의 AND게이트(421, 422, 423, ..... 및 42n)의 다른 입력 단자에 공급된다.
제2도에서 제로 판정 회로(34)의 출력은 가산기(35)에 공급된다. 가산기(35)출력은 래치 회로(36)에 공급된다.
DDA 클록 DDA CK는 클록 입력 단자(39)에서 래치 회로(36)로 공급된다. 또한, 리셋 신호 RST는 리셋 단자(40)에서 래치 회로(36)로 공급된다. 래치 회로(36)의 출력은 출력 단자(37)에서 꺼내진다. 또한, 래치 회로(36)의 출력은 멀티플렉서(38)에 공급된다.
멀티플렉서(38)에는 입력 단자(41)로부터 보정 루프 신호 AJL이 공급된다.
멀티플렉서(38)의 입력 단자(41)에서 보정 루프 신호 AJL이 공급될 때, 래치 회로(36)의 출력은 각 클록에 따라서 우측으로 1비트씩 시프트되어, 멀티플렉서(38)로 출력된다.
멀티플렉서(38)의 출력이 가산기(35)에 공급된다.
우선, 래치 회로(36)에 입력 단자(40)로부터 리셋 신호 RST가 공급된다.
이 리셋 신호 RST에 의해 래치 회로(36)가 리셋된다.
다음에, 보정값 연산 모드로 되어 보정값이 구해진다. 보정값 연산 모드에서, 멀티플렉서(31)는 입력 단자(33)로부터 변화분 DD를 선택한다. 멀티플렉서(31)로부터 제로 판정 회로(34)로 변화분 DD 가 병렬 데이터로서 공급된다. 보정 위치까지의 거리(R-A)가 최하위 비트로 시작하는 직렬 데이터로서 제로 판정 회로(34)에 입력 단자(30)로부터 공급된다.
제로 판정 회로(34)에서, 보정 위치까지의 거리(R-A)에 비트 단위로 변화분 DD가 곱해진다. 보정 위치까지의 거리(R-A)의 한 비트가 “1”일 때, “1”이 변화분 DD에 곱해지기 때문에, 변화분 DD는 그대로 제로 판정 회로(34)를 통해 출력된다. 반대로 보정 위치까지의 거리(R-A)의 1비트가 “0”일 때, 변화분 DD에 “0”이 곱해지기 때문에, “00....0”이 제로 판정 회로(34)로부터 출력된다.
가산기(35)의 출력은 래치 회로(36)를 거쳐 멀티플렉서에 공급된다. 멀티플렉서(38)에 입력 단자(41)로부터 보정 루프 신호 AJL이 공급된다. 따라서, 가산기(35)의 출력은 멀티플렉서(38)에 의해 1비트씩 시프트 되어 가산기(35)에 공급된다. 결과 데이터는 래치 회로(36)에 누적된다.
이러한 가산을 반복함으로써, 보정 위치까지의 거리(R-A)와 변화분 DD와의 곱셈이 행해진다.
한편, 변화분 DD가 4비트 데이터 “d3, d2, d1, d0”이고 보정 위치까지의 거리(R-A)는 4비트 데이터 “a3, a2, a1, a0”이라고 가정할 때, 보정 위치까지의 거리(R-A)와 변화분 DD와의 곱셈이 제4도에 도시한 바와 같이 행해진다.
우선, 보정 위치까지의 거리(R-A)의 최하위 비트 “a0”는 제로 판정 회로(34)에 공급된다. 그리고 최하위 비트“a0”와 “d3, d2, d1, d0”가 곱해져서, “a0d3, a0d2, a0d1, a0d0”가 구해진다.
다음에, 보정 위치까지의 거리(R-A)의 하위 차수의 제2비트 “a1”이 공급된다. 그런 다음, 하위 차수의 제2비트 “a1”과 “d3, d2, d1, d0”가 곱해져서 “a1d3, a1d2, a1d1, a1d0”가 구해진다.
“a1d3, a1d2, a1d1, a1d0”는 우측으로 1비트 시프트된 “a0d3, a0d2, a0d1, a0d0”에 가산된다.
마찬가지로 “a2d3, a2d2, a2d1, a0d0”와 “a3d3, a3d2, a3d1, a3d0”가 구해지며, 우로 1비트 시프트된 다음 가산된다.
이와 같이, “d3, d2, d1, d0”와 “a3, a2, a1, a0”와의 곱셈이 행해지며, 곱 “c7, c6, c5, c4, c3, c2, c1, c0”가 구해진다.
제2도에서, 전술한 방법으로 구한 보정값(R-A)DD)은 래치 회로(36)에 저장된다. 보정값(R-A)DD)이 래치 회로(36)에 저장된 후, 보정값(R-A)DD)을 초기 위치의 값A(V)에 가산하여, 보정값을 구하는 모드가 발생한다.
이 모드에서, 입력 단자(32)로부터의 초기 위치의 값A(V)는 멀티플렉서(31)에서 출력된다. 가산기(35)에 제로 판정 회로(34)를 거쳐 값 A(V)가 공급된다.
래치 회로(36)에, 보정값 연산 모드로 구한 보정값(R-A)DD)이 저장된다.
가산기(35)에 멀티플렉서(38)를 거쳐 보정값(R-A)DD)가 공급된다. 가산기(35)에서, 보정값(R-A)DD)은 초기 위치값 A(V)에 가산되고 결과값은 래치 회로(36)에 저장된다.
보정값(R-A)DD)이 값 A(V)에 가산되는 값(A(V)+(R-A)DD)이 래치 회로(36)에 저장될 때, DDA모드가 발생한다.
DDA모드에서, 입력 단자(33)로부터의 변화분 DD는 멀티플렉서(31)에서 출력된다. 가산기(35)에 제로 판정 회로(34)를 거쳐 변화분 DD가 공급된다.
가산기(35)에서, 래치 회로(36)에 저장된 이전값은 변화분 DD에 가산되며, 그 결과값은 래치 회로(36)에 저장된다. 변화분 DD를 가산하는 연산이 반복된다.
c. 쉐이딩 방법의 설명
본 발명에 의한 쉐이딩 방법이 이하에서 설명될 것이다.
제5도에 도시한 바와 같은 사다리꼴은 곡면을 복수의 다각형으로 근사화할 때, 하나의 원선으로서 구해진다고 가정한다. 제5도에서, 수직 점선과 수평 점선과의 교차가 좌표 격자이다. 이 좌표 격자점상에 픽셀이 있다. 두 수직 또는 수평 좌표 격자 사이의 거리는 1이다. 이 사다리꼴의 정점 LS, LE, RS 및 RE 값(수평값 X, 수직값 Y, 깊이값 Z, 휘도값 R(적색값), G(녹색값) 및 B(청색값))을 입력함으로써, 사다리꼴의 좌표 격자점의 픽셀값은 선형 보간에 의해 구해진다.
c1. 처리에 필요한 연산
전술한 쉐이딩 처리에서, 다음의 연산이 행해진다.
-좌변 수직 방향의 변화분 연산(식11)
-우변 수직 방향의 변화분 연산(식 12)
-좌변 수직 방향의 보정 연산(식 13)
-우변 수직 방향의 보정 연산(식 14)
-좌변 수직 방향의 DDA 연산(식 15)
-우변 수직 방향의 DDA 연산(식 16)
-수평 방향의 변화분 연산(식 17)
-수평 방향의 보정 연산(식 18)
-수평 방향의 DDA 연산(식 19)
-좌변 수직 방향의 변화분 연산
우선, 수직 방향의 연산이 설명된다. 좌변 수직 방향의 두 좌표 격자 정점 사이의 각 값의 변화분 DL(X, Z,R, G, B)이 다음식으로 주어진다.
여기서,
LS(X, Y) : 좌측 상단 정점 LS에서의 수평값 X와 수직값 Y
LS(Z) : 좌측 상단 정점 LS 에서의 깊이값 Z
LS(R, G, B) : 좌측 상단 정점 LS에서의 휘도값 R,, G, B
LE(X, Y) : 좌측 하단 정점 LE에서의 수평값 X와 수직값 Y
LE(Z) : 좌측 하단 정점 LE에서의 깊이값 Z
LE(R, G, B) : 좌측 하단 정점 LE에서의 휘도값 R, G, B
-우변 수직 방향의 변화분 연산
마찬가지로, 우변 수직 방향의 두 좌표 격자 사이의 변화분 DR(X, Z, R, G, B)은 다음식으로 구해진다.
여기서,
RS(X, Y) : 우측 상단 정점 RS에서의 수평값 X와 수직값 Y
RS(Z) : 우측 상단 정점 RS 에서의 깊이값 Z
RS(R, G, B) : 우측 상단 정점 RS에서의 휘도값 R, G, B
RE(X, Y) : 우측 하단 정점 RE에서의 수평값 X와 수직값 Y
RE(Z) : 우측 하단 정점 RE에서의 깊이값 Z
RE(R, G, B) : 우측 하단 정점 RE에서의 휘도값 R, G, B
-좌변 수직 방향의 변화분 연산
서브 픽셀 어드레싱이 행해질 때, 두 수직 픽셀 또는 두 수평 픽셀 사이의 거리는 1이므로, 좌측 상단 정점 LS에서 가장 근접한 주사선까지의 거리 y0는 다음과 같다.
1-(LS(Y)-Int(LS(Y))
여기서, Int는 소수부를 0으로 설정하는 연산이다(즉, (LS(Y)-Int(LS(Y))에 의해서 정점 LS의 수직값 Y의 소수부가 얻어진다).
따라서, 주사선 y0의 좌단에서의 값 HS0(X, Z, R, G, B)는 다음식으로 구해진 다.
HS0(X, Z, R, G, B)=LS(X, Z, R, G, B)+
1-(LS(Y)-Int(LS(Y))×DL(X, Z, R, G, B) (13)
이 식은 좌변 수직 방향의 보정 연산을 행하기 위하여 사용된다. 보정 연산은 전술식(2)와 동일 형태로 구해진다.
-우변 수직 방향의 보정 연산
마찬가지로, 주사선 y0의 우단에서의 값 HE0(X, Z, R, G, B)는 다음식으로 구해진다.
HE0(X, Z, R, G, B)=RS(X, Z, R, G, B)+
1-(RS(Y)-Int(LS(Y))×DR(X, Z, R, G, B) (14)
이식은 우변 수직 방향의 보정 연산을 행하기 위하여 사용된다.
-좌변 수직 방향의 DDA 연산
다음 주사선 yj+1의 좌단에서의 값 HSj+1(X,, Z, R, G, B)는 이전 주사선 yj의 좌단에서의 값 HSJ(X, Z, R, G, B)가 좌단 수직 방향의 변화분 DL(X, Z, R, G, B)에 가산되는 좌변 수직 방향의 DDA 연산에 의해서 구해진다. 즉, 다음 주사선 yj+1의 좌단에서의 값 HSj+1(X, Z, R, G, B)는 다음식으로 구해진다.
HSj+1(X, Z, R, G, B)=HSj(X, Z, R, G, B)+DL(X, Z, R, G, B) (15)
-우변 수직 방향의 DDA 연산
마찬가지로, 다음 주사선 yj+1의 우단에서의 값 HSj+1는 우변 수직 방향의 DDA 연산에 의해서 구해진다. 즉, 주사선 yj+1의 우단에서의 값(X, Z, R,, G, B)는 다음식으로 구해진다.
HSj+1(X, Z, R, G, B)=HSj+1(X, Z, R, G, B)+DL(X, Z, R, G, B) (16)
-수평 방향의 변화분 연산
다음, 수평 방향의 연산이 설명된다. 주사선 yj의 수평 방향의 두 좌표 정점 사이의 각 값의 변화분 DHj(Z, R, G, B)는 주사선 yj(식(3)과 (5)로 구해짐)의 좌단에서의 값 HSj(X, Z, R, G, B)와 주사선 yj(식(14)와 (16)으로 구해짐)의 우단에서의 값 HEj(X, Z, R, G, B)에 따라 다음식으로 구해진다.
-수평 방향의 보정 연산
주사선 yj의 좌단에 근접한 좌표 격자점상의 픽셀값 HJO(Z, R, G, B)는 주사선 yj의 좌단에서의 값 HSj(Z, R, G, B)와 수평 방향의 변화분 DHj(Z, R, G, B)에 따라 다음식으로 구해진다.
Hjo(Z, R, G,B)=HSj(Z, R, G, B)+
(1-HSj(X)-Int(HSj(X))×DHj(Z, R, G, B) (18)
이 식은 수평 방향의 보정 연산을 행하기 위하여 사용된다. 항 Hjo(Z, R, G, B)는 주사선 Yj의 시작점에서의 값이다.
-수평 방향의 DDA 연산
주사선 Yj의 시작점 다음의 좌표 격자점은 수평 방향의 DDA 연산을 반복함으로써 순차적으로 구해진다. 즉, 주사선 Yj의 좌표 격자점에서의 값 Hji+1(Z, R, G, B)는 다음식으로 구해진다.
Hji+1(Z, R, G, B)=Hji(Z, R, G, B)+DHj(Z, R, G, B) (19)
c2. 드로잉 절차
이후, 제6도를 참조하여 본 발명에 의한 쉐이딩 방법의 드로잉 절차에 대해서 설명하기로 한다.
우선, 식(11)에 따라 정점 LS와 정점 LE가 연결되는 좌변 수직 방향의 변화분 LD(X, Z, R, G, B)이 구해진다(단계 1). 한편, 식(12)에 의하면, 정점 RS와 정점 LE가 연결되는 우변 수직 방향의 변화분 DR(X, Z, R, G, B)이 구해진다(단계 2).
다음, 식(13)에 의한 좌변 수직 방향의 보정 연산이 행해지고, 이에 의해 제1주사선 y0의 좌단에서의 값 HS0(X, Z, R, G, B)가 구해진다(단계 3). 한편, 식(14)에 의한 우변 수직 방향의 보정 연산이 행해지며, 이에 따라 제1주사선 y0의 우단에서의 값 HEO(X, Z, R, G, B)가 구해진다(단계 4). 단계 3, 4는 병렬적으로 행해진다.
제1주사선 y0의 좌단에서의 값 HS0(X, Z, R, G, B)와 우단에서의 값 HEO(X, Z, R, G, B)는 단계 3, 4로 구해진 다음, 제1주사선 y0의 수평 방향의 변화분 DH0(Z, R, G, B)는 식(17)에 의해 구해진다(단계 5).
식(18)에 의해 제1주사선 y0의 수평 방향의 보정 연산이 행해지며, 이에 따라 제1주사선 y0의 좌단에 근접한 좌표 격자점의 값 H0(Z, R, G, B)가 구해진다.(단계 6).
주사선 y0의 시작점에서의 값 H0(Z, R, G, B)가 구해진 다음, 주사선 y0의 수평 방향의 변화분 DH0(Z, R, G, B)이 가산되는 DDA 연산이 반복된다(단계 7). 따라서, 시작점 다음의 좌표 격자점의 값 H1(X, Z, R, G, B), H2(X, Z, R, G, B),........등등이 순차적으로 구해진다.
주사선 y0의 좌표 격자점의 값 H0(X, Z, R, G, B), H1(X, Z, R, G, B), H2(X, Z, R, G, B),....등등이 식(15)에 의해 좌변상의 수직 방향의 DDA 연산에 의해서 구해지며, 다음 주사선 y1의 좌단값 HS1(X, Z, R, G, B)이 구해진다(단계8). 한편, 식(16)에 의한 우변상의 수직 방향의 DDA 연산에 의해 다음 주사선 y1의 우단값 HE1(X, Z, R, G, B)이 구해진다(단계9).
주사선 y1의 좌단값 HS1(X, Z, R, G, B)와 우단값 HE1(X, Z, R, G, B)가 구해진 다음, 순서는 단계 5로 복귀된다. 단계 5에서, 제1주사선 y1이 수평 방향의 변화분 DH1(X, Z, R, G, B)가 구해진다(단계 5).
단계 6에서, 식(18)에 의해 다음 주사선의 보정 연산이 행해지며, 이에 따라 제1주사선 y1의 좌표 격자의 시작점에서의 값 H10(X, Z, R, G, B)가 구해진다. 단계 7에서, 식(19)에 의한 수평 방향의 DDA 연산을 반복함으로써 주사선 y1의 좌표 격자의 값 H10(X, Z, R, G, B), H11(X, Z, R, G, B),....등이 순차적으로 구해진다.
주사선 y1의 좌표 격자점의 모든값 H10(X, Z, R, G, B), H11(X, Z, R, G, B), H12(X, Z, R, G, B),......등이 구해진 다음, 식(15)에 의해 좌변 수직 방향의 DDA 연산에 의해, 다음 주사선 y2의 좌단값 HS2(X, Z, R, G, B)가 구해진다(단계 8). 한편, 식(16)에 의한 우변 수직 방향의 DDA 연산에 의해 다음 주사선 y2의 우단값 HE2(X, Z, R, G, B)가 구해진다(단계 9). 다음 순서는 단계 5로 복귀되며, 동일 처리가 반복된다.
c3. 임의의 다각형으로 확장
본 발명의 일실시예에서, 좌변 및 우변의 정점이 동일선상에 있을 때만, 좌변 및 우변의 정점값이 동시에 입력된다. 한 정점값이 입력되면, 다른 정점값은 널로서 취급된다. 이 경우, 이전 DDA 연산은 계속 이용된다. 따라서, 사다리꼴에 대한 연산이 임의 다각형으로 확장될 수 있다.
예를 들어, 제7도에 도시한 바와 같은 볼록 다각형이 주어진다고 가정하자. 주어진 형태는 사다리꼴로 취급된다. 사다리꼴의 변을 고려하고, 좌측 상단 정점, 좌측 하단 정점, 우측 상단 정점 및 우측 하단 정점을 각기 LS, LE, RS 및 RE로 표시하고 정점에 값들을 입력한다.
라인 L1에서, 정점값 A1은 좌측 상단 정점 LS에 입력되고, 정점 A3값은 좌측 하단 정점 LE에 입력되며, 정점 A1값은 우측 상단 정점 RS에 입력되고, 정점 A2의 값은 우측 하단 정점 RE에 입력된다.
라인 L2에서, 우변의 정점 A2가 발견된다. 라인 L2에서, 정점 A2의 값은 우측 상단 정점 RS에 입력되며, 정점 A5 의 값은 우측 하단 정점 RE에 입력된다. 정점 A2와 동일 수평선상에서, 좌변 정점은 없다. 이와 같이, 좌변은 널로서 취급된다.
라인 L3에서, 정점 A3가 발견된다. 라인 L3에서, 정점 A3의 값은 좌측 상단 정점 L3에 입력되고, 정점 A4의 값은 좌측 하단 정점 LE에 입력된다. 정점 A3와 동일 수평선상에서, 우변의 정점이 없으므로, 우변은 널로 취급된다.
라인 L4에서, 좌변의 정점 A4가 발견된다. 라인 L4에서, 정점 A4의 값은 좌측 상단 정점 LS에 입력되고, 정점 A6의 값은 좌측 하단 정점 LE에 입력된다. 정점 A4와 동일 수평선에서, 우변의 정점이 없으므로, 우변은 널로서 취급된다.
라인 L5에서, 우변의 정점 A5가 발견된다. 라인 L5에서, 정점 A5의 값은 우측 상단 정점 RS에 입력되고, 정점 A8의 값은 우측 하단 정점 RE에 입력된다. 정점 A5와 동일 수평선에서, 좌변의 정점이 없으므로, 좌변은 널로서 취급된다.
라인 L6에서, 좌변의 정점 A6가 발견된다. 라인 L6에서, 정점 A6의 값은 좌측 상단 정점 LS에 입력되고, 정점 A7의 값은 좌측 하단 정점 LE에 입력된다. 정점 A6와 동일 수평선에서, 우변의 정점이 없으므로, 우변은 널로서 취급된다.
라인 L7에서, 좌변의 정점 A7이 발견된다. 라인 L7에서, 정점 A7의 값이 좌측 상단 정점 LS에 입력되고, 정점 A8의 값이 좌측 하단 정점 LE에 입력된다. 정점 A7과 동일 수평선에서, 우변의 정점이 없으므로, 우변은 널로서 취급된다.
이와 같이, 좌변 정점 및 우변 정점이 동일 수평선에 있을 때만, 좌변 및 우변의 정점값이 동시에 입력된다. 한 정점값이 입력되면, 다른 정점값은 널로 취급되고, 이전 DDA 연산은 계속 이용된다. 따라서, 사다리꼴에 대한 연산은 메모리 용량을 증가하지 않고 임의의 다각형으로 확장될 수 있다.
또한, 라인 L1과 L2사이의 선에서, 정점 A1과 A3의 값을 이용하여 좌변 수직 방향의 변화분이 구해지고, 좌변 수직 방향의 보정 연산이 행해진다. 또한, 정점 A1과 A2의 값을 이용하여, 우변 수직 방향의 변화분이 구해지고 우변 수직 방향의 보정 연산이 행해진다. 다음, 각 주사선의 좌단 및 우단에서의 값이 구해진다. 이 결과 값을 이용하여 수평 방향의 변화분이 구해진다. 다음, 수평 방향의 보정 연산이 행해지고 시작점의 값이 구해진다. 수평 방향의 DDA 연산에 의해서 라인 L1과 L2사이 주사선의 좌표 격자점상의 픽셀값이 구해진다.
라인 L2와 L3사이의 선 상에서, 좌변에서, 좌변의 수직 방향의 이전 변화분이 계속해서 사용된다. 좌변 수직 방향의 DDA 연산에 의해서, 주사선의 좌단값이 구해진다. 우변에서, 정점 A2와 A5의 값을 이용하여 우변의 변화분이 구해지고, 우변의 보정 연산이 행해진다. 다음, 주사선의 우단값이 구해진다. 이에 의해, 수평 방향의 변화분이 구해진다. 그후, 수평 방향의 보정 연산이 행해지고, 시작점에서의 값이 구해진다. 수평 방향의 DDA 연산에 의해서 라인 L2와 L3 사이 주사선의 좌표 격자점의 픽셀값이 구해진다.
마찬가지로, 라인 L3와 L4 사이의 라인상에서, 좌변에서, 정점 A3와 A4의 값을 이용하여 좌변 수직 방향의 변화분이 구해진다. 우변에서 이전 변화분이 계속 사용된다.
라인 L4와 L5 사이의 라인상에서, 좌변에서, 정점 A4와 A6의 값을 이용하여, 좌변 수직 방향의 변화분이 구해진다. 우변에서, 이전 변화분이 계속 사용된다.
라인 L5와 L6사이의 라인상에서, 좌변에서, 이전 변화분이 계속 사용된다. 우변에서, 정점 A5와 A8의 값을 이용하여, 우변 수직 방향의 변화분이 구해진다.
라인 L6와 L7 사이의 라인에서, 좌변에서, 정점 A6과 A7의 값을 이용하여, 좌변 수직 방향의 변화분이 구해진다. 우변에서, 이전 변화분이 계속 사용된다.
라인 L7과 L8 사이의 라인상에서, 좌변에서, 정점 A7과 A8의 값을 이용하여, 좌변 수직 방향의 변화분이 구해진다. 우변에서 이전 변화분이 계속 사용된다.
전술한 방식으로 임의 다각형을 처리함으로써, 보정 연산이 직선 부분보다는 정점에 대해서 행해진다. 따라서, 도형의 연속성이 개선된다. 즉, 곡면이 다각형으로 근사화될 때, 제8도에 도시한 바와 같이 도형(45)과 도형(46)이 발생한다. 소정의 다각형을 이용하여 도형을 처리하기 위해서는 도형(46)을 도형(46A) 및 도형 (46B)로 분할하는 것이 필요하다. 이때 도형(46A), 도형(46B) 및 도형(45)의 연결부(47)에서 연산 오차가 발생한다.
상기와 같이, 임의 다각형이 처리될 때, 각 도형의 직선 부분과 연결부 사이에서는 간격이 생기지 않는다. 그 이유는, 임의의 정점이 없는 부분은 널로 취급되고, 이전 DDA 연산이 계속 사용되기 때문이다.
c4. 큰 연산 오차가 발생하는 경우의 처리
곡면을 근사화하여 구한 사다리꼴의 수직 방향의 길이가 1이하인 경우에 있어서, 수직 방향의 변화분이 구해질 때, 0에 가까운 값의 제수에 의해 나눗셈이 행해진다. 따라서, 제산기가 오버플로우되는 가능성이 높다. 도형이 오버플로우된 값을 사용하여 표시될 때, 도형은 무질서하게 된다.
이를 방지하기 위해서, 수직 방향의 길이가 0에 가까운 도형은 무시하는 것이 가능하다.
그러나, 수직 방향의 길이가 0에 가까운 도형이 무시될 때, 도형의 연속성에 따른 문제점을 고려하는 것이 필요하다.
본 발명의 일실시예에서, 수직 방향의 길이가 1보다 작은 사다리꼴이 처리되는 경우, 제산기의 오버플로우를 초래하는 길이가 긴 변은 시작점이 이전과 동일한 수직변으로 대체된다. 따라서, 제산기가 오버플로우되는 것을 방지할 수가 있다. 또한, 도형의 연속성이 개선된다.
즉, 제9도에 도시한 바와 같이, 수직 방향의 길이가 1 또는 그 이하인 사다리꼴이 생긴다고 가정하자. 이 도형은 좌표 격자점에 있기 때문에, 도형이 표시되지 않을 때, 도형의 연속성과 관련된 문제점이 발생할 것이다. 이 도형에 대해, 좌측 상단 정점 LS1이 좌측 하단 정점 LE1에 연결되는 좌변에서의 변화분을 구할 때, 좌변은 거의 수평이며, 좌변의 길이는 수직 방향의 길이와 비교하여 매우 길기 때문에, 제산기가 오버플로우될 가능성이 있다.
이를 방지하기 위하여, 제10도에 도시한 바와 같이, 좌변 라인(LS1내지 LE1)은 이전과 동일한 시작점 LS1으로 시작하는 수직선(LS1 내지 LE2)으로 대체되며, 이에 따라, 도형은 사다리꼴(48B)로 처리된다. 거의 수평인 변(LS2 내지 LE1)이 수직변(LS1 내지 LE2)으로 대체 될 때, 변의 길이는 짧아진다. 따라서, 좌변의 변화분을 구하려고 할 때, 제산기는 오버플로우되지 않을 것이다.
이때, 제10도에 도시한 바와 같아. 사다리꼴(48A)에 인접한 도형(49A)의 우변은 이전과 동일한 RS3로 시작하는 수직변(RS3 내지 RE4)으로 대체되며, 이에 따라 도형은 사다리꼴(49B)로 처리된다.
사다리꼴(48B)의 좌변(LS1 내지 LE2)은 사다리꼴(49B)의 우변(RS3 내지 RE4)과 일치하기 때문에, 도형의 연속성에 관한 문제가 발생하지 않는다.
d.쉐이딩 장치
d1.쉐이딩 장치의 구성
제11도는 전술한 방법으로 각 좌표 격자점의 픽셀의 휘도값 R, G, B와 깊이값 Z를 구하기 위한 하드웨어 구성을 개략 도시한다. 제11도에서, 설명을 간략화하기 위해, 각 값(Z, R, G, B)은 단일 하드웨어 유닛으로 처리된다. 실제로, 각 값을 구하기 위한 몇 개의 하드웨어 유닛이 제공되며, 이 유닛은 병렬로 동작된다.
제11도에서, 좌측 상단 정점값 LS(X, Y, Z, R, G, B)는 입력 단자(11)에 입력되며, 좌측 하단 정점값 LE(X, Y, Z, R, G, B)는 입력 단자(12)에 입력된다. 우측 상단 정점값 RS(X, Y, Z, R, G, B)는 입력 단자(13)에 입력되며, 우측 하단 정점값 RE(X, Y,, Z, R, G, B)는 입력 단자(14)에 입력된다.
입력 단자(11)로부터의 값이 멀티플렉서(15)의 입력 단자(a)에 공급된다. 입력 단자(13)으로부터의 값은 멀티플렉서(15)의 입력 단자(b)에 공급된다.
입력 단자(12)로부터의 값은 멀티플렉서(16)의 입력 단자(a)에 공급된다. 입력 단자(14)로부터의 값은 멀티플렉서(16)의 입력 단자(b)에 공급된다.
멀티플렉서(15)에서, 입력 단자(11)로부터의 값 또는 입력 단자(13)로부터의 값이 선택된다. 멀티플렉서(16)에서, 입력 단자(12)로부터의 값 또는 입력 단자(14)로부터의 값이 선택된다.
멀티플렉서(15)와 멀티플렉서(16)의 출력은 감산기(17)에 공급된다.
감산기(17)의 출력은 멀티플렉서(18)의 입력 단자(a)에 공급된다. 감산기(22)의 출력은 멀티플렉서(18)의 입력 단자(b)에 공급된다.
멀티플렉서(18)의 출력은 제산기(19)에 공급된다. 제산기(19)의 출력은 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)와 우변 보정 연산 기능이 있는 DDA 연산 회로(21)에 공급된다. 또한, 제산기(19)의 출력은 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 공급된다.
좌변 보정 연산 기능이 있는 DDA 연산 회로(20)와 우변 보정 연산 기능이 있는 DDA 연산 회로(21)의 출력은 감산기(22)에 공급된다. 감산기(22)의 출력은 멀티플렉서(18)의 입력 단자(b)에 공급된다.
수평 보정 연산 기능이 있는 DDA 연산 회로(23)의 출력은 출력 단자(24)에서 출력된다.
우선, 멀티플렉서(15)가 위치(a)에 설정되며, 입력 단자(11)로부터의 좌측 상단 정점값 LS(X, Y, Z, R, G, B)는 감산기(17)에 주어진다. 한편, 멀티플렉서(16)는 위치(a)에 설정되며, 좌측 하단 정점값 LE(X, Y, Z, R, G, B)이 감산기(17)에 주어진다.
감산기(17)에 의해, 좌측 하단 정점값은 좌측 상단 정점값에서 감산되고, 감산 결과값은 멀티플렉서(18)의 입력 단자(a)에 공급된다.
멀티플렉서(18)는 위치(a)에 설정되며, 감산의 결과값은 제산기(19)에 공급된다.
제산기(19)에 의해, 좌변 수직 방향의 변화분이 식(11)에 의해서 구해진다. 좌변 수직 방향의 변화분은 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)에서 설정된다.
좌변 수직 방향의 변화분은 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)에 설정된 다음에, 멀티플렉서(15)는 위치(b)로 설정되고, 다음에 입력 단자(13)로부터의 우측 상단 정점값 RS(X, Y, Z, R, G, B)이 감산기(17)에 주어진다. 또한, 멀티플렉서(16)는 위치(b)로 설정되고, 입력 단자(14)로부터의 우측 하단 정점값 RE(X, Y, Z, R, G, B)는 감산기(17)에 주어진다.
감산기(17)에 의해, 우측 하단 정점값은 우측 상단 정점값에서 감산되고, 감산 결과값은 멀티플렉서(18)의 입력 단자(a)에 공급된다.
멀티플렉서(18)는 위치(a)에 설정되며, 감산의 결과값은 제산기(19)에 공급된다.
제산기(19)에 의해, 좌변 수직 방향의 변화분이 식(12)에 의해서 구해진다. 우변 수직 방향의 변화분은 우변 보정 연산 기능이 있는 DDA 연산 회로(21)에서 설정된다.
좌변 수직 방향의 변화분은 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)에 설정되고, 우변 수직 방향의 변화분은 우변 보정 연산 기능이 있는 DDA 연산 회로(21)에 설정된다. 이후, 좌변 보정 연산 기능이 있는 DDA 연산 회로(20) 및 우변 보정 연산 기능이 있는 DDA 연산 회로(21)에서, 좌변 수직 방향의 보정 연산과 우변 수직 방향의 보정 연산이 제각기 행해진다.
따라서, 주사선의 좌단값 및 우단값이 구해진다.
주사선의 좌단값과 우단값은 감산기(22)에 공급된다. 감산기(22)에 의해, 주사선의 우단값은 주사선의 좌단값에서 감산된다.
좌변 보정 연산 기능이 있는 DDA 연산 회로(20) 및 우변 보정 연산 기능이 있는 DDA 연산 회로(21)에 의해서, 좌변 수직 방향의 보정 연산과 우변 수직 방향의 보정 연산이 제각기 행해진다. 이후, 멀티플렉서(18)는 위치(b)로 스위칭된다.
따라서, 주사선의 우단값이 주사선의 좌단 값에서 감산되는 감산기(22)에 의해 구해진 감산의 결과값은 멀티플렉서(18)를 거쳐 제산기(19)에 공급된다.
제산기(19)에 의해, 수평 방향의 변화분이 식(17)에 의해서 구해진다. 수평 방향의 변화분은 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 공급된다.
수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 의해, 수평 방향의 보정 연산이 행해지며, 주사선의 시작점에서의 좌표 격자점값이 구해진다. 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 의해, 시작점값에 대한 DDA 연산이 반복되며, 주사선상의 좌표 격자점 값이 순차적으로 구해진다. 그 값은 출력 단자(24)로부터 출력된다.
한 주사선의 좌표 격자점의 모든 값이 구해진 후, 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)와 우변 보정 연산 기능이 있는 DDA 연산 회로에 의해, 좌변 수직 방향의 DDA 연산과 우변 수직 방향의 DDA 연산이 행해지고, 다음 주사선의 우단값과 좌단값이 구해진다.
다음 주사선의 좌단값 및 우단값은 감산기(22)에 공급된다. 감산기(22)에 의해, 다음 주사선의 우단값이 다음 주사선의 좌단값에서 감산된다.
다음 주사선의 우단값이 다음 주사선의 좌단값에서 감산되는 감산기(22)에 의해 구해진 감산의 결과값은 멀티플렉서(18)를 거쳐 제산기(19)에 공급된다.
제산기(19)에 의해, 다음 주사선의 수평 방향의 변화분이 구해진다. 수평 방향의 변화분은 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 공급된다.
수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 의해, 수평 방향의 보정 연산이 행해지며, 다음 주사선의 시작점에서의 좌표 격자점 값이 구해진다. 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 의해, 시작점에 대한 DDA 연산이 반복되고, 다음에 주사선상의 좌표 격자점 값이 순차적으로 구해진다. 그 결과값은 출력 단자(24)에서 출력된다.
동일 동작이 반복된다.
d2. 연산 정확도와 비트수
제11도에 도시된 하드웨어가 병렬적으로 각 값을 연산하기 위하여 각 값(깊이값 Z와 휘도값 R, G, B)에 대해 별도로 제공될 지라도, 회로 규모는 증가되지 않는다. 각 값을 연산하기 위해 필요한 소수부의 비트수가 결정되므로, 고정 소수점 연산으로 각 값이 연산된다.
이 동작은 다음에 설명된다. 우선, 수평값 X와 수직값 Y의 장치 좌표의 최대값과 깊이값 Z의 소수부의 비트수 사이의 관계를 살펴본다.
깊이값 Z는 DDA 연산을 반복하여 구한다. 따라서, 깊이값 Z의 오차는 DDA 연산이 스크린의 한단에서 다른단으로 반복될 때 최대화된다. 최대 오차는 ±1 또는 그 이하이어야 한다.
스크린의 한단에서 다른단까지의 장치 좌표의 길이를 n비트라고 가정한다.
이때, 스크린의 한단에서 다른 단까지 DDA 연산을 반복하여 깊이값 Z를 얻기 위하여, DDA 연산이 2n회 반복된다. 따라서, 1회의 DDA 연산 오차는 e이고, 최대 오차값은 2n×ε이 된다. 깊이값 Z의 오차를 ±1 또는 그 이하로 감소하기 위하여, DDA 연산 1회당 오차는 (ε<1/2n)이 되어야 한다. 즉, 깊이값 Z는 1/2n의 정확도를 갖는다. 깊이값 Z의 소수부의 비트수는 최소한 n비트이어야 한다.
따라서, 깊이값 Z, 즉 ZFB의 비트수 및 수평값 X와 수직값 Y의 장치 좌표의 최대값 사이의 관계는 다음과 같다.
ZFB=Max(XD, YD)
여기서,
XD : 수평값 X의 장치 좌표의 최대값(정수부의 비트수)
YD : 수직값 Y의 장치 좌표의 최대값(정수부의 비트수)
다음에는, 깊이값 Z의 최대값과 수평값 X와 수직값 Y의 소수부의 비트수 사이의 관계에 대해서 살펴보기로 한다.
식(13), (14) 및 (18)로 표현되는 바와 같이, 보정 연산시, 수직값 Y의 소수부(LS(Y)-Int(LS(Y)) 및 (RS(Y)-Int(RS(Y))와, 수평값 X의 소수부 (HSj(X)-Int(HS(X))와, 깊이값 Z의 변화분(DL(Z)), (DHj(Z))와의 곱이 행해진다. 오차를 ±이하로 하기 위하여 수평값 X의 소수부에 대한 깊이값 Z의 변화분의 유효 비트수와 수직값 Y의 소수부에 대한 깊이값 Z의 변화분의 유효 비트수에 따른 비트수를 제공하는 것이 필요하다.
깊이값 Z의 변화분이 최대가 될 때, 정수부의 모든 비트는 유효 비트가 된다. 따라서, 수평값 X, XFD의 소수부의 비트수와 수직값 Y, YFD의 소수부의 비트수는 깊이값 Z의 최대값에 따른 비트수가 되어야 한다.
즉, X, XFD의 소수부의 비트수와, Y, YFD의 소수부의 비트수는 다음과 같디.
XFD=ZD
YFD=ZD
여기서, ZD : 깊이값 Z의 최대값이다.
깊이값 Z에 필요한 비트수는 전술되었다. 휘도값 R, G, B를 연산하는데 필요한 소수부의 비트수는 마찬가지로 구해질 수 있다. 따라서, 각 값을 연산하는데 필요한 소수부의 비트수가 결정된다. 그러므로, 부동 소수점 연산에서 연산을 행할 필요가 없다. 부동 소수점 연산이 실행되지 않으면, 각 값을 연산하기 위한 하드웨어 유닛이 독립적으로 제공될지라도, 회로 규모는 커지지 않는다.
e. 병렬 처리 상태 전이 회로
e1. 기본 회로의 설명
제11도에 도시한 하드웨어는 제17도에 도시한 병렬 처리 상태 전이 회로에 의해 제어된다.
병렬 처리 상태 전이 회로는 대기(wait)회로, 점프(jump)회로, 조인(join)회로 및 지연(delay)회로인 4가지 형태의 회로로 구성된다. 기본 회로는 다음에 설명된다.
-대기 회로
대기 회로는 두 입력 A와 B를 갖는다. 대기 회로가 A입력 펄스를 수신한 후, B 입력 펄스를 수신할 때까지 펄스의 출력을 중단한다. 특정 처리를 개시하기 위한 트리거 펄스가 출력될 때, 대기 회로는 이전 처리가 완료될 때가지 순서를 다음 처리로 진행하지 않는다.
-대기 회로의 구성
대기 회로는 제13도에 도시한 바와 같이 구성된다. 제13도에서, (51)과 (52)는 입력 단자이다. 입력 단자(51)로부터의 트리거 펄스 T1은 플립플롭(53)과 NOR게이트(54)의 한 입력 단자에 공급된다. 입력 단자(52)로부터의 트리거 펄스 T2는 플립플롭(55)에 공급된다. 클록 CLK는 플립플롭(53, 55)의 클록 입력 단자에 공급된다. 플립플롭(53, 55)의 D 입력 단자에 트리거 펄스가 주어진 후, 클록 CLK이 하이일 때, 플립플롭(53, 55)은 세트되며, 그 출력은 하이가 된다. 로우 레벨 리셋 신호가 각 리셋 단자에 주어질 때까지, 그 출력은 하이를 유지한다.
(56)은 리셋 입력 단자이다. 리셋 입력 단자(56)로부터의 리셋 신호 RST는 OR 게이트(57)의 한 입력 단자에 공급된다. OR 게이트(57)의 출력은 NOR 게이트(54)의 다른 입력 단자와 인버터(58)에 공급된다. NOR 게이트(54)의 출력은 플립플롭(55)의 리셋 단자에 공급된다. 인버터(58)의 출력은 플립플롭(53)의 리셋 단자 및 NAND 게이트(59)의 입력 단자에 공급된다.
플립플롭(53)의 출력은 NAND 게이트(59)의 입력 단자에 공급된다. 플립플롭(55)의 출력은 NAND 게이트(59)의 입력 단자에 공급된다.
NAND 게이트(59)의 출력은 D 플립플롭(60)의 입력 단자에 공급된다. 클록 CLK는 D 플립플롭(60)의 클록 입력 단자에 공급된다. D플립플롭(60)의 출력은 인버터(61)를 통해 출력 단자(62)로부터 출력된다. D 플립플롭(60)의 반전 출력은 OR 게이트(57)의 다른 입력 단자에 공급된다.
하이인 리셋 신호 RST가 리셋 입력 단자(56)에 주어지면, OR 게이트(57)의 출력은 하이가 되고, 인버터(58)의 출력은 로우가 되며, NOR 게이트(54)의 출력은 로우가 된다. 이와 같이, 플립플롭(53, 55)이 리셋된다.
인버터(58)의 출력이 로우일 때, NAND 게이트(59)의 출력은 하이이고, D 플립플롭(60)의 출력은 하이를 유지한다. 이와 같이, D 플립플롭(60)의 출력이 인버터(61)에 의해 반전된 출력은 로우이다.
제14도의 (b)에 도시한 바와 같이, 시점 t1에서 트리거 펄스 T1가 입력 단자(51)에 공급된다고 가정하자. 제14도의 (d)에 도시한 바와 같이, 시점 t2에서 클록 CLK(제14도의 (a))가 하이일 때, 트리거 펄스 T1은 플립플롭(53)에 의해서 수신되며, 플립플롭(53)의 출력 Q1은 하이가 된다.
시점 t3에서, 트리거 펄스 T1은 제14도의 (e)에 도시한 바와 같이 입력 단자(52)에 공급되며, 시점 t4에서 클록 CLK(제14도의 (a))는 하이이며, 트리거 펄스 T2는 플립플롭(55)에 의해 수신되며, 이에 따라 플립플롭(55)의 출력 Q2는 하이가 된다.
이때, 제14도의 (d)에 도시한 바와 같이, 플립플롭(53)의 출력은 하이이다. 또한, D 플립플롭(60)이 리셋될 때, 그 입력은 하이이다. 이와 같이, D 플립플롭(60)의 반전 출력은 로우가 되며, OR 게이트(57)의 출력은 로우이며, 인버터(58)의 출력은 하이가 된다. 이와 같이, 트리거 펄스 T2가 주어졌을 때, 플립플롭(55)의 출력 Q2는 하이가 되고, NAND 게이트(59)의 출력은 로우가 된다.
NAND 게이트(59)의 출력이 로우일 때, 클록 CLK가 하이인 시점 t5에서 D 플립플롭(60)의 출력은 로우가 된다. 이와 같이, 제14도의 (f)에 도시한 바와 같이, 출력 단자(62)의 출력 P는 하이가 된다.
D 플립플롭(60)의 출력이 로우일 때, D 플립플롭(60)의 반전 출력은 하이이고 OR 게이트(57)의 출력은 리셋된다.
OR 게이트(57)의 출력이 하이이면, 인버터(58)의 출력은 로우로 되고, NOR 게이트(54)의 출력은 로우가 된다. 이와 같이 제14도의 (d)에 도시한 바와 같이, 플립플롭(53, 55)이 리셋된다.
이처럼, 플립플롭(53, 55)의 출력은 로우가 되고, 인버터(58)의 출력은 로우가 된다. 따라서, NAND 게이트(59)의 출력이 하이가 된다. NAND 게이트(59)의 출력이 하이일 때, 클록 CLK가 하이인 시점 t6에서, D 플립플롭(60)의 출력은 하이가 된다. 이와 같이, 시점 t6에서 출력 펄스 P는 로우가 된다.
제14도의 (f)에 도시한 바와 같이, 대기 회로에서 트리거 펄스 T1(제14도의 (b))과 트리거 펄스 T2(제14도의 (c))가 순서적으로 공급된 후, 펄스 P는 출력 단자(62)에서 출력된다.
-점프 회로
점프 회로는 두 입력 A와 S를 갖는다. S입력 레벨에 따라, A 입력 펄스는 두 출력 01과 02 중 하나에 선택적으로 출력된다. 점프 회로는 외부 상태에 따라 현재 제어 상태를 변경하기 위하여 사용된다.
-점프 회로의 구성
점프 회로는 제15도에 도시한 바와 같은 구성을 가진다. 제15도에서, 트리거 펄스 T11은 입력 단자(71)에 공급된다. 트리거 펄스 T11은 AND 게이트(73)의 한 입력 단자와 AND게이트(73)의 한 입력 단자에 공급된다.
입력 단자(72)에 선택 펄스 S11이 공급된다. 선택 펄스 S11은 인버터(75)를 거쳐 AND게이트(73)의 다른 입력 단자와 AND게이트의 다른 입력 단자에 공급된다. AND 게이트(73)의 출력은 출력 단자(76)에서 출력된다. AND 게이트(74)의 출력은 출력 단자(77)에서 출력된다.
입력 단자(72)로부터의 선택 펄스 S11이 하이이고, 트리거 펄스 T11이 입력 단자(71)에서 공급될 때 트리거 펄스 T11은 AND 게이트(73)를 거쳐 출력 단자(76)에서 출력된다.
입력 단자(72)로부터의 선택 펄스 S11이 로우이고, 트리거 펄스 T11이 입력 단자(71)에서 공급될 때, 트리거 펄스 T11은 AND 게이트(74)를 거쳐 출력 단자(77)에서 출력된다.
-조인 회로(Join circuit)
조인 회로는 두 입력 I1과 I2를 갖는다. I1 또는 I2에 펄스가 입력될 때, 조인 회로는 펄스를 출력한다. 조인 회로를 이용하여 수개의 제어 시스템으로부터 하나의 제어 시스템으로 신호를 모은다.
-조인 회로의 구성
조인 회로는 제16도에 도시한 바와 같이 구성된다. 제16도에서, 트리거 펄스 T21은 입력 단자(81)에 공급된다. 입력 단자(81)로부터의 트리거 펄스 T21은 OR 게이트(83)의 한 입력 단자에 공급된다. 입력 단자(82)에 트리거 펄스 T22가 공급된다. 입력 단자(82)로부터의 트리거 펄스 T22는 OR 게이트(83)의 다른 입력 단자에 공급된다. OR 게이트(83)의 출력은 출력 단자(84)에서 출력된다.
입력 단자(81)에 트리거 펄스 T21가 공급될 때, OR 게이트(83)를 거쳐 출력 단자(84)에서 트리거 펄스 T21이 출력된다.
입력 단자(82)에 트리거 펄스 T22가 공급될 때 OR 게이트(83)를 거쳐 출력 단자(84)에서 트리거 펄스 T22가 출력된다.
-지연 회로
지연 회로는 입력을 일정 시간 동안 지연한다. 지연 회로는 일정 시간의 지연으로 처리를 완료하기 위하여 사용된다.
-지연 회로의 구성
지연 회로는 제17도에 도시한 바와 같이 구성된다. 제17도에서, 입력 단자(91)에 트리거 펄스 T31가 공급된다. 입력 단자(91)로부터의 트리거 펄스 T31는 플립플롭(92)에 공급된다. 플립플롭(92)의 출력은 출력 단자(92)에서 출력된다.
입력 단자(91)로부터의 트리거 펄스 T31는 플립플롭(92)을 거쳐 지연되어 출력 단자(93)에서 출력된다.
e2. 쉐이딩 처리를 위한 병렬 처리 상태 전이 회로
제12도는 제11도에 도시한 하드웨어를 제어하기 위한 병렬 처리 상태 전이 회로의 일례이다. 병렬 처리 상태 전이 회로에서, 전술의 4개의 기본 회로가 사용된다. 이후, 제12도, 제11도를 참조하여 본 발명의 일실시예의 연산 제어에 대해서 설명하기로 한다.
제12도에서, 입력 단자(101)에 외부 트리거 펄스 EXTRG가 주어진다. 병렬 처리 상태 전이 회로를 구성하는 각 기본 회로에 외부 트리거 펄스 EXTRG가 전달된다. 이때, 하드웨어의 각 부분을 제어하는 트리거 신호가 출력된다.
즉, 입력 단자(101)로부터의 외부 트리거 펄스 EXTRG가 소정 시간의 지연을 갖는 지연 회로(102)에 공급된 후, 지연 회로(102)로부터 트리거 신호가 출력된다. 이 트리거 신호는 선택 신호 SEL ABC이다. 선택 신호 SEL ABC에 의해서 멀티플렉서(15, 16)(제11도)는 위치(a)로 스위칭되며, 멀티플렉서(18)는 위치(a)로 전환된다. 좌측 하단 정점의 값은 감산기(17)에 의해 좌측 상단 정점에서 감산되며, 그 결과 값은 제산기(19)에 설정된다.
지연 회로(102)로부터의 트리거 펄스는 점프 회로(103)의 A 입력 단자에 공급된다. 널 판정 신호 Null는 점프 회로(103)의 S 입력 단자에 공급된다. 좌변에 정점이 있을때(제7도를 참조), 트리거 펄스는 점프 회로(103)의 01 출력 단자에서 출력된다. 이 트리거 펄스가 제산 트리거 신호 DIV TRG이다. 제11도에 도시한 제산기(19)는 제산 트리거 신호 DIV TRG에 의해서 나눗셈을 시작한다. 따라서, 좌변 수직 방향의 변화분이 구해진다. 좌변에 정점이 없으면, 그에 따라 좌변 정점이 널이며, 트리거 펄스는 점프 회로(103)의 02 출력 단자에서 출력되며, 지연 회로(105)에 공급된다.
점프 회로(103)의 01 출력 단자로부터의 트리거 펄스는 대기 회로(104)의 A 입력 단자에 공급된다. 제산 종료 신호 DIV END는 대기 회로(104)의 B 입력 단자에 공급된다. 제산기(19)에 의해 제산이 완료되고, 좌변 수직 방향의 변화분이 구해질 때, 제산기(19)는 제산 종료 신호 DIV END를 발생한다. 제산 종료 신호 DIV END가 발생할 때, 대기 회로(104)는 트리거 펄스를 출력한다. 이 트리거 펄스가 DDA 세트 신호 DDA SET A이다. 제산기(19)로 구한 좌변 수직 방향의 변화분은 DDA 세트 신호 DDA SET A에 의해서 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)에 설정된다.
대기 회로(104)에서 출력되는 트리거 펄스는 조인 회로(106)의 I1 입력 단자에 공급된다. 지연 회로(105)에서 출력되는 트리거 펄스는 조인 회로(106)의 I2 입력 단자에 공급된다. 대기 회로(104)로부터의 트리거 펄스가 조인 회로(106)의 I1 입력 단자에 주어지거나 또는 지연 회로(105)로부터의 트리거 펄스가 조인 회로(106)의 I2 입력 단자에 주어질 때, 트리거 펄스는 조인 회로(106)에서 출력된다. 이 트리거 펄스가 선택 신호 SEL AB이다. 멀티플렉서(15, 16)는 선택 신호 SEL AB에 의해 위치(b)로 스위칭된다. 이와 같이, 우측 하단 정점의 값은 우측 상단 정점의 값에서 감산되고, 그 결과 값은 제산기(19)에 설정된다.
조인 회로(106)로부터의 트리거 신호는 점프 회로(107)의 A 입력 단자에 공급된다. 널판정 신호 Null는 점프 회로(107)의 S 입력 단자에 공급된다. 우변에 정점이 있을 때, 트리거 펄스는 점프 회로(107)의 01 출력 단자에서 출력된다. 이 트리거 펄스는 제산 트리거 신호 DIV TRG이다. 제산기(19)는 제산 트리거 신호 DIV TRG에 의해 나눗셈을 시작한다. 이처럼 우변 수직 방향의 변화분이 구해진다. 우변 정점이 없고 이에 따라 우변 정점이 널일 때, 트리거 펄스는 점프 회로(107)의 02 출력 단자에서 출력된다. 이 트리거 펄스는 지연 회로(109)에 공급된다.
점프 회로(107)의 01 출력 단자로부터의 트리거 펄스는 대기 회로(108)의 A 입력 단자에 공급된다. 점프 회로(107)의 B 입력 단자에 제산 종료 신호 DIV END가 공급된다. 제산기(19)에 의해 나눗셈이 완료되고, 우변 수직 방향의 변화분이 구해질 때, 제산기(19)는 제산 종료 신호 DIV END를 발생한다. 제산 종료 신호 DIV END가 발생할 때, 대기 회로(108)은 트리거 펄스를 출력한다. 트리거 펄스는 DDA 세트 신호 DDA SET B 이다. 제산기에서 구해지는 우변 수직 방향의 변화분은 DDA 세트 신호 DDA SET B에 의해 우변 보정 연산 가능이 있는 DDA 연산 회로(21)에 설정된다.
조인 회로(110)의 I1 입력 단자에는 대기 회로(108)에서 출력되는 트리거 펄스가 공급된다. 조인 회로(110)의 I2 입력 단자에는 지연 회로(109)에서 출력되는 트리거 펄스가 공급된다. 대기 회로(108)로부터의 트리거 펄스가 조인 회로(110)의 I1 입력 단자에 주어지거나 또는 지연 회로(109)로부터의 트리거 펄스가 조인 회로(110)의 I2 입력 단자에 주어질 때, 트리거 펄스는 조인 회로(110)에서 출력된다. 이 트리거 펄스가 DDA 보정 연산 트리거 신호 DDA TRG AB이다. 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)와 우변 보정 연산 기능이 있는 DDA 연산 회로(21)는 DDA 보정 연산 트리거 신호 DDA TRG AB에 의해 트리거되고, 좌변 보정 연산과 우변 보정 연산이 개시된다. 이 보정 연산에 의해, 주사선의 좌단 및 우단값이 구해진다.
대기 회로(111)의 A 입력 단자에는 조인 회로(110)에서 출력되는 트리거 펄스가 공급된다. 대기 회로(111)의 B 입력 단자에는 보정 연산 종료 신호 AJST END가 공급된다. 좌변 보정 연산 및 우변 보정 연산이 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)와 우변 보정 연산 기능이 있는 DDA 연산 회로(21)에 의해서 제각기 완료될 때, 보정 연산 종료 신호 AJST END를 발생한다. 보정 연산 종료 신호 AJST END가 발생할 때, 대기 회로(11)는 트리거 펄스를 출력한다.
조인 회로(112)의 I1 입력 단자에 대기 회로(11)에서 출력되는 트리거 펄스가 공급된다. 조인 회로(112)의 I2 입력 단자에 대기 회로(117)에서 출력되는 트리거 펄스가 공급된다. 대기 회로(111)로부터의 트리거 펄스가 조인 회로(112)의 I1 입력 단자에 주어지거나 점프 회로(107)로부터의 트리거 펄스가 조인 회로(12)의 I2 입력 단자에 주어질 때, 트리거 펄스는 조인 회로(112)에서 출력된다. 이 트리거 펄스가 선택 신호 SEL C 이다. 제1도에 도시한 멀티플렉서(18)는 선택 신호 SEL C에 의해 위치(b)로 스위칭된다.
멀티플렉서(18)가 위치b로 스위치될 때, 감산기(22)로 구한 수평 방향의 변화분은 제산기(19)에 설정된다.
지연 회로(113)에는 조인 회로(112)에서 출력되는 트리거 펄스가 공급된다.
지연 회로(113)에 의해 트리거 펄스는 소정 시간 동안 지연된다. 그후, 지연 회로(113)는 트리거 펄스를 출력한다. 이 트리거 펄스가 제산 트리거 신호 DIV TRG이다. 제산기(19)는 제산기 트리거 신호 DIV TRG에 의해 제산을 개시한다.
대기 회로(114)의 A 입력 단자에는 지연 회로(113)에서 출력되는 트리거 펄스가 공급된다. 제산 종료 신호 DIV END는 대기 회로(114)의 B 입력 단자에 공급된다. 제산기(19)에 의해 제산이 완료되고, 수평 방향의 변화분이 구해질 때, 제산기(19)는 제산 종료 신호 DIV END를 발생하나. 제산 종료 신호 DIV END가 발생할 때, 대기 회로(114)는 트리거 펄스를 출력한다. 이 트리거 펄스가 DDA 세트 신호 DDA SET H이다. 제산기(19)로 구한 수평 방향의 변화분은 DDA 세트 신호 DDA SET H에 의해 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 설정된다.
지연 회로(115)에는 대기 회로(114)에서 출력되는 트리거 펄스가 공급된다. 이 트리거 펄스는 소정 시간동안 지연 회로(115)에 의해서 지연된다. 소정 시간이 경과된 후, 지연 회로(115)는 트리거 펄스를 출력한다. 이 트리거 펄스가 DDA 보정 연산 트리거 신호 DDA TRG H이다. 수평 보정 연산 기능이 있는 DDA 연산 회로(23)로 인해 DDA 보정 연산 트리거 신호 DDA TRG H는 트리거되며, 수평 보정 연산이 개시된다. DDA 보정 연산에 의해 주사선의 좌단에 좌표 격자점값이 구해진다.
대기 회로(116)의 A 입력 단자에 지연 회로(115)에서 출력되는 트리거 펄스가 공급된다. 보정 연산 종료 신호 AJST END는 대기 회로(116)의 B 입력 단자에 공급된다. 수평 보정 연산 기능이 있는 DDA 연산 회로(23)에 의해 수평 보정 연산이 완료될 때, 수평 보정 연산 기능이 DDA 연산 회로(23)는 보정 연산 종료 신호 AJST END를 발생한다. 보정 연산 종료 신호 AJST END가 발생할 때, 대기 회로(116)는 트리거 펄스를 출력한다. 이 트리거 펄스가 DDA 연산 트리거 신호 DDA H INC이다. 수평 보정 연산 기능이 있는 DDA 연산 회로(23)는 DDA 연산 트리거 신호 DDA H INC에 의해서 DDA 연산을 반복한다. 이처럼, 주사선의 각 좌표 격자점의 값이 구해진다.
대기 회로(116)에서 출력된 트리거 신호는 대기 회로의 A 입력 단자에 공급된다. 대기 회로(117)의 B 입력 단자에는 라인의 종단을 나타내는 신호 END OF LINE가 공급된다. 라인의 최종의 좌표 격자점 값이 구해질 때, 라인의 종단을 표시하는 신호 END OF LINE가 발생한다. 신호 END OF LINE가 발생할 때, 대기 회로(117)은 트리거 펄스를 출력한다. 이 트리거 펄스가 DDA 연산 트리거 신호 DDA AB INC이다. 좌변 보정 연산 기능이 있는 DDA 연산 회로(20)와 우변 보정 연산 기능이 있는 DDA 연산 회로는 DDA 연산 트리거 신호 DDA AB INC에 의해서 다음 주사선의 좌단 값 및 우단 값을 구하기 위하여 DDA 연산을 행하게 된다.
조인 회로(112)의 I2 입력 단자에 대기 회로(117)로부터의 출력 펄스가 공급된다. 그후, 다음 라인이 처리된다.
본 발명에 따른 좌변 수직 방향의 보정 연산과 우변 수직 방향의 보정 연산에 의해 주사선의 좌 및 우단에서의 값이 구해진다. 주사선의 좌 및 우단값을 이용함으로써 주사선의 좌단에 근접한 좌표 격자점의 시작점에서의 정확한 픽셀값이 수평 방향의 보정 연산에 의해서 구해진다. 시작점의 픽셀값을 고려한 수평 방향의 DDA 연산을 반복함으로써, 각 주사선의 정확한 픽셀값이 구해진다. 다음 주사선의 좌 및 우단값이 좌변 수직 방향의 변화분과 우변 수직 방향의 변화분이 제각기 이전 주사선의 좌단 및 우단값에 가산되는 DDA 연산에 의해서 구해진다.
좌표 격자점에서 정확한 픽셀값이 입력되므로 쉐이딩은 정확하게 되며, 스크린의 깜박거림이 없이 실시간을 기준으로 광원과 3차원 물체의 운동과 일치한다.
4가지 형태의 기본 회로, 즉 대기 회로, 점프 회로, 조인 회로 및 지연 회로로 구성된 병렬 처리 상태 전이 회로에 의해 쉐이딩 회로가 제어된다. 병렬 처리 상태 전이 회로를 사용함으로써 데이터 흐름이 용이하게 이해될 수 있으며, 높은 지속성을 가진 병렬 처리가 행해질 수 있다.

Claims (7)

  1. 컴퓨터 그래픽을 위해 3차원 곡면을 근사화하는 쉐이딩 방법으로서, 2차원 면의 쉐이딩은 2차원 면상에서 깊이 치수를 나타내는 픽셀 휘도값들을 변화시키는 것에 의해 제공되는 쉐이딩 방법에 있어서, 다수의 다각형을 이용하여 상기 3차원 곡면을 근사화하는 단계를 포함하며, 각 다각형은 상기 곡면의 일부분을 근사화하고, 각 다각형은 적어도 하나의 사다리꼴로 정의되고, 수평 및 수직 방향으로 연장되는 좌표 격자를 제공하는 단계를 포함하며, 좌표 격자의 각 격자점은 픽셀 휘도 레벨이 상기 깊이 치수에 따라 변화되는 픽셀을 나타내고, 격자점에서 격자점까지 상기 격자를 가로지르는 수평 방향의 주사선들을 가로질러서 및 상기 사다리꼴들의 평행한 변들에 평행하게 주사가 행해지고, 상기 사다리꼴들의 정점들의 어드레스가 상기 좌표 격자에서 결정될 수 있도록 상기 좌표 격자상에 상기 사다리꼴들을 제공하고 상기 각 정점들에 휘도값을 제공하는 단계를 포함하며, 상기 정점들은 반드시 한 픽셀의 격자점상에 바로 존재할 필요없이 임의의 점에 존재할 수 있고, 반드시 격자점상에 존재할 필요가 없는 상기 사다리꼴 정점들의 어드레스 및 휘도값들에 기초한 선형 보간에 의해 상기 각 사다리꼴들 내에 존재하는 좌표 격자의 격자점들의 각 픽셀들의 휘도값을 결정하는 단계와, 상기 사다리꼴의 수직 방향으로의 거리가 한 변을 거의 수평이 되게 하는 소정값 보다 작은 경우, 거의 수평인 변을 상기 거의 수평인 변의 한 끝점에서 시작하는 수직변으로 대체시키는 단계를 포함하는 쉐이딩 방법.
  2. 컴퓨터 그래픽을 위해 3차원 곡면을 근사화하는 쉐이딩 시스템으로서, 2차원 면의 쉐이딩은 2차원 면상에서 깊이 치수를 나타내는 픽셀 휘도값들을 변화시키는 것에 의해 제공되는, 쉐이딩 시스템에 있어서, 다수의 다각형을 이용하여 상기 3차원 곡면을 근사화하는 수단을 포함하며, 각 다각형은 상기 곡면의 일부분을 근사화하므로써 이용되고, 각 다각형은 적어도 하나의 사다리꼴로 정의되고, 수평 및 수직 방향으로 연장되는 좌표 격자를 포함하며, 상기 좌표 격자의 각 격자점은 휘도 레벨이 상기 깊이 치수에 따라 변화되는 픽셀을 나타내고, 격자점에서 격자점까지 상기 격자를 가로지르는 수평 방향의 주사선들을 가로질러서 및 상기 사다리꼴들의 평행한 변들에 평행하게 주사가 행해지고, 상기 사다리꼴의 정점들의 어드레스가 상기 좌표 격자에서 결정될 수 있도록 상기 좌표 격자상에 상기 사다리꼴들을 제공하고 상기 각 정점들에 휘도값을 제공하는 수단을 포함하며, 상기 정점들은 반드시 한 픽셀의 격자점상에 바로 존재할 필요는 없고, 반드시 격자점상에 존재할 필요가 없는 상기 정점들의 어드레스 및 휘도값들에 기초한 선형 보간에 의해 상기 각 사다리꼴들 내에 존재하는 좌표 격자의 격자점들의 각 픽셀들의 휘도값을 결정하는 수단과, 상기 사다리꼴의 수직 방향으로의 거리가 한 변을 거의 수평이 되게 하는 소정값 보다 작은 경우, 상기 거의 수평인 변을 상기 거의 수평인 변의 한 끝점에서 시작하는 수직 변으로 대체시키는 수단을 포함하는 쉐이딩 시스템.
  3. 제2항에 있어서, 상기 사다리꼴들의 주로 수직인 좌, 우변을 가로지르는 주사선의 좌, 우 끝점들의 휘도값을 계산하기 위해, 주로 수직 방향에 있는 상기 사다리꼴들의 대변들에 있는 상기 사다리꼴들의 정점 휘도값들과 어드레스들의 각각을 이용해서 상기 좌표 격자의 수직 방향으로 제1보정 연산을 실행하는 수단과, 상기 좌, 우 끝점들 사이에 있는 상기 주사선상의 각 좌표 격자점 픽셀들의 휘도값들을 결정하기 위해 좌, 우 끝점 휘도값들을 이용해서 상기 주사선의 수평 방향으로 제2보정 연산을 실행하는 수단을 더 포함하는 쉐이딩 시스템.
  4. 제2항에 있어서, 오로지 하나의 정점이 상기 주사선들에 평행한 대응선에 존재하는 것에 의해 상기 사다리꼴들 중 적어도 하나는 삼각형으로 단순화되는 쉐이딩 시스템.
  5. 제1항에 있어서, 상기 사다리꼴들의 상기 주로 수직인 좌, 우변을 가로지르는 주사선의 좌, 우 끝점들의 휘도값을 계산하기 위해, 주로 수직 방향에 있는 상기 사다리꼴들의 대변들에 있는 상기 사다리꼴들의 정점 휘도값들과 어드레스들의 각각을 이용하므로써 상기 좌표 격자의 수직 방향으로 제1보정 연산을 실행하는 단계와, 상기 좌, 우 끝점들 사이에 있는 상기 주사선상의 각 좌표 격자점 픽셀들의 휘도값들을 결정하기 위해, 좌, 우 끝점 휘도값들을 이용해서 상기 주사선의 수평 방향으로 제2보정 연산을 실행하는 단계를 더 포함하는 쉐이딩 방법.
  6. 제5항에 있어서, 상기 수직 방향으로 보정하는 단계는 선형 보간에 의해 부가적인 주사선들의 좌, 우 끝점을 찾는 단계와, 각 주사선에 대해서 좌, 우 끝점 휘도값들에 기초한 각 주사선상에 있는 픽셀들에 픽셀 휘도값들을 결정하기 위해 선형 보간을 이용하는 단계를 더 포함하는 쉐이딩 방법.
  7. 제1항에 있어서, 오로지 하나의 정점이 상기 주사선들에 평행한 대응선에 존재하는 것에 의해 상기 사다리꼴들 중 적어도 하나는 삼각형으로 단순화되는 쉐이딩 방법.
KR1019900020769A 1989-12-21 1990-12-17 컴퓨터 그래픽용 쉐이딩 방법 및 시스템 KR100232931B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
JP332147 1989-12-21
JP33214789A JP2770513B2 (ja) 1989-12-21 1989-12-21 シェーディング方法及びシェーディング装置
JP1333632A JPH03192480A (ja) 1989-12-22 1989-12-22 シェーディング方法
JP333633 1989-12-22
JP33363389A JP2770514B2 (ja) 1989-12-22 1989-12-22 シェーディング装置
JP333635 1989-12-22
JP333634 1989-12-22
JP33363589A JP2814631B2 (ja) 1989-12-22 1989-12-22 シェーディングにおける演算回路
JP333632 1989-12-22
JP1333634A JPH03192482A (ja) 1989-12-22 1989-12-22 シェーディング方法

Publications (2)

Publication Number Publication Date
KR910012997A KR910012997A (ko) 1991-08-08
KR100232931B1 true KR100232931B1 (ko) 1999-12-01

Family

ID=27531205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900020769A KR100232931B1 (ko) 1989-12-21 1990-12-17 컴퓨터 그래픽용 쉐이딩 방법 및 시스템

Country Status (4)

Country Link
US (1) US5418901A (ko)
EP (1) EP0434037B1 (ko)
KR (1) KR100232931B1 (ko)
DE (1) DE69032367T2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7142224B2 (en) * 1997-07-10 2006-11-28 Yamaha Corporation Polygon drawing apparatus and method, and storage medium for implementing the same method
US6266065B1 (en) * 1998-03-02 2001-07-24 Industrial Technology Research Institute Method for rendering 3D triangle primitives
US6370476B1 (en) * 1998-04-27 2002-04-09 Trimble Navigation Limited Interpolation of survey coordinate differences
US5978744A (en) * 1998-04-27 1999-11-02 Trimble Navigation Ltd. Interpolation of survey coordinate differences
FR2826759B1 (fr) * 2001-06-29 2003-11-14 Thales Sa Procede de zoom
JP3629243B2 (ja) * 2002-02-13 2005-03-16 Necマイクロシステム株式会社 モデリング時の距離成分を用いてレンダリング陰影処理を行う画像処理装置とその方法
KR100703939B1 (ko) * 2005-07-27 2007-04-06 삼성전자주식회사 영상처리장치 및 영상처리방법
US10621763B2 (en) 2016-07-28 2020-04-14 Microsoft Technology Licensing, Llc. Sketch-effect hatching
US11212425B2 (en) 2019-09-16 2021-12-28 Gopro, Inc. Method and apparatus for partial correction of images

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586038A (en) * 1983-12-12 1986-04-29 General Electric Company True-perspective texture/shading processor
US4974177A (en) * 1985-10-04 1990-11-27 Daikin Industries Ltd. Mapping circuit of a CRT display device
US4811245A (en) * 1985-12-19 1989-03-07 General Electric Company Method of edge smoothing for a computer image generation system
JPH0812705B2 (ja) * 1986-09-29 1996-02-07 株式会社東芝 画像処理装置
JPH01111276A (ja) * 1987-10-23 1989-04-27 Nippon Sheet Glass Co Ltd ドットパターンの自動作図装置
CA1309198C (en) * 1987-12-10 1992-10-20 Carlo J. Evangelisti Parallel rendering of smoothly shaded color triangles with anti-aliased edges for a three dimensional color display
JP2618951B2 (ja) * 1988-02-16 1997-06-11 株式会社東芝 三次元図形処理装置
US5133049A (en) * 1990-03-14 1992-07-21 Hewlett-Packard Company Accelerated decomposition of small polygons into trapezoids
US5129051A (en) * 1990-03-16 1992-07-07 Hewlett-Packard Company Decomposition of arbitrary polygons into trapezoids

Also Published As

Publication number Publication date
EP0434037A2 (en) 1991-06-26
US5418901A (en) 1995-05-23
EP0434037A3 (en) 1993-03-17
EP0434037B1 (en) 1998-06-03
DE69032367D1 (de) 1998-07-09
DE69032367T2 (de) 1998-10-01
KR910012997A (ko) 1991-08-08

Similar Documents

Publication Publication Date Title
KR100278565B1 (ko) 그래픽 데이터 계산 수행 방법 및 그에 이용되는 데이터 프로세서
EP0243644B1 (en) Interpolated display characteristic value generation
JP2910979B2 (ja) コンピュータグラフィックシステムのサブピクセルマスク発生方法および装置
KR100261076B1 (ko) 범프 맵핑과 퐁 쉐이딩을 동시에 수행하는 렌더링방법 및 장치
JP2501580B2 (ja) 曲線イメ−ジの可視表示発生装置
JP3675488B2 (ja) 線形補間を用いて非同次2次遠近テクスチャマッピング座標を決定する回路
KR100232931B1 (ko) 컴퓨터 그래픽용 쉐이딩 방법 및 시스템
US5036316A (en) Method and apparatus for high speed linear shading in a raster graphics system
JPH0927039A (ja) オブジェクトにテクスチャを表示するためにテクセル値を計算する方法及び装置
JPS62219182A (ja) グラフイツクス表示システム用の表示プロセツサ
US5060172A (en) Method and apparatus for displaying smooth-shaded objects
US20080001966A1 (en) Straight line drawing method, straight line drawing program and straight line drawing apparatus
KR970004120B1 (ko) 3차원도형처리장치
GB2226936A (en) Method and apparatus for implementing adaptive forward differencing using integer arithmetic
EP0600204A2 (en) Method and apparatus for rendering primitives with multiple processors
JP2770513B2 (ja) シェーディング方法及びシェーディング装置
JP2770514B2 (ja) シェーディング装置
JP2814631B2 (ja) シェーディングにおける演算回路
US5315540A (en) Method and hardware for dividing binary signal by non-binary integer number
JPH11185052A (ja) 3次元コンピュータグラフィックスのテクスチャマッピング座標計算装置および方法
JPH03192480A (ja) シェーディング方法
JPH03192482A (ja) シェーディング方法
JPH01166177A (ja) 太線描画方法
JPH0973547A (ja) レンダリング装置およびマッピング装置ならびにレンダリング方法およびマッピング方法
JPH0664618B2 (ja) クリツピング回路

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20050831

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee