KR100448724B1 - 데이터처리장치및섀이딩장치 - Google Patents

데이터처리장치및섀이딩장치 Download PDF

Info

Publication number
KR100448724B1
KR100448724B1 KR1019970706004A KR19970706004A KR100448724B1 KR 100448724 B1 KR100448724 B1 KR 100448724B1 KR 1019970706004 A KR1019970706004 A KR 1019970706004A KR 19970706004 A KR19970706004 A KR 19970706004A KR 100448724 B1 KR100448724 B1 KR 100448724B1
Authority
KR
South Korea
Prior art keywords
data
address
luminance
area
pixel
Prior art date
Application number
KR1019970706004A
Other languages
English (en)
Other versions
KR19980702599A (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 JP10188595A external-priority patent/JP3619565B2/ja
Priority claimed from JP29840895A external-priority patent/JP3268484B2/ja
Application filed by 가부시끼가이샤 히다치 세이사꾸쇼 filed Critical 가부시끼가이샤 히다치 세이사꾸쇼
Publication of KR19980702599A publication Critical patent/KR19980702599A/ko
Application granted granted Critical
Publication of KR100448724B1 publication Critical patent/KR100448724B1/ko

Links

Images

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
    • G06T1/60Memory management
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects

Landscapes

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

Abstract

데이터처리장치와 거기서 사용되는 섀이딩장치가 개시되어 있다.
이 데이터처리장치는, 유지되어 있는 메모리의 영역 또는 변환선판독버퍼의 정보에 의거해서, 어드레싱을 선택한다. 따라서, 동일한 데이터에의 액세스일지라도, 하드웨어 또는 처리내용, 프로세스 등에 의해서 다른 어드레싱의 데이터를 고속으로 액세스할 수 있다.
또, 이 섀이딩장치는, 도형각정점에 있어서의 파라미터로서 복수의 기하학적 벡터를 부여하고, 상기 복수의 기하학적 벡터를 도형내에서 보간하고, 보간에 의해 발생시킨 복수의 기하학적 벡터를 사용해서 도형내의 미소영역마다 휘도를 계산한다. 따라서, 적은 하드웨어량과 적은 도형수로도, 스포트라이트나 하이라이트를 고속이고도 정확하게 표현할 수 있다.

Description

데이터처리장치 및 섀이딩장치
본 발명은, 2차원적으로 배열된 데이터처리, 예를 들면, 도형생성처리나 화상처리를 고속으로 행할 수 있는 데이터처리장치 및 그 데이터처리장치에 있어서 취급하는 도형데이터등에 스포트라이트나 하이라이트의 효과를 포함한 현실감이 있는 음영을 붙이는 섀이딩장치에 관한 것이다.
[기술배경]
2차원적 확산을 가진 데이터를 고속으로 처리하기 위한 포인트는, 데이터의 어드레스관리에 있다. 2차원적확산을 가진 데이터에 관한 종래의 어드레스관리방법은, 화상관리에 관한 하기의 문헌에 표시되어 있다. 또, 마찬가지의 내용이, USP5,247,632에도 기재되어 있다.
Gary Newmann, Memory Mamagement Support for Tiled Array Or ganization, Computer Architecture News, Vol.20, No. 4, September 1992, pp. 22-29.
이들 문헌에 의하면, 2차원적 확산을 가진 데이터(이하, 2차원배열의 데이터라함, 단, 이 데이터는 이론상, 가상상의 것도 포함함)는, 행(行)방향뿐만아니고, 열(列)방향에도 참조된다.
일반적으로, 2차원배열의 데이터의 참조는, 1개의 데이터의 주위의 데이터도 아울러 참조하는 일이 많다.
예를 들면, 1개의 데이터가 참조되면, 이 데이터의 2차원배열상의 근처의 데이터도, 어떤 일정시간내에 참조되는 경우가 많다.
여기서, 이론어드레스에는 어레이형과 타일형의 2개의 타입이 있다. 전자는 2차원배열의 행데이터의 물리어드레스가 연속이 되도록 배치한 경우의 어드레스이며, 후자는 2차원 배열의 근처데이터를 포함한 정사각형 영역의 데이터가 물리적으로 연속어드레스가 되도록 배치한 경우의 어드레스이다.
종래기술에서는, 액세스원이 발생하는 어레이형의 어드레스를, 일단, 물리적배치에 대응한 타일형의 어드레스로 변환한 후, 통상의 이론어드레스로부터 물리어드레스로의 변환에 의해서 물리어드레스를 생성한다. 이때의 변환규칙은 데이터의 물리적배치만에 의해서 정해지고 있다.
종래 기술에 의하면, 어드레스변환의 규칙, 즉, 변환규칙이 물리적배치에 의해 결정되기 때문에, 타일형 배치의 데이터를 어레이형으로 참조할 수 없다고 하는 문제가 있었다. 이것은, 어레이형참조에 있어서도, 결국 도중에서 타일형참조로 변환되어 버리기 때문이다.
또, 어드레스변환이 2단계필요하며, 어드레스변환에 시간소요되어, 고속화를 저해하는 동시에, 어드레스변환의 단계에 따라서 관리가 2중화되고, 복잡화된다고 하는 문제가 있었다.
이들 문제점은, 일반적인 데이터나 프로그램등을 유지하는 메인메모리와 묘화·표시를 위한 화상데이터를 유지하는 화상용메모리(프레임버퍼등)가 통합되어, 1개의 메모리디바이스상에서 관리되는 장래의 워크스테이션(WS), 개인컴퓨터(PC), 휴대용 데이터처리장치(PDA)등의 그래픽스처리를 행하는 것에서는 현저하게 나타난다.
즉, 동일한 데이터영역에 대하여, 묘화를 위한 액세스, DMA전송, 소프트웨어로부터의 직접액세스등의 복수의 하드웨어 또는 프로세스로부터의 액세스가 발생하는 경우이다.
특히, 소프트웨어로부터의 직접액세스에서는, 호환성을 유지하기 위해서도, 종래 시스템에서의 소프트웨어인터페이스에 대해서 영향이 발생하지 않도록, 데이터의 액세스처리, 어드레스변환처리를 행하지 않으면 안된다. 그렇지않으면, 전용의 하드 또는 소프트웨어를 사용해서, 타일형으로 배치된 데이터를 어레이형으로 바꾸어 배열할 필요가 있어, 변환시간 및 2배의 데이터영역이 필요하게 된다.
상기한 WS, PC, PDA 등의 데이터처리장치에서는, CPU와 묘화등의 화상데이터를 처리하는 화상처리부를 1개의 처리장치로해서 내장하고, 그때까지의 메인메모리와 프레임버퍼를 1개의 메모리를 해서, 액세스하는 소형프로세서를 사용한 화상처리장치등의 데이터처리장치가 요구되고 있다.
이와 같은 시스템에서는 메모리량을 작게하기 위하여, 화상용 데이터영역을 CPU와 화상처리부에 의해 공유하고, CPU가 화상데이터를 참조하는 경우도 화상데이터의 쓸데없는 복사를 만들것없이 그대로의 모양으로 참조할 수 있는 필요가 있다. 특히, 데이터배열이 바뀌어도 소프트웨어호환성을 잃지않도록, 액세스할 펼요가 있다.
또, 섀이딩장치에 관해서는, 곡면의 표현이나 장소에 따라 방향이나 강도가 변화하는 광을 표현하는 기술로서 「Computer Graphics : Principle and Practice」를 비롯한 컴퓨터그래픽스의 해설서등에 기재되어 있는 phong섀이딩이 유명하다. phong섀이딩은, 평면의 조합에 의해 표현된 입체도형의 표면을, 순조롭게 섀이딩(음영붙이기)하는 것이다. 이 방식에서는, 먼저, 입체도형의 모델링단계에서 정의된 각 정점에 있어서의 법선벡터의 값을 사용해서, 보간에 의해, 표시화소에 대응하는 평면상의 점에 있어서의 법선벡터를 구한다. 다음에, 이 법선벡터에 의거해서, 그 점에 있어서의 광의 닿는 상태를 계산하여, 음영붙이기를 한다.
법선보간의 방법에 대해서는, 상기 해설서에 기재된 바와 같이, 벡터의 각성분을 각각 보간한 후에 정규화하는 수법외에, 일본국 특개평 2-202681호 공보에 기재된 바와 같이, 회전행렬를 사용한 각도보간을 사용하는 수법도 알려져 있다. 이 종래기술은, 보간후의 기하학적벡터의 정규화처리를 생략하기 위하여, 회전행렬을 사용해서 각도보간을 실행하는 것을 제안하고 있다. 이 방법에서는, 보간후의 기하학적벡터의 정규화처리를 생략할 수 있다.
그런데, 상기 해설서의 종래기술에서는, 모델링만에 의해서밖에 정의할 수 없는 법선벡터를 보간에 의해 구하는 일에 주안이 놓여있고, 실제의 평면상의 점의 휘도계산을 간략화하기위한 배려는, 전혀 이루어져 있지 않았다. 즉, 휘도계산에는 불가결인 광선의 계산은, 그때마다 정확하게 재계산할 필요가 있었다. 일반적으로 광선의 벡터는, 평행광원과 같은 특수한 경우를 제외하고는, 평면상에서 선형성을 유지해 있지않으므로, 단순한 보간으로는, 기대하는 광선벡터와는 전혀다른 결과를 얻게되어 버린다. 또,법선의 보간자체도 복잡하다. 상기 해설서의 종래예에서는 보간후의 정규화처리를 필요로 한다.
스팬마다 양단부에 있어서의 기하학적백터값으로부터 회전행렬 및 그 변화분을 구할 필요가 있어, 처리가 복잡하게 되고, 또한, 보간파라미터계산의 빈도도 높았다. 또, 일정한 법선벡터를 기준으로해서, 회전행렬을 생성하는 것을 전제로 하고 있으므로, 도형내에 있어서 법선벡터가 일정하지 않는 경우, 즉, 1개의 도형에 의해 곡면을 표현했을 경우에는, 효과가 없었다.
한편, 특허공보의 종래예에서는, 스팬마다 양단부에 있어서의 기하학적벡터값으로부터 회전행렬 및 그 변화분을 구할 필요가 있다. 또, 일정한 법선벡터를 기준으로해서 회전행렬을 생성하는 것을 전제로 하고 있어, 도형내에서 법선벡터가 일정하지 않는 경우, 즉, 1개의 도형에 의해 곡면을 표현했을 경우에는, 효과가 없었다.
또, 양쪽의 종래예는, 처리가 복잡하고, 또한, 보간파라미터계산의 빈도도 높았다.
(발명의 개시)
본 발명의 목적은, 어드레싱이 다른 복수종류의 데이터가 혼재하는 메모리를 고속으로 액세스할 수 있는 데이터처리장치를 제공하는 데 있다.
본 발명의 다른 목적은, 적은 하드웨어량과 적은 도형수로도, 스포트라이트나 하이라이트를 고속·정확하게 표현할 수 있는, 상기 데이터처리장치용 섀이딩장치를 제공하는 일이다.
데이터처리장치의 구성:
데이터처리장치의 구성의 형태로서 이하와 같은 것이있다. 데이터처리장치는, 타일형어드레스에 의해 유지되는 제 1데이터와 어레이형어드레스에 의해 유지되는 제 2데이터를 가진 메모리를 액세스해서, 데이터를 처리한다. 또, 이 처리장치가 상기 제 1데이터를 처리하는 제 1프로세스와, 상기 제 2데이터를 처리하는 제 2프로세스에 따라서, 타일형어드레스 또는 어레이형 어드레스의 어드레싱에 의해서, 상기 메모리에 액세스한다.
또, 참조선(先)이 타일형으로 배치된 데이터인 경우, 어레이형의 연속이론어드레스를 타일형 배치에 대응한 연속되지 않는 복수의 물리어드레스로 구획지어서 참조한다. 즉, 불연속인 참조를 제어할 수 있는 어레이형으로부터 타일형 어드레스에의 어드레스변환을 행한다.
또, 어드레스변환테이블의 일부에 데이터배치를 가리키는 정보를 변환선판독버퍼(TLB)에 변환방식지정플래그로서 유지하고, 어레이형 어드레스로부터 타일형 어드레스에의 어드레스변환을 논리폐이지내에서 지정한다.
각각의 프로세스에 있어서, 최적하게 어드레싱된 데이터를 직접 액세스할 수 있으므로, 데이터의 액세스고속화를 도모할 수 있다.
또, 1개의 메모리에 어드레싱이 다른 데이터를 혼재시키므로, 장치가 소형화되고, 제조코스트가 저감된다.
또, 이론페이지단위로 물리적배치정보를 관리함으로, 다른 어드레싱의 데이터가 혼재해있어도, 변환회수의 증가를 방지할 수 있다.
변환선판독버퍼(TLB)를 사용함으로써, 데이터참조시에, 먼저 어드레스변환을 위한 변환선판독버퍼(TLB)의 변환방식지정플래그를 참조하고, 이것이 어레이형 배치를 가리키고 있으면 그대로 연속적으로 참조하는 물리어드레스를 발생하고, 타일형 배치를 가리키고 있으면 그것에 합치하는 일정간격으로 불연속으로되는 참조를 행하도록 물리어드레스를 발생함으로, 타일형 데이터배치에 의해 고속화되는 묘화부가 발생한 데이터를 CPU로부터 어레이형의 어드레스구성으로 액세스할 수 있다. 그 결과, 고속의 액세스가 달성된다.
섀이딩장치의 구성:
섀이딩장치의 구성형태로서, 이하에 설명하는 것이 있다.
적어도 1개의 화상표시부와 화상표시부에 표시하는 화상을 기억하는 적어도 1개의 화상데이터격납부와 화상데이터를 구성하는 도형을 발생하는 적어도 1개의 도형발생부를 가진 화상표시장치내에서, 도형을 구성하는 각화소의 휘도를 도형마다 부여하게 되는 도형의 각 정점에 있어서의 파라미터를, 도형내에서 보간에 의해 구한다. 거기서는, 각 정점에 있어서의 파라미터로서 복수의 기하학적벡터를 부여하고, 복수의 기하학적벡터를 도형내에서 보간하고, 보간에 의해 발생시킨 복수의 기하학적벡터를 사용해서 도형내의 미소영역마다 휘도를 계산한다.
도형내 각미소영역의 휘도계산에 기여하는 광원의 복수존재하는 경우에, 미소영역을 광원수이상의 복수화소에 의해 구성하고, 각 광원마다의 휘도계산을 미소영역내에서 1회씩으로 하고, 각 화소당의 휘도계산회수를 1회이하로해서 실질적으로 단일의 휘도계산수단 및 단일광원상당의 휘도계산시간내에 미소영역마다 휘도를 계산한다.
광원마다 1화소씩 어긋난 미소영역구분을 정의하고, 각 미소영역의 선두화소 발생시에 광원에 대응하는 휘도를 계산하고, 구하게된 휘도를 미소영역내화소의 광원에 대응하는 휘도로해서 복수광원의 휘도계산과 화소의 발생처리를 파이프라인화하고, 미소영역마다 휘도를 계산한다.
미소영역으로서 래스터방향의 1차원 배열을 취하고, 화소발생순서를 래스터 방향으로해서 메모리액세스제어를 단순화하고, 미소영역마다 휘도를 계산한다.
미소영역으로서 타일형상의 2차원배열을 취하고, 화소발생순서를 지그자그로 해서 미소영역을 콤팩트하게하고, 미소영역마다 휘도를 계산한다.
어느 경우도, 정점파라미터로서의 기하학적벡터를 극좌표계에 의해 부여하고, 3차원벡터의 3개의 파라미터를 2개로 표현해서 보간 후의 벡터의 정규화처리를 생략하고, 미소영역마다 휘도를 계산한다.
복수의 기하학적벡터의 보간에 의한 극좌표값의 갱신을 미소영역마다 1성분만으로하고, 미소영역마다 갱신하는 성분을 교대하고, 극좌표에 있어서의 벡터간의 코사인계산시에 필요하게 되는 성분마다의 코사인계산수단을 단일화하고, 미소영역마다 휘도를 계산한다.
복수의 기하학적벡터를 그 특징을 보존하면서 간략화한 다른 좌표계에 사상(寫像)하여 화소계산부에 있어서의 연산량을 적게하고, 미소영역마다 휘도를 계산한다.
도형내각미소영역의 휘도계산에 기여하는 광원이 복수존재하는 경우에, 미소영역을 광원수이상의 복수화소에 의해 구성하고, 각광원마다의 휘도계산을 미소영역내에서 1회씩으로하고, 화소당의 휘도계산회수를 1회이하로해서 실질적으로 단일의 휘도계산수단 및 단일광원상당의 휘도계산시간내에 미소영역마다 휘도를 계산한다.
광원마다 1화소씩 어긋난 미소영역구분을 정의하고, 각 미소영역의 선두화소 발생시에 광원에 대응하는 휘도를 계산하고, 구하게된 휘도를 미소영역내화소의 광원에 대응하는 휘도로해서 복수광원의 휘도계산과 화소의 발생처리를 파이프라인화하고, 미소정역마다 휘도를 계산한다.
미소영역으로서 래스터방향의 1차원배열을 취하고, 화소발생순서를 래스터방향으로 하고 메모리액세스제어를 단순화하고, 미소영역마다 휘도를 계산한다.
미소영역으로서 타일형상의 2차원 배열을 취하고, 화소발생순서를 지그자그로해서 미소영역을 콤팩트하게 하여, 미소영역마다 휘도를 계산한다.
복수의 기하학적 벡터의 보간에 의한 극좌표값의 갱신을, 미소영역마다 1성분만으로하고, 미소영역마다 갱신하는 성분을 교대함으로써, 극좌표에 있어서의 벡터간의 코사인계산시에 필요하게 되는 성분마다의 코사인계산수단을 단일화하고, 미소영역마다 휘도를 계산한다.
휘도의 성분마다 그 값을 유지하는 메모리영역과 대응하는 광원에 대해서, 그림자의 영역에 있는 것을 표시하는 마스크정보를 유지하는 메모리영역을 묘화영역과는 따로 광원마다 가지고, 마스크정보를 참조하여, 표시시에 그림자영역인 경우에는, 묘화영역으로부터 성분마다 휘도값을 감해서 그림자를 표시하고, 미소영역마다 휘도를 계산한다.
휘도의 성분을 유지하는 메모리영역뿐만아니라, 휘도의 성분을 가산해서 묘화영역의 휘도를 계산했을때의 오버플로우값도 기억하고, 오버플로우시에도 정확하게 그림자영역의 휘도를 재현하고, 미소영역마다 휘도를 계산한다.
휘도의 성분마다 그값을 유지하는 메모리영역과 대응하는 광원에 대해서 그림자의 영역에 있는 것을 표시하는 마스크정보를 유지하는 메모리영역을 묘화영역의 복수화소에 대해서 1개만 대응시키고, 부가정보에 의한 메모리용량증가를 저감하고, 미소영역마다 휘도를 계산한다.
묘화영역의 가로폭이 2의 누승에 차지않을 때, 가로폭으로부터 2의 누승마이너스 1의 영역에 부가정보를 격납하고, 미소영역마다 휘도를 계산한다.
안길이정보를 격납하는 메모리영역에는 안길이가 클수록, 분해능이 낮아지게 되는 데이터포맷으로 정보를 기록하고, 미소영역마다 휘도를 계산한다.
또, 다른 관점에 의하면, 섀이딩장치는, 적어도 1개의 화상표시부와 화상표시부에 표시하는 화상의 데이터를 기억하는 적어도 1개의 화상데이터격납부와 화상을 구성하는 도형을 발생하는 적어도 1개의 도형발생부를 가진 화상표시장치내에서, 도형을 구성하는 각화소의 휘도를 도형마다 부여하게되는 도형의 각정점에 있어서의 파라미터를 도형내에서 보간해서 구한다. 이 섀이딩장치는, 각정점에 있어서의 파라미터로서 복수의 기하학적벡터를 부여하는 수단과, 복수의 기하학적벡터를 도형내에서 보간하는 수단과, 보간에 의해 발생시킨 복수의 기하학적벡터를 사용해서 도형내의 미소영역마다 휘도를 계산하는 수단을 구비한다.
도형내 각 미소영역의 휘도계산에 기여하는 광원의 복수존재하는 경우에, 미소영역을 광원수이상의 복수화소에 의해 구성하고, 각광원마다의 휘도계산을 미소영역내에서 1회씩으로하고, 각화소당의 휘도계산회수를 1회이하로해서, 실질적으로 단일의 휘도계산수단 및 단일 광원상당의 휘도계산시간내에 미소영역마다 휘도를 계산한다.
광원마다 1화소씩 어긋난 미소영역구분을 정의하고, 각미소영역의 선두화소 발생시에 광원에 대응하는 휘도를 계산하고, 구하게된 휘도를 미소영역내화소의 광원에 대응하는 휘도로해서 복수광원의 휘도계산과 화소의 발생처리를 파이프라인화하고, 미소영역마다 휘도를 계산한다.
미소영역으로서 래스터방향의 1차원배열을 취하고, 화소발생순서를 래스터방향으로해서 메모리액세스제어를 단순화하고, 미소영역마다 휘도를 계산한다.
섀이딩장치에 있어서는, 미소영역으로서 타일형상의 2차원배열을 취하고, 화소발생순서를 지그자그로해서 미소영역을 콤팩트하게하여, 미소영역마다 휘도를 계산한다.
섀이딩장치에 있어서는, 정점파라미터로서의 기하학적벡터를 극좌표계에 의해 부여하고, 3차원벡터의 3개의 파라미터를 2개의 파라미터에 의해 표현하고, 보간후의 벡터의 정규화처리를 삭감하고, 미소영역마다 휘도를 계산한다.
섀이딩장치에 있어서는, 복수의 기하학적벡터의 보간에 의한 극좌표값의 갱신을 미소영역마다 1성분만으로하고, 미소영역마다 갱신하는 성분을 교대하고, 극좌표에 있어서의 벡터간의 코사인계산시에 펼요하게 되는 성분마다의 코사인계산수단을 단일화하고, 미소영역마다 휘도를 계산한다.
섀이딩장치에 있어서는, 복수의 기하학적벡터를 그 특징을 보존하면서 간략화한 다른 좌표계에 사상하고, 화소계산부에 있어서의 연산량을 적게하고, 미소영역마다 휘도를 계산한다.
섀이딩장치에 있어서는, 도형내 각 미소영역의 휘도계산에 기여하는 광원의 복수존재하는 경우에, 미소영역을 광원수이상의 복수화소에 의해 구성하고, 각 광원마다의 휘도계산을 미소영역내에서 1회씩으로하고, 화소당의 휘도계산회소를 1회 이하로해서 실질적으로 단일의 휘도계산수단 및 단일광원상당의 휘도계산시간내에 미소영역마다 휘도를 계산한다.
섀이딩장치에 있어서는, 광원마다 1화소씩 어긋난 미소영역구분을 정의하고, 각미소영역의 선두화소발생시에 광원에 대응하는 휘도를 계산하고, 구하게된 휘도를 미소영역내화소의 광원에 대응하는 휘도로해서 복수광원의 휘도계산과 화소의 발생처리를 파이프라인화하고, 미소영역마다 휘도를 계산한다.
미소영역으로서 래스터방향의 1차원배열을 취하고, 화소발생순서를 래스터방향으로해서 메모리액세스제어를 단순화하고, 미소영역마다 휘도를 계산한다.
미소영역으로서 타일형상의 2차원배열을 취하고, 화소발생순서를 지그자그로해서 미소영역을 콤팩트하게하고, 미소영역마다 휘도를 계산한다.
복수의 기하학적 벡터의 보간에 의한 극좌표값의 갱신을, 미소영역마다 1성분만으로하고, 미소영역마다 갱신하는 성분을 교대하고, 극좌표에 있어서의 벡터간의 코사인계산시에 필요하게 되는 성분마다의 코사인계산수단을 단일화하고, 미소영역마다 휘도를 계산한다.
휘도의 성분마다 그값을 유지하는 메모리영역과 대응하는 광원에 대해서, 그림자의 영역에 있는 것을 표시하는 마스크정보를 유지하는 메모리영역을 묘화영역과는 따로 광원마다 가지고, 마스크정보를 참조함으로써, 표시시에 그림자영역인 경우에는, 묘화영역으로부터 성분마다 휘도값을 감해서 그림자를 표시하고, 미소영역마다 휘도를 계산한다.
휘도의 성분을 유지하는 메모리영역뿐만 아니라, 휘도의 성분을 가산해서 묘화영역의 휘도를 계산했을때의 오버플로우값도 기억함으로써, 오버플로우시에도 정확하게 그림자영역의 휘도를 재현하고, 미소영역마다 휘도를 계산한다.
휘도의 성분마다 그값을 유지하는 메모리영역과 대응하는 광원에 대해서 그림자의 영역에 있는 것을 표시하는 마스크정보를 유지하는 메모리영역을 묘화영역의 복수화소에 대해서 1개만 대응시키고, 부가정보에 의한 메모리용량증가를 저감하고, 미소영역마다 휘도를 계산한다.
묘화영역의 가로폭이 2의 누승에 차지않을 때, 가로폭으로부터 2의 누승마이너스 1의 영역에 부가정보를 격납하고, 미소영역마다 휘도를 계산한다.
안길이정보를 격납하는 메모리영역에는 안길이가 클수록, 분해능이 낮아지게 되는 데이터포맷으로 정보를 기록하고, 미소영역마다 휘도를 계산한다.
상기한 기본적인 섀이딩장치의 구성에 있어서는, 법선의 방향 및 광선의 방향을 평면상에서 선형이 되는 파라미터에 의해 표현한 극좌표계 또는 정규모델좌표계를 정의하고, 이 좌표계에 의해 간이하게 휘도를 계산함으로, 도형의 점점에 부여하게되는 파라미터로서 도형고유의 기준벡터를 사용하지 않고도, 법선벡터도 보간할 수 있고, 곡면을 표현하는 경우에도 유연하게 대응할 수 있다.
따라서, 매끄러운섀이딩이나 스포트라이트의 표현을 보다 적은 계산량으로 실현하기 때문에, 법선뿐만아니라, 광선의 벡터도, 동시에, 또한, 평면의 선형성을 유지하면서 보간할 수 있다. 결과로서, 의사적인 곡면의 표현이나 스포트라이트 등의 광의 표현을, 정규모델좌표계에 있어서의 간이계산에 의해 실현할 수 있게 된다.
도 1은 본 발명의 데이터처리장치의 일실시예를 표시한 도면
도 2는 데이터배열의 설명도
도 3은 어드레스할당의 설명도
도 4는 시스템구성의 일실시예를 표시한 도면
도 5는 어레이형배열과 타일형 배열의 설명도
도 6은 화상영역이론공간의 설명도
도 7은 2차원어드레스변환의 일실시예를 표시한 도면
도 8은 변환테이블의 일실시예를 표시한 도면
도 9는 액세스패턴과 물리어드레스와의 관계를 설명하는 도면
도 10은 액세스패턴과 물리어드레스와의 관계를 설명하는 도면
도 11은 캐시메모리어드레스관리의 일실시예를 표시한 도면
도 12는 캐시메모리어드레스관리의 일실시예를 표시한 도면
도 13은 캐시메모리어드레스관리의 일실시예를 표시한 도면
도 14는 라인전송방식의 일실시예를 표시한 도면
도 15는 라인전송방식의 일실시예를 표시한 도면
도 16은 라인전송방식의 일실시예를 표시한 도면
도 17은 소프트웨어시스템구성의 일실시예를 표시한 도면
도 18은 소프트웨어시스템구성의 일실시예를 표시한 도면
도 19는 도형당의 평균타일수의 설명도
도 20은 본 발명에 의한 섀이딩장치의 실시예 1의 미소영역휘도계산방식을 설명하는 도면
도 21은 본 발명에 의한 섀이딩장치의 실시예 1에 사용되는 미디어프로세서의 시스템구성의 일예를 표시한 블록도
도 22는 도 21의 미디어프로세서내의 화소발생부의 구성의 일예를 표시한 블록도
도 23은 광원이 1개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 순서를 설명하는 도면
도 24는 광원이 2개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 순서를 설명하는 도면
도 25는 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 순서를 설명하는 도면
도 26은 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 순서를 설명하는 도면
도 27은 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 순서를 설명하는 도면
도 28은 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 순서를 설명하는 도면
도 29는 실시예 1에 의한 극좌표보간방식을 설명하는 도면
도 30은 실시예 1에 의한 극좌표보간의 벡터궤적을 설명하는 도면
도 31은 실시예 1에 의한 극좌표보간의 벡터궤적을 시뮬레이트한 결과를 표시한 도면
도 32는 실시예 1에 의한 극좌표보간의 벡터궤적을 시뮬레이트한 결과를 표시한 도면
도 33은 실시예 1에 의한 극좌표보간의 벡터궤적을 시뮬레이트한 결과를 표시한 도면
도 34는 실시예 1에 의한 휘도계산의 개요 및 계산식을 설명하는 도면
도 35는 실시예 1에 의한 벡터간 코사인근사게산의 개요 및 계산식을 설명하는 도면
도 36은 하드웨어량 삭감을 위하여, 실시예 1에 의한 극좌표보간의 성분을 사용한 인터리브방식을 설명하는 도면
도 37은 실시예 1에 의한 극좌표보간의 성분을 사용한 인터리브방식을 설명하는 도면
도 38은 실시예 1에 의한 코사인근사계산용 테이블을 설명하는 도면
도 39는 실시예 1에 의한 휘도계산부의 구성의 일예를 설명하는 도면
도 40은 실시예 1에서는 섀이딩장치의 미소영역내에서 광원마다에 휘도를 가산하는 가산기를 설명하는 도면
도 41은 본 발명에 의한 섀이딩장치의 실시예 2의 미소영역휘도계산방식의 처리순서를 표시한 순서도
도 42는 실시예 2에 사용하는 정규화모델좌표계의 개념을 설명하는 도면
도 43은 실시예 2의 미소영역휘도계산방식과 종래방식을 비교해서 표시한 도면
도 44는 실시예 2의 휘도계산의 개요 및 계산식을 설명하는 도면
도 45는 실시예 2의 실공간에 있어서의 각종벡터의 위치관계를 표시한 도면
도 46은 실시예 2의 정규화모델좌표계에 있어서의 각종 벡터의 위치관계를 표시한 도면
도 47은 실시예 2에 있어서의 법선벡터의 경사를 보정하는 방식을 설명하는 도면
도 48은 실시예 2의 정규화모델좌표계에 있어서의 확산성분의 감쇠항의 계산순서를 표시한 도면
도 49는 실시예 2의 정규화모델좌표계에 있어서의 스포트방향에 따른 감쇠항의 계산순서를 표시한 도면
도 50은 실시예 2의 정규화모델좌표계에 있어서의 반사광성분의 감쇠항의 계산의 순서를 표시한 도면
도 51은 본 발명에 의한 섀이딩장치의 실시예 2에 사용되는 미디어프로세서의 시스템구성의 일예를 표시한 블록도
도 52는 도 32의 화소발생부의 구성의 일예를 표시한 블록도
도 53은 실시예 2에 있어서의 묘화지령포맷의 일예를 표시한 도면
도 54는 광원이 1개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생의 순서를 표시한 도면
도 55는 광원이 2개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생의 순서를 표시한 도면
도 56은 광원이 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생의 순서를 표시한 도면
도 57은 광원이 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생의 순서를 표시한 도면
도 58은 광원이 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생의 순서를 표시한 도면
도 59는 광원이 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생의 순서를 표시한 도면
도 60은 실시예 2의 휘도계산부의 구성의 일예를 표시한 블록도
도 61은 실시예 2의 미소영역내에서 광원마다에 휘도를 가산하는 가산기의 구성의 일예를 표시한 도면
도 62는 실시예 2의 그림자영역특정알고리즘을 설명하는 도면
도 63은 실시예 2의 섀이딩의 순서를 설명하는 도면
도 64는 도 44의 섀이딩의 순서를 실행하기 위한 장치구성의 일예를 표시한 도면
도 65는 도 45의 장치에 있어서의 그림자용 메모리영역할당의 일예를 표시한 도면
도 66은 본 발명에 있어서의 비선형안길이포맷을 설명하는 도면
(발명을 실시하기 위한 최량의 형태)
이하에, 본 발명의 실시예를 도면을 사용해서 상세히 설명한다.
도 1에 본 발명의 데이터처리장치의 기본구성을 표시한 개략도를 표시한다.
이 데이터처리장치는, 주로, 화상데이터를 포함한 데이터를 처리하는 처리부 100과 화상데이터를 포함한 데이터, 지령, 프로그램 등을 유지하는 기억부 200 및 이들을 접속하는 메모리버스 400을 가지고 구성된다.
처리부 1은, 적어도, 화상데이터는 아난 일반적인 데이터를 처리하는 데이터 프로세서부 110, 프로세서부로부터의 지시에 따라서 화상데이터를 처리하는 그래픽 프로세서부 120, 기억부 200에의 액세스를 제어하는 입출력제어부 130 및 이들을 접속하는 내부버스 140을 가지고 구성된다.
기억부 200은, 일반적인 데이터나 프로그램을 유지하는 프로그램영역 210과 화상에 관한 데이터를 유지하는 그래픽영역 220을 가지고 구성된다. 또, 이 데이터처리장치는, 하드디스크, 플로피디스크, ROM, CO-ROM 등의 다른 기억장치, CRT, 액정표시장치 등의 표시장치, 마우스, 키보드 등의 입력장치, 프린터 등의 출력장치 또는 다른 데이터처리장치와의 데이터의 전송 등을 행하는 모뎀 등의 통신장치 등의 보조장치 300을 입출력버스 500과 입출력제어부를 개재해서 접속할 수 있다. 또, 이들 보조장치는 데이터처리장치에 내장하는 것도 외부장착하는 것도 가능하다.
여기서 기억부200에 유지되는 데이터의 어드레스의 할당을 이하에 설명한다.
기억부의 프로그램영역 210은, 데이터나 프로그램이 필요에 따라서 유지되고, 그 어드레스할당은, 종래와 동일하다. 이 영역에서는, 분기처리나 개입중단처리등을 제외하면, 통상, 어드레스순으로 액세스되는 일이 많다.
이에 대해서, 그래픽영역 220은, 표시화면에 대응해서 액세스되는 일이 많다.
즉, 도 2(A)에 표시한 바와 같이, 어떤 화상처리중에서, 예를 들면, 화소데이터X0를 처리하면, 다음에 처리하는 화소데이터는, 그 주변근처의 화소데이터 X1∼X8로 되는 일이 많다. 이것은, 화상데이터의 처리는, 표시하는 2차원배열의 화소데이터를 취급하기 때문이다. 또, 3차원의 도형을 표시하는 경우에서도, 실제로 표시하는 표시장치는 2차원평면의 표시장치임으로, 상기한 바와 같은 근처의 화소데이터를 처리하는 일이 많아진다.
또, 화상처리하는 대상은, 표시영역이나 묘화영역전체를 한꺼번에 처리하는 것보다, 묘화 또는 표시해야할 물체나 도형마다 처리하는 경우가 많는데에도 있다. 또한, 이 도면에서는 12×12화소의 화면예로 되어 있다.
이와 같은 표시화면에 대응한 화소데이터를 메모리에 할당할때에, 어드레스 0에서부터 n까지를 1화면전체의 배열로 할당하면 도 2(B)에 표시한 바와 같은 화소데이터의 배열로 된다. 이와 같은 배열에 있어서, 근처의 화소데이터를 순차 처리하는 경우에는, 이들 화소데이터의 격납되는 어드레스가 이산되어 있으므로 그 어드레스계산에 시간이 걸리고, 처리하는 화소데이터의 양이 많을수록 처리시간이 증대한다.
그래서, 복수의 화소데이터를 소정의 크기의 직사각형영역(블록)마다 합쳐서 어드레스를 할당한다. 즉, 이 도면의 예에서는, 3×3의 화소데이터의 블록을 합쳐서 할당하기 위하여 도 2(C)에 표시한 바와 같은 어드레스를 할당하고 있다.
이와 같이 2차원배열의 화소데이터를 블록마다 합쳐서 어드레스를 할당함으로써, 근처의 화소데이터의 어드레스계산이 용이하게 되고, 액세스가 고속으로 된다.
여기서, 블록의 형상은 직사각형 영역만이 아니고 다른 형상의 영역이라도 되며, 그 크기로 처리내용에 따라서 바꿀수 있다. 이들 설정은, 프로그램등의 소프트웨어에 의해서도, 하드웨어에 의해서도 설정할 수 있다.
구체적으로는, 가로긴, 또는 세로긴직사각형 영역이고, 하드웨어어 간소화를 위하여 그 사이즈는 2의 누승으로 설정한다. 이 형상은 논리페이지마다 할당되는 어드레스변환테이블에 배치정보로서 기록되어 있으며, 그 복사가 고속화를 위한 변환선 판독버퍼(TLB)에 격납되어 있다. 이것은 오퍼레이팅시스템에 의해 세트된다. 또는, 특정용도용으로 하드웨어붙들어맴논리에 의해 실현하는 것도 가능하고, 일정치 또는, 논리어드레스에 상위비트끄집어내기등의 특정한 조작을 실시해서 얻게된다.
소프트웨어에 의한 지정의 구체적인 지시방법을 도 8에 표시한다. 변환선버퍼의 엔트리의 플래그영역 2217에 인코드되어서 격납된다. 이 정보는 데이터참조시에 대응하는 페이지의 논리어드레스에 의해 색인되어, 판독된다. 직사각형영역의 가로폭이 2의 n0승, 세로가 2의 m0승으로 지정되어 있었다고하면, 도 5에 표시한 바와 같이, 어레이형배열의 논리어드레스 2100은 타일형 배열의 물리어드레스 2110으로 변환된다. 이 변환은 도면중 어드레스의 y0과 x1의 교체에 의해 실현할 수 있다. 이 교체는, 연속참조시, 즉, 논리어드레스의 증가분을 일정하게 했을 때, 물리어드레스쪽에서는 연속적으로는 증가하지 않는 것을 나타낸다. 즉, 2의 n0승마이너스 1인때의 증분이 2의 (m0+1)승마이너스 1의 2의 (n0-1)승배를 가산해서 다음의 어드레스를 얻는다.
이하에, 상기 도 2(C)와 같이 어드레스가 할당된 기억부를 액세스하는 데이터처리장치의 동작을 설명한다.
도 3(A)에 화면의 2차원좌표축에 의거한 2차원어드레스(X,Y)를 표시한다. 이 2차원어드레스는, 데이터프로세서부의 지령에 부여되는 파라미터로서 사용된다. 또한, 여기서도 12×12의 크기의 예로 표시되어 있다.
데이터프로세서부는, 이 2차원어드레스를 상기한 어레이형 어드레스, 즉, 논리어드레스로 변환해서 처리를 행한다. 도 3(B)에 2차원어드레스의 배열에 대응한 이 논리어드레스를 표시한다.
그래픽프로세서는, 데이터프로세서부의 지시에 따라서, 기억부를 액세스하나, 이 그래픽프로세서의 논리어드레스, 즉, 화상논리어드레스는, 도 3(C)에 표시한 바와 같이 타일형으로 배열되어 있다.
기억부의 각각의 물리어드레스에 할당되어 있는 화소데이터의 배열은, 상기한 바와 같이 이 화상논리어드레스에 의해서 할당되어 있는 배열과 동일하다. 즉, 화소데이터를 액세스하는 것은, 데이터프로세서부보다도 그래픽으로세서의 쪽이 빈도가 높으므로, 기억부의 화상영역의 화소데이터의 배열은 타일형이다.
도 3(D)에 기억부의 물리어드레스, 데이터처리부의 논리어드레스 및 그래픽프로세서의 화상논리어드레스와의 상대관계를 표시한다.
이에 의하면, 화상처리의 고속화를 위하여 화소데이터에 대해서 물리어드레스와 화상물리어드레스를 1대1로 대응시키므로써, 그래픽프로세서와 기억부의 화소영역과의 사이는, 어드레스변환을 행하지 않아도 액세스할 수 있고, 또, 대상으로 하는 화소데이터의 근처의 화소데이터의 액세스가 용이하게, 고속으로 행할 수 있다.
또, 데이터프로세서부가 화소데이터를 액세스할때는, 데이터프로세서부의 논리어드레스로부터 화상논리어드레스 또는 물리어드레스로 변환함으로써 달성된다. 물론, 통상의 데이터를 액세스할때에는, 프로그램영역에의 액세스임으로, 종래와 마찬가지의 어드레스변환, 즉, 논리어드레스로부터 물리어드레스에의 변환만으로 된다.
이와 같은 동작을 실행시키기 위하여, 본 발명의 데이터처리장치에서는, 데이터프로세서부가 액세스하는 데이터가 기억부의 어느영역에 있는지를 판별하는 영역판정부와, 상기 영역판정부에서 그래픽영역이라 판정되면 논리어드레스를 그래픽영역의 물리어드레스(타일형어드레스)로 변환하고, 프로그램영역이라 판정되면 논리어드레스를 통상의 물리어드레스로 변환하는 어드레스변환부를 가진다.
즉, 본 발명의 데이터처리장치에서는, 데이터프로세서부에 기억부에 격납되어 있는 데이터의 영역에 따라서 어드레스변환의 처리내용을 바꾸는 점에 특징이 있다. 어드레스변환의 처리내용을 바꾸다는 것은, 예를 들면, 논리어드레스를 어레이형 어드레스나 타일형 어드레스의 어느한쪽으로 변환한다는 것이다.
또, 본 발명의 데이터프로세서부는, 그래픽프로세서부에 화소데이터의 액세스를 지시하는 경우에도, 상기한 어드레스변환을 사용할 수 있다. 그 경우에는, 그래픽프로세서부에의 액세스인지를 판정하는 기능을 상기 영역판정부에 형성하고, 그래픽프로세서부에의 액세스이면, 어드레스변환부는, 논리어드레스를 그래픽영역의 물리어드레스(타일형어드레스)로 변환한다.
이상의 실시예에서는, 화상데이터의 액세스를 표시하였으나, 예를 들면, 데이터프로세서부에서 행렬계산을 하는 경우에는, 행렬의 데이터를 화소데이터와 마찬가지로 2차원배열의 타일형 어드레스로 물리어드레스로서 기억부에 유지하고, 상기한 그래픽프로세서부와 같이 직접 액세스하는 일이 가능하게 된다. 이 경우, 그래픽프로세서부가 이 행렬데이터에 액세스하려면, 화상논리어드레스를 물리어드레스로 변환하는 어드레스변환부를 필요로하는 경우가 있다. 단, 행렬데이터와 화소데이터와의 물리어드레스인 타일형 어드레스의 할당이 동일하다면, 어드레스변환의 파라미터가 약간 다를뿐이고, 처리방법은 동일하게 할 수 있다.
또, 이데이터처리부에 데이터프로세서부를 위하여 캐시메모리를 적용하는 경우도 마찬가지로 실현할 수 있다. 또한, 이 경우에는, 입출력제어부에 캐시미스시의 기억부에의 데이터액세스처리의 기능을 부가한다.
본 발명의 데이터처리장치의 특징은, 상이한 데이터배열에 대응하는 논리어드레스로부터 물리어드레스로의 복수종의 어드레스변환을 행하는 점에 있다.
이하에, 본 발명을 적용한 데이터처리장치에 대해서, 보다 구체적으로 설명한다. 도 4는 본 발명을 응용한 데이터처리장치의 구성의 일예이다.
여기에 표시한 데이터처리장치는, 연산처리부분과 화소발생부분등을 하나의 칩에 수용한 미디어프로세서 1000, 4배의 메모리모듈 1100, 외부서브시스템 1200을 가지고 구성되어 있다.
미디어프로세서 1000과 메모리모듈 1100과의 사이는 어드레스 19비트, 데이터 64비트의 버스에 의해, 외부서브시스템 1200과는 어드레스, 데이터공용의 8비트버스에 의해 각각 접속되어 있다.
미디어프로세서 1000에는 연산처리부분이 RISC코어1010, 화소발생부분 1020, 버스제어부분 1030, 표시제어부분1040, 부동소수점연산기구1050 및 주변논리1060이 내장되어 있다.
RISC코어1010, 화소발생부분1020, 버스제어부분1030 및 주변논리1060은 서로 어드레스32비트, 데이터32비트의 내부버스에 의해, RISC코어1010과 부동소수점연산기구1050은 32비트데이터버스에 의해, 버스제어부분1030과 화소발생부분1020은 전용의 64비트데이터버스에 의해, 또, 버스제어부분1030과 표시제어부분1040도 32비트데이터버스에 의해 접속되어 있다.
또, 메모리모듈1100에는 입출력폭이 32비트이고 용량이 8M비트의 동기식다이내믹메모리1110이 2개실장되어 있다.
메모리에는 RISC코어1010이 연산처리에 사용하는 영역이외에, 화소발생부분1020이 참조하는 화상이나 RISC코어1010이 연산처리이외의 목적으로 참조하는 화상 등을 기억하는 화상영역1111이 있다.
그래픽표시처리를 실행시킬 경우, 처음에 어드레스, 데이터공용의 8비트버스에 의해 접속된 외부서브시스템1200으로부터 메모리모듈1100으로, 도형의 정점에 관한 좌표변환등을 행하는 정점계산프로그램이나, 도형에 첨부하는 무늬 등의 화상데이터가 설정된다. RISC코어1010는 설정된 정점계산프로그램을 근거로, 부동소수점연산기구1050의 연산기를 사용해서 표시해야할 도형의 표시화면상에서의 위치나 첨부하는 무늬의 위치를 계산하고, 화소발생부분1020이 해석실행할 수 있는 지령의 형식으로 변환해서 메모리모듈1100에 격납한다. 화소발생부분1020은 이 격납된 지령을 판독하고, 해석실행한다. 결과로서, 표시도형의 각화소의 값이 결정되고, 그에 적합한 물리어드레스위치에 격납된다. 이때의 화상배치가 타일형으로 되어있다. 이것은 빈틈없이 모두 칠하기가 많은 도형묘화에 있어서는 가로방향뿐만 아니라, 세로방향으로도 데이터참조가 빈발함으로, 이것을 고속화하고 싶기 때문이다. 이와 같이 해서 발생된 메모리모듈1100의 화상은 표시제어부분1040에 의해 판독되고, 표시데이터로서 모니터에 출력된다.
화소영역1111은 주로 화소발생부1020이 발생한 화소를 격납하는 목적으로 사용된다.
화소의 발생은 도형의 빈틈없이 모두 칠하기로 대표된 바와 같이, 2차원적 근처에서의 메모리액세스가 발생하는 확률이 높다. 그 때문에, 화상영역1111의 구성으로서는 도 5에서 설명하는 타일형의 어드레스배열로 되어있는 것이 바람직하다.
그러나, 이 영역에는 RISC코어1010으로부터의 액세스도 있다. 이것은 주로 화소발생부분 1020이 발생한 화상을, 체크등을 위하여 프로그램에 의해 참조하는 경우나, 화소발생부1020에서는 불가능한 화소발생처리를 프로그램에 의해 행하는 경우등에 발생한다.
이 프로그램으로부터의 액세스는 뒤에 설명하는 이유에 의해, 타일형상은 아니고 어레이형상이 아니면 안된다. 프로그램과 실메모리의 구성차이를 흡수하기 위하여, RISC코어1010에 영역판정부어드레스변환기구1011을 가지고 있다.
다음에 도 5를 사용해서 어드레스배열에 대해서 상세히 설명한다.
RISC코어1010으로부터의 액세스는 논리어드레스AV2000에 따라, 어레이형 배열2000과 같이 되어 있다.
어레이의 가로폭은 2^n이고, 높이는 2^m이다. RISC코어1010으로부터 어드레스를 연속적으로 냈을 경우의 액세스는 도 5에 표시한 바와 같이 (2^n)-1에 되풀이하는 패턴이 된다.
이 논리어드레스와 2차원어드레스(x, y)와의 관계는, VA2100의 하위 n비트가 x, 그것에 계속되는 m비트가 y의 값을 표시하고 있다.
원점의 어드레스를 org라고하면, VA2100은 이하의 식으로 표시된다.
VA(x, y)=org+(2^n)·y+x
한편, 메모리형상에서의 연속적인 데이터는 물리어드레스PA2110에 따라, 타일형 배열2010과 같이 되어 있다.
타일의 가로폭은 2^n0이고, 높이는 2^m0이다.
메모리위에서 연속적인 액세스는 도 5에 표시한 바와 같이 가로는 (2^n0)-1로 되풀이하고, 세로는 (2^m0)-1로 되풀이 하는 타일현상의 패턴이 된다. 타일의 가로방향의 배열은 (2^n1)-1로 되풀이한다. 이 물리어드레스와 2차원어드레스(x, y)와의 관계는, PA2110의 하위 n0비트가 x0, 그것에 계속되는 m0비트가 y0, 또 n1비트가 x1, m1비트가 y1로 계속된다.
여기서, x1, x0은 x을 상위 n1비트와 하위 n0비트로 분할한 것, y1, y0은 y를 상위 m1비트와 하위 m0비트로 분할한 것이다. 원점의 어드레스를 org라고하면, PA2110은 이하의 식으로 표시된다.
PA(x, y)=org+{2^(n1+m0+n0)}·
y1+{2^(m0+n0)}·x1
(2^n0)·y0+x0
어레이형으로부터 타일형으로의 어드레스변환은(AV2100)으로부터 PA2110으로의 변환이다.
도 6은 사용해서 타일형 배열2010의 실제구성에 대해서 상세히 설명한다.
화소발생부1020이 취급하는 논리적인 어드레스는 ±4095화소를 표현할 수 있는 공간2009이다.
이중, 실제로 메모리어드레스가 할당되는 것은 타일형 배열2010의 부분만이다.
또, 표시에 제공되는 부분은 640×480화소의 영역2011이다.
영역2011내부의 1개의 타일2012는 가로 4화소, 세로 4화소의 16화소로 구성되어 있다.
각 화소 2013은 32비트구성이고, 16비트의 안길이정보Z, 5비트씩의 색정보 RGB 및 1비트의 플래그정보F로 이루어지고 있다.
도 7은 이 구성에 있어서의 논리어드레스VA2101로부터 물리어드레스PA2111로의 변환을 해설한 것이다.
VA2101의 하위 4비트2101(a)는 타일행(行)내 어드레스 x0이며, 변환되지 않는다.
어레이형내 타일행 어드레스2101(c) 및 2101(b)는 타일내데이터가 연속적으로 되도록 배열바꿈 되어2111(b) 및 2111(c)로 된다.
원점어드레스org2101(e) 및 세로방향타일어드레스2101(d)는 통상의 어드레스변환기구2200에 의해, org2111(e) 및 세로방향타일어드레스2111(d)로 변환된다.
이때 영역판정에 의해, 2101(c) 및 2101(b)의 배열바꿈이 필요하다는 것을 표시한 판정결과(2201)도 동시에 출력된다.
도 8에서는 화상영역의 판정신호2201을 생성하는 기구를 변환선판독버퍼(TLB)의 연트리를 사용해서 설명한다.
변환선판독버퍼(TLB)의 엔트리포맷2210은 플래그정보FLAGS2211, 허가프로세스정보COIN2212, 물리페이지번호PPN2213, 논리페이지번호VPN2214, 공간번호SPN2215, 유효비트V2216으로 이루어진다.
이중, 어드레스붙이기에 관한 정보는 플래그정보FLAGS2211에 포함되어 있으며, 그 상세한 것이 표2217에 표시되어 있다.
FLAGS2211의 5비트중, G-ESC를 그래픽스에스케이프비트이고, 이것이 1일때에는 나머지의 4비트에 의해 타일정보를 표시한다. 이것이 0일때에는 나머지의 4비트는 각각 다른 의미로 사용된다.
타일정보는 타일사이즈 및 화소구성을 표시하고 있으며, 도 6에 표시한 것에 대응하는 것은 굵은테로 둘러싼부분이다.
RISC코어1010내부에는 프로세스정보의 일부로서 어드레스싱이 타일응답인지 아닌지의 플래그를 가지고 있으며, 이것이 타일대응이 아닌 것을 표시하고 있을때에만 화상영역판정신호2201이 유효하게 된다.
도 9(a)(b)는 본어드레스변환방식에 의한 메모리의 액세스패턴을 설명한 것이다.
도 9(a)에서는, 논리공간에 있어서의 어레이형 배열2000에 대해서 화소발생부1020로부터 타일을 따른 액세스2001이 있었을 경우, 물리공간에 있어서의 타일형배열 2010위의 액세스패턴 2011은 연속적으로 된다.
도 9(b)에서는, 논리공간에 있어서의 어레이형 배열 2000에 대해서 RISC코어1010으로부터 어레이형상의 액세스2002가 있었을 경우, 물리공간에 있어서의 타일형 배열 2010위의 액세스패턴 2014는 불연속으로 된다.
도 10에서는 도 9(b)에 있어서의 메모리2010과 캐시2020사이의 전송에 의해 상세하게 설명한다.
메모리2010내의 데이터배열은 본질적으로 1차원형상이다. 데이터번호를 도면에 표시한 바와 같이 0∼7로 한다.
이 데이터가 화상영역에 있을 경우 화소발생부 1020은 이 1차원데이터를 타일형상어드레스공간 2000으로서 인식한다.
화소발생부의 고속화를 위하여, 타일 2001내의 데이터는 메모리형상으로 근처에 위치하도록 할당되어 있다.
즉, 도면의 예에서는 타일내의 데이터가(0, 1, 2, 3)(4, 5, 6, 7)과 같이 구성된다.
한편, RISC코어1010은 이것을 어레이형의 배열로서 인식하기 위하여, 도면의 예에서는 (0, 1, 4, 5, 8, 9,…)(2, 3, 6, 7,…)와 같이 액세스한다.
그래서, 이 불연속액세스가 연속의 가상어드레스에 의해 참조되고, 데이터자체에도 연속성을 가지게하는 것이 본데이터전송방식의 주안점이다. 이것을 실현하기 위하여, 캐시메모리2020을 구성하는 캐시라인 2022내의 데이터배열을 캐시라인의 전송시에 배열바꿈한다.
즉, 도면의 예에서는 캐시라인을 (0, 1, 4, 5)(2, 3, 6, 7)과 같이 구성한다.
RISC코어로부터의 액세스가 연속화된 대신에, 라인전송에 의한 메모리액세스는 불연속인 것으로 되어 오버혜드가 발생한다. 그러나, 이것은 전송시에만 일어나고, 평균의 오버혜드는 이것에 캐시의 미스율을 승산한 것으로 됨으로 작다. 본 방식을 사용하지 않으면, 매사이클어드레스변환의 오버헤드를 필요로 하기 때문에, 머신사이클시간의 증가를 초래함으로 전체적으로 성능이 저하한다. 이 불연속제어는 도 7에 있어서의 어레이형 내타일행어드레스의 짜바꿈에 의해 실현되나, 이 짜바꿈이 매회행하여져서는 성능저하를 초래하기 때문에, 불연속의 데이터가 캐시메모리2020위에서 연속의 액세스2022로 보이도록 하는 것이 바람직하다. 도 11∼도13을 사용해서 이 방법을 설명한다.
도 11은 캐시메모리의 미스판정부를 표시한 것이다.
캐시라인이 16B이고, 엔트리수가 2048인때, 캐시태그2220의 어드레스로서는 물리어드레스2111(f), 판정부2221에 입력하는 상위어드레스로서는 물리어드레스2111(g)를 사용하게 된다. 그러나, 물리어드레스2111(f)를 생성하기 위해서는 어드레스의 짜바꿈이 필요하다. 이를 위해서는 영역판정의 결과를 기다리지않으면 안되기 때문에, 지연시간이 커지고 성능이 저하한다.
그래서, 물리어드레스2111(f) 대신에 논리어드레스2101(f)를 사용하는 방법을 고안하였다.
캐시메모리의 라인사이즈가 타일폭이하의 경우는, 도 11에 표시한 바와 같이 물리어드레스2111(f)가 타일행내어드레스x0을 포함하지 않는다.
이때, 물리어드레스2111(f) 대신에 논리어드레스2101(f)를 사용함으로써의 차이는 데이터가 격납되어야 할 엔트리의 위치뿐이다. 이 차이는 논리인용 캐시메모리에서의 엔트리위치의 차이와 마찬가지이며 문제는 없다.
캐시메모리의 라인사이즈가 타일폭보다 큰 경우, 물리어드레스2111(f)는, 타일행내어드레스x0을 포함한다.
이때, 물리어드레스2111(f) 대신에 논리어드레스2101(f)를 사용하는 일, 즉, 타이링에 의한 데이터교체의 영향은 캐시메모리의 엔트리위치뿐만 아니라, 라인내부의 데이터배열에도 미친다.
여기서, 라인내부의 데이터배열의 배열바꿈은 캐시메모리의 미스시의 라인전송때에 행함으로서, 배열바꿈의 오버혜드를 라인전송오버혜드에 의해 흡수하는 일이 가능해진다.
도 12는 캐시의 라인전송시의 메모리어드레스생성제어를 설명한 것이다.
캐시메모리가 실패하면 어드레스변환에 의해, 대응하는 물리어드레스PA2111을 구하게 된다.
타일의 가로폭을 16B, 타일사이즈를 64B, 캐시라인사이즈를 32B, 데이터전송단위를 4B라고 가정한다.
물리어드레스PA2111의 하위 2비트(1:0)는 데이터전송단위내어드레스이므로, 어드레스지정불필요하다.
물리어드레스PA2111의 비트(3:2)는 타일형내어드레스이므로, 카운터에 따라 변화한다. 이 4워드로 16B가 됨으로, 캐시라인의 절반을 액세스할 수 있다.
비트(5:4)는 타일행어드레스이다. 어레이형의 액세스를 행하는 것이므로, 이것은 불변이다.
비트(31:6)은 타일어드레스이다. 이 최하위비트(6)는 캐시라인의 나머지의 절반을 액세스하기 위한 타일절환을 위하여, 카운터에 따라 변화한다.
도면중 2230은 라인전송시에 메모리어드레스를 생성하는 하드웨어를 표시한 것이다.
인크리멘터2231은 상기한 어드레스변화용의 카운터이며, 캐시라인(32B)을 8회전송하는 일이 가능하도록 3비트폭이다. 전송개시시에는 셀렉터2232에 의해 "0"이 선택되고, 전송마다 7까지 변동신호2233를 생성한다.
변동신호2233의 하위 2비트는 타일행내워드어드레스를 변화시키는 데 사용한다. 구체적으로는 배타적논리합게이트2234를 사용해서 물리어드레스PA2111의 비트(3:2)와 합성한다.
변동신호2233의 상위비트는 타일어드레스를 변화시키는데 사용한다. 구체적으로는 배타적논리합게이트2235를 사용해서 물리어드레스PA2111의 비트(6)와 합성한다.
이와 같이 구한 변동분과 불변부로부터 라인전송시의 메모리어드레스2236이 합성된다.
도 13은 캐시의 라인전송시의 메모리어드레스생성순서를 설명한 것이다.
예제의 캐시라인 2022로서, 물리, 논리어드레스다같이 어드레스 16으로부터 시작하는 32B를 생각한다. 이 라인에 포함되는 워드의 논리어드레스VA2101의 열은 (16, 20, 24, 28, 32, 36, 40, 44), 논리어드레스PA2111의 열은 (16, 20, 24, 28, 80, 84, 88, 92)이다. 캐시미스한 워드가 VA2101에서 40, PA2111에서 88의 워드였을 경우, 도면에 표시한 바와 같이 VA2101에서(40, 44, 32, 36, 24, 28, 16, 20), PA2111에서(88, 92, 80, 84, 24, 28, 16, 20)의 순으로 액세스하는 것으로 된다.
도 14는 캐시메모리의 라인사이즈가 타일폭이하의 경우의 라인전송의 상태를 표시한 것이다.
이 경우는 도 11에서 설명한 바와 같이, 논리어드레스에서 지정되는 엔트리에 대응하는 데이터가 격납된다. 즉, 타일형배열2010내의 데이터2014(a)가, 대응하는 캐시메모리의 라인 2022(a)에 전송된다.
도 14는 하부에 라인전송의 타임차트를 표시한다.
물리메모리로서 클록1051에 동기해서 동작하는 동기형의 DRAM을 생각한다.
캐시메모리가 실패한 시점에서, 버스제어부분1030에서부터 라인전송요구가 나오게된다. 이하, 그 수순을 표시한다.
먼저, 동기형DRMA내부에서 데이터를 메모리라인버퍼에 전송하기 위한 지령신호1090 및 어드레스신호1070을 각각 1091(a), 1071(a)의 타이밍에 의해 출력한다.
다음에, 2사이클비워서 데이터의 연속판독지령 및 개시어드레스를 각각 1091(b), 1071(b)의 타이밍으로 출력한다.
이들 일련의 지령 및 어드레스에 대응하는 데이터는 데이터신호1080를 사용해서, 또 2사이클비운 1081의 타이밍에 의해 2사이클에 걸쳐서 전송된다.
도 15는 캐시메모리의 라인사이즈가 타일폭에 대해서 배의 크기인 경우의 라인전송의 상태를 표시한 것이다.
이 경우는, 논리어드레스에 의해 지정되는 엔트리에 이웃하는 2개의 타일로부터 각각 대응하는 데이터가 격납된다. 즉, 타일형 배열2010내의 데이터2014(a)(b)가, 대응하는 캐시메모리의 라인 2022(a)(b)에 전송된다.
도 15하부에 라인전송의 타임차트를 표시한다. 도 14와 마찬가지의 전송을 2회반복하는 형태로 된다. 즉, 먼저의 전송에 지령 1092(a)(b), 어드레스1072(a)(b), 데이터1082(a)(b)가 가해진다.
도 16은 캐시메모리의 라인사이즈가 타일폭의 4배의 경우의 라인전송의 상태를 표시한 것이다.
이 경우는, 논리어드레스에 의해 지정되는 엔트리에 이웃하는 2개의 타일로부터 각각 대응하는 데이터가 격납된다. 즉, 타일형 배열 2010내의 데이터2014(a)(b)(c)(d)가, 대응하는 캐시메모리의 라인2022(a)(b)(c)(d)에 전송된다.
도 16하부에 라인전송의 타임차트를 표시한다.
도 15와 마찬가지의 전송을 2회반복하는 형태로 된다. 즉, 먼저의 전송에지형1093(a)(b), 1094(a)(b), 어드레스1073(a)(b), 1074(a)(b), 데이터 1083(a)(b), 1084(a)(b)가 가해진다.
도 17은 본 방식을 사용한 경우의 소프트웨어정합성에 관한 효과의 예이다. 3000(a)는 종래의 소프트웨어시스템을 표시한다.
화상영역을 참조하는 어플리케이션3010(a), 3010(a)로부터 호출되는 화상영역액세스를 위한 퍼엄웨어함수3020(a), 및 어레이형상으로 배치된 화상영역3030(a)로 구성된다.
3000(b)는 종래의 소프트웨어시스템의 화상영역3030(b)를 화소발생부고속화를 위하여 타일형의 배열로한 경우를 표시하고 있다.
이때, 화상영역을 참조하는 어플리케이션3010(b)는 변경이 없으나, 3010(b)로부터 호출되는 화상영역액세스을 위한 퍼엄웨어함수는 기본부3021(b)에 소프트웨어에 의한 어드레스변환부3022(b)가 추가된 형태로 된다.
하드웨어에 의존한 형태로 퍼엄웨어함수를 다시만들 필요가 있다.
또, 소프트웨어에 의한 변환을 행하기 때문에 연산처리가 증가하는 위에, 캐시메모리의 실패도 빈발하기 때문에 성능이 저하한다.
3000(c)는 본 방식에 의한 어드레스관리를 행하였을 경우를 표시하고 있다.
화상영역의 제어부분만이 하드웨어에 의한 어드레스변환부3031(c)를 포함하는 타일형의 화상영역3032(c)으로 된다.
어플리케이션3010(c), 3010(c)로부터 호출되는 화상영역액세스을 위한 퍼엄웨어함수3020(c)에는 변경이 없다.
또, 타일형의 데이터의 배열바꿈을 위한 오버헤드를, 캐시메모리의 라인전송에 의해 흡수하고 있으므로, 성능의 저하도 적다.
도 18은 본 방식을 사용했을 경우의 소프트웨어정합성에 관한 효과의 다른예이다.
3100(a)는 종래의 소프트웨어시스템을 표시한다.
이것은, 도 17에서 설명한 시스템에서, 화상영역을 참조하는 어플리케이션3010(a)에 추가해서 3010(a)로부터 호출되는 화상영역액세스을 위한 퍼엄웨어함수3020(a)도 어플리케이션3110(a)로서 관리하는 경우다.
3100(b)는 종래의 소프트웨어시스템의 화상영역3130(b)를 화소발생부고속화를 위하여 타일형의 배열로한 경우를 표시하고 있다.
이때, 화상영역을 참조하는 어플리케이션3110(b)는 기본부3111(b)에 소프트웨어에 의한 어드레스변환부3112(b)가 추가된 것으로 된다.
하드웨어에 의존한 형태로 어플리케이션을 다시 만들 필요가 있다.
또, 소프트웨어에 의한 변환을 행하기 때문에 연산처리가 증가하는 위에, 캐시메모리의 실패도 빈발하기 때문에 성능이 저하하다.
3100(c)는 본 방식에 의한 어드레스관리를 행한 경우를 표시하고 있다.
화상영역의 제어부분만이 하드웨어에 의한 어드레스변환부3131(c)를 포함하는 타일형의 화상영역3132(c)으로 된다.
어플리케이션3010(c)는 변경이 없다.
또, 타일형의 데이터의 배열바꿈을 위한 오버혜드를, 캐시메모리의 라인전송에 의해 흡수하고 있으므로, 성능저하도 적다.
도 19는 타일형의 배열을 채용함으로써의 화상발생부의 고속화의 효과를 표시하고 있다.
도 19의 4000은 도형사이즈와 타일사이즈를 변화시켰을때의 도형이 포함되는 타일의 평균매수를 표시하고 있다.
여기서는 타일사이즈를 256화소, 화소의 사이즈는 16비트로한다.
또, 화소발생부의 캐시라인사이즈로서 이것이 완전히 포함되는 512B를 가정한다.
예를 들면, 가로세로 8회소씩의 64화소의 도형을 발생하는 경우를 생각한다.
어레이형의 배열은 세로1화소, 가로 256화소의 타일에 대응한다.
이때의 평균타일수는 16.9이다. 화소의 액세스수 64에 다른 타일액세스의 기동레인텐시가 가산된다.
기동레이텐시는 도 14에서 설명한 바와 같이, 6사이클이다.
펼요한 데이터가 순번으로 도착한다고해도 평균사이클수는 이하와 같다.
64 + 16.9 × 6 = 165.6
타일형의 배열로서 가로세로 16화소씩의 256화소를 생각한다.
이때의 평균타일수는 3.75이다. 화소의 액세스수 64에 다른 타일액세스에 기동레이텐시가 가산된다.
다른 타일의 액세스의 페널티를 어레이형의 경우와 마찬가지로 계산하면 이하와 같이 된다.
64 + 3.75 × 6 = 86.5
양자를 비교하면 타일형의 쪽이 평균해서 1.9배나 고속인 것을 알 수 있다. 본 실시예에서는 화상처리에 대해서 tjfaud였으나, 2차원근처 데이터를 취급하는 다른예로서, 블록화된 행렬계산의 고속화를 들 수 있다. 최근, 학회에서도 보고되어 있는 행렬의 블록화기법은 큰행렬을 블록으로 구획지어, 블록마다 계산을 진행함으로써 데이터의 로컬리티를 높이고, 캐시메모리등의 데이터버퍼의 효율을 향상시킨다고 하는 사고방식이다. 그러나, 이 경우, 물리적메모리의 배치정보에 대해서는 언급되어 있지 않고, 행렬이 큰때에 빈번이 일어나는 물리메모리액세스의 고속화에 대해서는 설명되어 있지 않다. 물리메모리액세스는 타일형 배치를 채용함으로써, 근처데이터의 액세스의 고속화에 기여할 수 있다. 그러나, CPU는 논리어드레스에 대해서 어레이형참조형태를 취하기 때문에, 물리적배치와의 정합성이 나쁘고, 데이터버퍼의 효율이 나쁘다. 즉, 블록화된 프로그래밍에 있어서도 어레이형의 데이터영역이 버퍼링되어 버린다. 본 발명에 의한 불연속어드레스참조에 의해, 블록외 데이터의 버퍼링을 억제하는 일이 가능하다.
상기한 데이터처리장치에 의하면, 화소데이터의 액세스를 고속으로 행하는 일을 할 수 있다.
또, 화상처리의 대상이되는 화소데이터의 근처의 화소데이터의 처리를 간단하게 또한 고속으로 실행하는 일을 할 수 있다.
또, 기억부에 배열되어 있는 데이터를 다른 논리어드레스에 의해 액세스하는 일을 할 수 있다. 즉, 복수의 프로세서부에서 관리하는 다른 논리어드레스에 대해서, 공통되는 물리어드레스의 데이터를 효율좋게 액세스하는 일을 할 수 있다.
동일한 데이터의 처리에 대해서는, 하드웨어 또는 프로세스(소프트웨어)마다 다른 어드레싱, 즉, 어레이형상의 배열이나 타일형상의 배열등을 사용한 프로그래밍이 가능하게 된다.
화상처리의 속도가, 어레이형 어드레스로 배치한 화소데이터의 처리에 비해서, 타일형 어드레스로 배치한 화소데이터의 처리가 약 2배의 처리속도로 처리하는 것을 할 수 있다.
다음에, 도 20∼도 40을 참조해서, 본 발명에 의한 섀이딩방법 및 장치에 대해서 설명한다.
도 20은, 본 발명에 의한 섀이딩방법 및 섀이딩장치의 실시예 1의 미소영역 휘도계산방식을 설명하는 도면이다. 휘도계산방식의 처리대상이 되는 6형 5000은, 복수의 미소영역(5100)으로 이루어진다. 미소영역 5100은, 또, 적어도 1개의 화소5110으로 이루어진다.
미소영역 5100내부에 있어서의 광선에 의한 조도는, 균일하게 한다. 단, 미소영역 5100내의 각화소 5110은, 특유의 색을 가지고 있으므로, 실제의 색은, 화소5110마다 다르고, 조도가 균일한 것으로 말미아믄 불편은, 눈에 띄지 않는다. 특히, 미소영역 5100이 충분히 작으면, 전혀문제가 되지 않는다.
미소영역 5100내부에 있어서의 광선에 의한 조도는, 미소영역 5100내의 대표점 5120에 있어서의 조도에 의해 근사한다. 이 대표점5120에 있어서의 조도는, 미소영역마다 계산된다. 대표점5120의 위치는, 임의이나, 실용상 미소영역 5100의 중심점을 대표로 하면, 가장 근사정밀도가 높아진다.
대표점 5120에 있어서의 조도계산때에는, 도형내의 보간에 의해서 구한 대표점5120에 있어서의 법선벡터5140이나 광선벡터5150등의 기하학적 벡터를 사용한다. 각기하학적벡터는, 도형5000의 정점에 있어서의 기하학적벡터를 도형내부에서 선형보간해서 구한다. 또, 각기하학적벡터는, 도형 5000의 정점에 있어서의 기하학적벡터를 도형내부에서 도형마다 정해진 규칙에 따라 보간해서 구해도 된다.
도 21은, 본 발명에 의한 섀이딩장치의 실시예 1에 사용되는 미디어프로세서의 시스템구성의 일예를 표시한 블록도이다. 이 섀이딩장치는, 1칩프로세서 및 메모리통합을 기본이념으로해서, 멀티미디어의 공통기반인 미디어플랫폼의 일부로서 실현된다. 미디어플랫폼의 하드웨어는, RISC코어 및 그래픽스코어가 일체로된 미디오프로세서 6000과, 주메모리 및 화상영역이 통합된 통합메모리 7000과, 주변논리 8000로 이루어진다. 미디어플랫폼시스템은, 이들 하드웨어의 위에 미디어라이브러리를 탑재한 공통환경으로서 실현된다.
미디어프로세서 6000은, 그 내부에, 그래픽스코어의 일부인 화소발생부6100을 가지고 있다. 통합메모리 7000은, 구체적으로는, 범용 또는 전용의 메모리칩7100으로 이루어지고, 화상영역7110을 포함하고 있다. 전용메모리칩으로서는, 도형발생으로 특화해서, 비교판정부기록 및 연산부판독기능등을 구비한 메모리칩이 있다. 화소발생부6100은, 본 발명의 휘도계산방식에 따라서 도형을 구성하는 화소를 발생하고, 결과로서 얻게된 화소데이터를 화상영역7110에 기록한다.
도 22는 도 21의 미디어프로세서내의 화소발생부6100의 구성의 일예를 표시한 블록도이다. 미소영역5100의 어드레스계산부6110은, 처리대상이되는 미소영역5100의 위치를 결정한다. 미소영역5100의 위치결정은, 동시에 미소영역5100내의 대표점 5120의 위치의 결정도 겸하고 있다. 즉, 대표점5120의 위치가 항상 미소영역5100의 중심점이라고 생각하면, 미소영역의 위치와 대표점의 위치는, 1대 1로 대응한다. 미소영역 5100의 형상은, 실용적으로는 직사각형 영역으로함으로, 이 위치결정이란, 미소영역 5100의 행어드레스 및 열어드레스를 결정하는 일이다.
이렇게해서 얻게된 행어드레스 및 열어드레스는, 극좌표보간기준 6120에 입력된다. 극좌표보간기준 6120은, 미소영역5100의 행어드레스 및 열어드레스에 의거하여, 대표점 5120에 있어서의 각기하학적벡터를 보간에 의해 발생한다.
극좌표보간기6120(a)은, 스포트광원의 방향히터를 출력한다. 광원의 성질은, 도형에 관계없이 일정함으로, 이 출력은, 광원속성을 정했을때의 방향벡터 그 자체이다. 이 벡터는, Y축을 주축으로 하는 극좌표에 의해 부여된다. 즉, 성분은, 편각과 앙각의 2종류이고, 벡터의 크기는, 항상 1이다. 이와 같은 극좌표표시의 이점은, 3차원 벡터를 표현하는데 성분이 2개만으로 된다는 것, 벡터의 크기가 결정되어 있으므로 정규화의 필요가 없다는 것이다. 이하의 설명에 있어서의 좌표표시는, 이 극좌표표시이다.
극좌표보간기6120(b)는, 광선벡터의 극좌표계에 있어서의 보간을 실행한다. 미소영역5100의 행 및 열어드레스를 입력하고, 대응하는 광선벡터의 2성분을 출력한다. 극좌표보간기6120(b)의 내부는, 도형마다 부여되는 보간파라미터를 기어하는 레지스터가 있다.
선형보간의 경우에는, 파라미터의 내용은, 성분마다의 행어드레스에 대응하는 계수와, 열어드레스에 대응하는 계수와, 오프세트값과의 6파라미터이다. 하나앞의 미소영역5100에 있어서의 값을 사용하는 경우는, 하나앞의 미소영역5100으로부터의 어드레스의 차이분값을 입력으로해서, 내부에는, 각각의 차이분에 대응한 계수와 하나앞의 미소영역에 있어서의 벡터의 값과의 6파라미터를 가진다.
2차근사에 의한 보간의 경우는, 2차식의 계수를 가지고, 투시변환보정의 경우는, 선형보간의 파라미터에 가해서, 안길이정보의 보간과 그 역수계산수단을 가진다. 극좌표보간기6120(c)는, 법선벡터의 극좌표계에 있어서의 보간을 실행한다. 하드웨어의 구성은, 극좌표보간기6120(b)와 마찬가지이다. 보간파라미터 및 오프세트의 값은, 법선벡터용의 것을 사용한다.
극좌표보간기6120(d)는, 하프웨이벡터의 극좌표계에 있어서의 보간을 실행한다. 하드웨어의 구성은, 극좌표보간기6120(b)와 마찬가지이다. 보간파라미터 및 오프세트의 값은, 하프웨어벡터용의 것을 사용한다. 하프웨이벡터에 대해서는, 도 34의 휘도계산식의 설명에 있어서 상세히 설명한다.
이렇게 해서 구하게된 각기하학적벡터의 극좌표성분은, 벡터간 각도계산기군6130에 입력된다. 벡터간각도계산기군6130은, 2개의 벡터의 극좌표성분을 입력하고, 대응하는 성분마다, 그 차이분을 출력한다. 벡터간각도계산기6130(a)는, 스포트방향벡터와 광선벡터의 벡터간각도를 계산하고, 벡터간각도계산기6130(b)는, 광선벡터와 법선벡터의 벡터간각도를 계산하고, 벡터간각도계산기6130(c)는, 법선벡터와 하프웨이벡터의 벡터간각도를 계산한다.
본 발명에서는, 벡터간 각도계산기준6130에서 구한 성분이 2개있는 벡터간각도의 각각의 코사인값의 함수에 의해, 벡터끼리가 이루는 각의 코사인을 근사한다. 이 근사는, 벡터가 2개 다같이 Z축으로부터 벗어나면 오차가 커진다고하는 성질을 가지고 있으나, 도형표시에서는 이케이스의 감쇠율이 크고, 영향은 적다.
코사인계산기군6140은, 벡터간각도계산기군6130에 의해 구하게된 벡터간각도에 의해, 벡터끼리의 이루는 각의 코사인 및 그것을 사용한 함수를 계산한다. 코사인계산기6140(a)는 스포트라이트의 중심에서부터 벗아남에 따라서 감쇠하는 계수를 계산한다. 이 계수는, 코사인값의 누승으로 표시된다. 누승값은, 광원마다 특유의 정수이다. 코사인계산기6140(b)는, 광선의 도형으로의 입사각에 대응한 조도계수를 계산한다. 이 조도계수는, 코사인값으로 표시된다. 코사인계산기6140(c)는, 시선이 반사광의 중심에서부터 벗어남에 따라서 하이라이트가 감쇠하는 계수S를 계산한다. 계수S는, 코사인값의 누승으로 표시된다. 누승값은, 도형마다 특유의 정수이다.
승산기6150는, 조도계수와 스포트감쇠계수를 승산하여, 휘도의 확산광성분D를 계산한다.
휘도계산기군6160은, 승산기6150의 출력과, 광원 및 도형의 속성으로부터 휘도를 구한다. 휘도계산기6160(a)는, 확산광성분에 의해 휘도를 계산한다. 휘도계산기6160(b)는, 경면(鏡面)광성분에 의한 휘도를 계산한다.
가산기6170은, 휘도계산기군6160의 출력을 가산하여, 최종적인 화소색을 얻는다.
도 23은, 광원이 1개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역5100의 구성과 화소발생의 수순을 설명하는 도면이다. 이때는, 1화소 5110당의 광원계산수는, 1이하임으로, 미소영역5100의 크기는, 1화로 된다. 즉, 이 경우는, 화소 5110이기도하는 미소영역5100에 대해서 광원번호0의 광원인 광원0에 관한 휘도계산5160이 행하여진다. 1화소당의 계산량은, 휘도계산 l회분이다.
도 24는 광원이 2개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역5100의 구성과 화소발생의 수순을 설명하는 도면이다. 1화소당의 광원계산수를 1이하로 하기 위해서는, 미소영역5100의 크기는, 2화소이상필요하다. 미소영역5100이 2화소이상있으면, 형상을 결정할 필요가 있다. 화소의 발생순이 기본적으로 가로방향이기 때문에, 실용적으로는, 가로방향으로 연속한 2화소를 미소영역5100으로 하는 것이 바람직하다.
2화소에 대해서 1광원당 1회의 휘도를 계산하나, 하드웨어량 삭감 때문에, 광원마다의 휘도계산을 동시에는 실행할 수 없다. 또, 모든 광원에 대한 휘도계산이 끝난 후에 화소를 발생시키는 방식에서는, 레이텐시가 길어지고, 성능이 저하하는 위에, 광원수에 의한 변동도 있어, 제어가 복잡화한다. 그래서, 본 발명에 있어서는, 휘도계산처리와 화소발생처리를 파이프라인실행할 수 있는 방법을 채용하였다.
이 방식은, 광원마다 1화소어긋난 미소영역을 정의하고, 미소영역의 최초의 화소발생에 족하도록 휘도계산하고, 다른 광원에 의한 휘도계산에는, 이미 계산된 값을 사용하는 방법이다. 도 24에 있어서 광원 0에 대응하는 미소영역을 5100(0), 광원 1에 대응하는 미소영역을 5100(1)로 한다. 이 미소영역에서 계산되는 최초의 화소 즉 51100(0)의 좌측의 화소의 휘도를 얻을려면, 광원(0)에 대응하는 휘도를 계산하고, 1개 좌측의 화소와 당해화소에 대해서 이미 계산되어 있는 광원(1)에 의한 휘도를 가산해서, 이 화소의 휘도로한다. 다음에, 5100(0)의 우측의 화소 즉 5100(1)의 좌측의 화소를 계산하려면, 먼저 구하게된 광원(0)에 대한 휘도와, 새로히 계산되는 광원 1에 대한 휘도를 가산하여, 이 화소의 휘도로 한다. 이와 같이 하면, 1화소당의 계산량은, 휘도계산 1회분이된다.
도 25내지 도 28은, 광원이 4개의 경우를 표시하고 있다. 이 경우, 미소영역은, 4화소로 구성한다.
도 25는, 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 수순을 설명하는 도면이다. 도 25는, 미소영역의 형상을 가로로길게한 경우를 설명하고 있다. 이 경우의 동작은, 도 5의 방식의 연장이라고 생각된다.
도 26은, 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 수순을 설명하는 도면이다. 도 26(a)는, 미소영역의 형상을 정사각형으로 했을 경우를 설명하고 있다. 도 25의 방식과는, 화소발생순이 2차원적으로 되는 점에 있어서 다르다. 도 26(b)는, 2차원적화소발생순5111을 표시하고 있다. 이 순서에 따라서, 화소가 2차원적으로 가까이에 위치하도록 지그자그의 경로를 취한다.
도 27은, 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 수순을 설명하는 도면이다. 도 27(a)는, 도 26(a)의 휘도계산수순중, 광원 0에 관한 부분만을 뽑아낸 것이다. 미소영역5100(0)은, 도면중 굵은선으로 둘러싸인 부분이다. 도 26(b)에 표시한 화소발생순서에 따라서, 경로 5111을 취한다. 즉, 좌상→좌하→우하→우상의 순서이다.
도 27(b)는, 도 26(a)의 휘도계산수순중, 광원 1에 관한 부분만을 뽑아낸 것이다. 미소영역5100(1)은, 도면중 굵은 선으로 둘러싸인 부분이다. 도 26(b)에 표시한 화소발생순서에 따라, 경로5111을 취한다. 이것은, 지그자그경로중, 도 27(a)의 미소영역으로부터 1화소분만큼 어긋난 것이다. 좌하→우하→상→우상의 순서이다.
도 28은, 광원이 4개의 경우에 대해서, 실시예 1에 의한 미소영역휘도계산방식의 미소영역의 구성과 화소발생의 수순을 설명하는 도면이다. 도 28(a)는, 도 26(a)의 휘도계산수순설명도중, 광원 2에 관한 부분만을 뽑아낸 것이다. 미소영역5100(2)는, 도면중 굵은선으로 둘러싸인 부분이다. 도 26(b)에 표시한 화소발생순서에 따라, 경로5111을 취한다. 이것은, 지그자그경로중, 도 27(b)의 미소영역으로부터 1화소분만큼 어긋난 것이다. 스캔순서는, 좌하→우상→우상→우하이다. 도 28(b)는, 도 26(a)의 휘도계산수순설명도중, 광원 3에 관한 부분반을 뽑아낸 것이다. 미소영역5100(3)은, 도면중 굵은선으로 둘러싸인 부분이다. 도 26(b)에 표시한 화소발생순서에 따라, 경로5111을 취한다. 이것은, 지그자그경로중, 도 28(a)의 미소영역으로부터 1화소분만큼 어긋난 것이다. 스캔순서는, 좌상→우상→하→우하의 순서이다.
도 29는, 실시예 1에 의한 극좌표의 보간방식을 설명하는 도면이다. 도 29(a)는, 극좌표계에 의해 표시한 법선벡터를 보간하는 경우를 설명하고 있다. 도형내 미소영역5100의 대표점5120에 있어서의 법선벡터5140은, 도형의 양단부에 있어서의 법선벡터5141 및 5142를 보간해서 얻을 수 있다. 5141 및 5142자체도, 마찬가지로, 도형정점에 대해서 부여되는 법선벡터를 보간해서 구할 수 있다. 보간의 방법은, 도 22에서 설명했으므로, 생략한다.
도 29(b)는, 법선벡터와 마찬가지로 극좌표계에 의해 표시한 광선벡터5150을, 5151및 5152로부터 보간에 의해서 구하는 경우를 설명하고 있다.
도 29(c)는, 이상의 보간에 의해 얻게된 2개의 벡터로부터 도형내 미소영역5100마다의 조도를 계산하는 모양을 표시하고 있다. 벡터끼리의 이루는 각은, 5120에 있어서의 값이, 5121이나 5122에 있어서의 값보다도 작고, 도형내에 하이라이트를 발생시킬 수 있다.
도 30은, 실시예 1에 의한 극좌표보간의 벡터궤적을 설명하는 도면이다. 즉, 극좌표보간을 사용한 경우의 궤적5143을 표시하고 있다. 극좌표의 2개의 성분에 의해 보간함으로, 궤적은 큰원의 코스를 취하지 않으나, 큰원코스자체가 하나의 근사임으로 스포트라이트나 하이라이트를 표현하는데는, 극좌표보간으로도 충분하다.
도 31∼도 33은, 극좌표보간에 의한 벡터궤적을 시뮬레이트한 결과이다. 도 31은, (-π/4, -π/4)로부터 (π/4, π/4)까지 보간한 결과를 표시하고, 도 32는, (π/4, -π/4)로부터 (π/4, π/4)까지 보간한 결과를 표시하고, 도 33은, (-π/4, π/4)로부터 (π/4, π/4)까지 보간한 결과를 표시하고 있다.
도 34는, 실시예 1에 의한 휘도계산의 개요 및 계산식을 설명하는 도면이다. 각화소의 휘도1는, 각 광원에 대한 주위반사성분Iai와, 확산반사성분Idi와, 경면반사성분Isi와의 총계로서 표시된다.
주위반사성분Ia는, 주위반사계수Ka와, 물체의 색Oc와, 광원의 색 Lc와의 적으로 표시된다.
확산반사성분Id는, 확산반사계수Kd와, 물체의 색Oc와, 법선벡터N 및 광원방향벡터L의 내적과, 광원벡터Ldir 및 광원방향벡터L의 내적의 Lconc누승과, 광원의 색Lc와, 감쇠함수Latt와의 적으로 표시된다. 경면반사성분Is는, 경면반사계수Ks와, 물체의 경면색Sc와, 법선벡터N 및 하프웨이벡터H의 내적의 Sconc누승과, 광원벡터Ldir 및 광원방향벡터L의 내적의 Lconc누승과, 광원의 색Lc와, 감쇠함수 Latt와의 적으로 표시된다.
물체의 색Oc는, 도형에 대한 조도D와, 도형표면의 모양을 표시하는 텍스처색과, 광선강도와의 적이다. 광선강도는, 광원색에 계수를 승산한 값과, 환경광성분의 값을 가산한 값이다. 하프웨이벡터11H0은, 시선리터11V0과 광원방향벡터5150과의 이루는 각을 2등분하는 벡터이며, 이 하프웨이벡터11H0과 법선벡터5140과의 이루는 각이 작을수록, 하이라이트가 커진다.
도 35는, 보간해서 얻게된 벡터끼리의 실시예 1에 의한 코사인 근사계산의 개요 및 계산식을 설명하는 도면이다. 극좌표의 각성분마다의 차이분의 코사인의 적에 의해 근사한다. 이 근사계산방식의 오차는, 실용상, 문제가 되지 않는다. 또, 이 근사계산방식은, 다음에 표시한 하드웨어량 삭감을 위한 이터리브방식에도 적합해 있다.
도 36은, 하드웨어량을 삭감하기 위하여, 실시예 1에 의한 극좌표보간의 성분을 사용한 인터리브방식을 설명하는 도면이다. 본래라면, 보간되어서 구해지는 벡터5150을 사용해야 할 것이다. 이에 대해, 극좌표의 어느 한쪽의 성분에만, 하나앞의 미소영역에 있어서의 값5150-1을 사용하면, 본래 각성분마다, 즉, 2회에 걸쳐 계산해야할 코사인계산을 1회로 마치게 할 수 있다.
도 37은, 실시예 1에 의한 극좌표보간의 성분을 사용한 인터리브방식을 설명하는 도면이다. 즉, 인터리브방식을 실현하기 위한 코사인계산수단6140의 구성을 표시한 것이다. 갱신하는 코사인값은, 극좌표성분의 한쪽뿐이므로, 입력을 스위치6141에 의해 절환한다. 입력된 값에 따라, 코사인테이블6142를 참조해서, 선택된 성분에 대응하는 코사인값을 얻는다. 선택되지 않았던 쪽의 코사인값은, 전회값기어레지스터5243 또는 6144에 유지되어 있으며, 절환스위치6145의 절환에 따라서 선택된다. 이 2개의 코사인값은, 승산기 6164에 의해서 곱셈되어, 2개의 벡터가 이루는 각의 코사인의 근사치를 얻게된다.
도38은, 실시예 1에 의한 코사인근사계산용 테이블을 설명하는 도면이다. 코사인근사계산용 테이블 6142(a),(b),(c),…는, 코사인계산을 위한 테이블을 표시하고 있다. 각 테이블은, 목적에 따라서 각각 다른 데이터를 기억하고 있다.
도39는, 실시예 1에 의한 휘도계산부6160의 구성의 일예를 설명하는 도면이다. 휘도계산부6160은, 계수승산기6161과, 광선색승산기6162와, 미소영역내화소계산을 위한 딜레이에더6163과, 텍스처색과의 승산기 6165로 이루어진다.
도 40은, 실시예 1에 의한 섀이딩장치의 미소영역내에서 광원마다 휘도를 가산하는 가산기를 설명하는 도면이다. 광원이 복수의 경우는, 광원수예 따른 가산기를 포함한 딜레이애더6163이 필요하게 된다. 이 경우의 딜레이애더6163은, 내부에 선임선출(FIFO)버퍼6166을 가지고, 4회앞으로까지 거슬러올라가서 휘도값을 참조할 수 있다. 가산기6167은, 이들 휘도를 가산해서 미소영역에 있어서의 4광원분의 근사휘도치를 출력할 수 있다.
도 41은, 본 발명에 의한 섀이딩장치의 실시에 2의 미소영역휘도계산방식의 하드웨어구성과 처리수순을 합쳐서 표시한 도면이다. 일반적으로, 묘화장치의 섀이딩수단은, 정점계산부s00과 화소계산부s10과의 2개의 부분으로 이루어진다. 정점계산부s00은, 입체도형을 구성하는 면의 정점에 있어서의 각종의 파라미터를 계산한다. 정점계산부s00에서 취급하는 파라미터중, 본 발명과 관려되는 것은, 법선벡터N의 값, 광선벡터Ldir의 값등의 벡터값이 주이다. 화소계산부s10은, 면내의 각점에 있어서의 휘도를 계산한다. 실제의 시스템에서는, 면마다 처리하는 정점계산부s00은, 주로 소프트웨어에 의한 처리에 적합하며, 점마다 처리하는 화소계산부s10은, 주로 하드웨어에 의한 처리에 적합하다. 물론, 각각을 하드웨어만므로도, 소프트웨어만으로도 실현가능하다.
본 발명에서는, 점마다 실행하는 화소계산부s10의 처리를 경감하고, 고속화하는 동시에, 하드웨어를 삭감하는 것도 목표로 하고 있다. 본 발명에 있어서는, 정점계산부s00에 있어서, 입체도형을 구성하는 면과 정규모델좌표계에 있어서의 면과의 대응관계를 구하고, 화소계산부s10에의 인터페이스데이터를 형성한다. 그것에는, 광원과 면과의 위치관계의 계산s01, 정점의 모델좌표계에 있어서의 좌표값의 계산s02를 거쳐서, 면내보간계수계산s03을 실행한다. 이 인터페이스데이터를 받는 화소계산부s10에서는, 실제의 보간계산s11을 행하고, 면내의 대응하는 모델좌표계에 있어서의 각종 파라미터를 얻는다. 이들 파라미터에 의거해서, 휘도계산s12를 실행하여, 섀이딩한다.
도 42는, 실시예 2에 사용하는 정규화모델좌표계의 개념을 설명하는 도면이다. 즉, 실공간으로부터 정규모델좌표계로의 변환의 물리적이미지를 설명하는 도면이다. 실공간은, 정규직교좌표계c00상에서 정의된다. 이 실공간상의 도형tri00 및 이것을 비추어 밝히는 광원light00을 생각한다. 도형tri00의 정점p1, p2, p3에는, 법선벡터N1, N2, N3이 각각 정의 되는 동시에, 정점계산부s00의 연산에 의해, 광원의 방향을 표시하는 벡터L1, L2, L3도 각각 계산되어 있다. 정규모델좌표계c01은, lisht00으로부터 tri00으로 내린 수직선의 발에 대응하는 점을 원점으로하고, light00에 대응하는 점 light01이 하나의 축을 표시하는 단위벡터가 되도록 변환한 좌표계이다. 이 축을 w로하고, 도형과 공면관계에 있는 나머지의 2축을 u, v로하면, tri00의 각정점은, 대응하는 좌표값으로 사상(寫像)되어, 정규모델좌표계에 있어서의 도형tri01을 형성한다. tri01의 각정점에 있어서의 벡터는, w축의 단위벡터와 일치하고, 광의 벡터는, light01을 바라는 백터와 일치한다.
도 43은, 실시예 2의 미소영역휘도계산방식과 종래방식을 비교해서 표시한 도면이다. 도 43(a)는, 종래예에서 거론한 phong shading을 해설하는 도면이다.
각점에 있어서의 법선이나 광선의 방향을 계산하면, 스포트라이트, 하이라이트, 순조로운 섀이딩이 가능하게 된다. tri00내의 점P에 있어서의 법선벡터N는, N1, N2, N3으로부터 보간에 의해서 구하고, 광의 벡터L은, light00과의 위치관계로부터 재계산한다. 좌표계c00이 실공간이기 때문에, light00과 도형 tri00과의 위치관계는 임의이며, 광의 계산은, 이 임의성을 만족하고, 부동수소점 또는 것에 준하는 계산이 필요하다.
도 43(b)은, 고러드(Gouraud)섀이딩을 해설하는 도면이다. 이 수법에서는, 도형정점에 있어서의 휘도를 정점계산부에서 계산한 후, 휘도를 면내에서 보간하는 것이다. 단순한 휘도의 선형보간이므로, 면내에서의 스포트라이트나 하이라이트의 표현이 불가능하고, 섀이딩의 순조로움도 뒤떨어진다. 이 수법은, 화소계산부에 있어서의 연산량이 비교적 적어서 된다고하는 일도 있어서, 많은 시스템에 채용되고 있다. 그러나, Phog섀이딩과 동등한 표현력을 얻을려면, 도 43(c)와 같이 도형분할하고, 휘도계산의 포인트수 즉 정점수를 증가시킬 필요가 있다. 그러나, 분할에 의해 순조로움을 표현하려면, 3자릿수이상의 분할이 필수이며, 리얼타임표시에는 실용적이 아니다.
도 44는, 실시예 2의 휘도계산의 개요 및 계산식을 설명하는 도면이다. 어떤 화소의 휘도는, 식(1)에 표시한 바와 같이, 광원마다의 그 화소의 휘도의 총합에 의해 구할 수 있다. 도 34에 관련해서 이미 설명한 바와 같이, 광원마다의 휘도는, 주위반사성분Ia와, 확산반사성분Id와, 경면반사성분Is로 이루어진다. 주위반사성분Ia는, 식(Ia)와 같이, 물체속성값Ka, 물체색Oc, 광원색Lc만으로 결정된다. 확산광성분Id 및 반사광 성분Is는, 광원의 종류에 따라 다르나, 식(1b)∼(1d)와 같이 구할 수 있다. 여기서, Kd, Ks는, 물체속성값, Sc는, 반사색, Latt는, 광원으로부터의 거리에 의한 감쇠항이다. N은 법선벡터이고, L은 광원벡터이고, V는 시(視)점벡터이고, R은 반사벡터이다. Ldir은 광원이 스포트라이트시의 방향벡터이다. N과 L과의 내적이 클수록, 광이면의 정면으로부터 조사되므로 밝다. 또, V와 R과의 내적이 클수록, 반사광이 많고, L과 Ldir과의 내적이 클수록, 스포트라이트의 중심에 가까이 밝다. V와 R과의 내적에는, Sconc라는 멱수가 관계되어, 하이라이트의 범위를 샤프하게하고, L과 Ldir과의 내적에는 Lconc라는 역수가 관계되어, 스포트라이트의 범위를 샤프하게 한다. 본 발명에서는, 화소마다 필요한 이들 내적계산을 간략화해서 계산을 실현한다.
도 45는, 실시예 2의 실공간에 있어서의 각종벡터의 위치관계를 표시한 도면이며, 도 46은, 실시예 2의 정규화모델좌표계에 있어서의 각종 벡터의 위치관계를 표시한 도면이다. 도 45 및 도 46에 의해, 실공간도형을 정규모델좌표계예 사상하기 위한 수순을 설명한다.
실공간에 있어서의 면의 방정식은, 도 45속의 식(2a)에 의해 표시된다. tri00을 포함한 평면의 방정식의 계수는, 각정점을 면의 방정식에 대입하면, 식(2b)을 거쳐서 식(2c)와 같이 구할 수 있다. 또, 광원과 평면과의 거리도 식(2)과 같이 구할수 있다. 면의 방정식의 계수는,면의 법선벡터N이기도하다. 이 법선벡터N에 의거해서, 정규모델좌표계의 w축에 대응하는 벡터w가 구해진다. 나머지의 평면상의 2축u, v는, 스포트방향벡터를 따른 방향을 u로하고, 그것과 직교하는 방향을 v로 한다. 광원으로부터 평면에 내린 수직선의 발pO에서본 평면상의 점p의 위치는, 광원pL로부터 p로의 벡터u 및 v에 의한 내적계산을 실시한 것이다. 정규모델좌표계에 있어서는, 면과 광원과의 거리가 1로 정규화됨으로, 구하게된 위치관계를 일률적으로 h에 의해 나눗셈한다. 시점위치도 마찬가지로 변환된다. 즉, w축을 따른 거리는, 실공간에 있어서의 거리를 h에 의해 나눗셈한 것이며, 평면상의 위치관계는, 광원pL로부터 시점000으로의 벡터에 u 및 v에 의한 내적계산을 실시한 것이다. 변환후의 도형은, 도 46과 같이 된다. 도형은 (u, v)평면상에 있으므로, 필요한 좌표값은 이 2축좌표에 의해서만, 일의적으로 결정된다. 스포트라이트의 중심방향선이 평면과 교차하는 점pS도, 마찬가지로해서, u축상의 점(uS, 0)으로 변환된다.
도 47은, 실시예 2에 있어서의 법센벡터의 경사를 보정하는 방식을 설명하는 도면이다. 즉, 상기한 바와 같이 해서 구하게된 변환후의 정점에 대하여, 그 법선벡터의 경사에 의한 보정을 행하는 방법이다. 정점p1, p2, p3이 보정되어서, 각각 정점pl', p2', p3'로 된다. 이 보정은, 광원을 바라다보는 벡터와 법선벡터와의 위치관계를 유지하면서, 법선이 w방향을 향하도록, 점을 이동함으로써 얻을 수 있다. 이 이동을 위하여, 원래의 점의 상공에 임시의 광원을 설정하고, 이 광원으로부터의 보정으로 대용한다. 이 조작은, 법선이 원래w방향을 향하고 있었을 경우에 이동량이 0이 되도록 하기 위해서이다. 또, 이 이동량은, 참광원으로부터의 거리와 정(正)의 상관관계가 있으므로, 임시의 광원의 높이를 원래의 점과 원점과의 거리에 비례한 형태에 의해 취한다. 이때, 이동량dp는, 도 47속의 식(3a)∼(3c)와 같이 된다. 법선보정된 정점p1', p2', p3'를 실공간의 정점p1, p2, p3에 선형으로 대응시키면, 정규모델좌표계에 있어서의 화소마다 휘도계산결과를, 실공간의 점에 대응시킬 수 있다.
도 48은, 실시예 2의 정규화모델좌표계에 있어서의 확산성분의 감쇠항의 계산수순을 표시한 도면이다. 확산성분을 위한 감쇠항은, 광원방향벡터L과 법선벡터n'와의 이루는 각θ의 코사인에 비례한다. 법선벡터n'는, 먼저의 보정에 의해 축w와 일치해있으므로, 광원방향벡터L의 w성분의 구하는 값이다. 이 값은, 도 48속의 식(4)와 같이 표시된다.
도 49는, 실시예 2의 정규화모델좌표계에 있어서의 스포트방향에 따른 감쇠항의 계산의 수순을 표시한 도면이다. 스포트방향에 따른 감쇠항은, 광원방향벡터L과 역스포트방향벡터(-Ldir)와의 이루는 각β의 코사인의 누승에 비례한다. 화소마다 변동하는 것은, 각β의 코사인값이므로, 여기서는, 이 구하는 방식을 도 49속의 식(5) 및 (5a)∼(5c)를 사용해서 설명한다. 식속에서 uO은, 도 49속의 us에 대응한다. 또, range(f, a, b)는, f가 구간[a, b]에 있을때만 그값을 반환하고, 그 이외는 0을 반환하는 함수이다. L은, 점에서부터 광원을 바라다보는 벡터, (-Ldir)는, 점us로부터 광원을 바라다보는 벡터임으로, 단순히 이들의 코사인을 계산한다.
도 50은, 실시예 20의 정규화모델좌표계에 있어서의 반사광성분의 감쇠항의 계산수순을 표시하는 도면이다. 반사광성분의 감쇠항은, 반사방향벡터R과 시점방향벡터V와의 이루는 각γ의 코사인의 누승에 비례한다. 화소마다 변동하는 것은, 각γ의 코사인값이므로, 여기서는, 이의구하는 방식을 도 50속의 식(6)을 사용해서 설명한다. V는, 점에서부터 시점을 바라다보는 벡터이며, 정규모델좌표계에의 변환때에 원점에 대응하는 좌표로서 변환되어 있다. R은, 점에서부터 광원을 바라다보는 벡터중(u, v)성분만을 부호반전한 벡터이다. 이들을 사용해서, 단순히 코사인을 계산한다.
도 51은, 본 발명에 의한 섀이딩장치의 실시예 2에 사용되는 미디어프로세서의 시스템구성의 일예를 표시한 블록도이다. 이 섀이딩장치는, 1칩프로세서 및 메모리통합을 기본이념으로 해서, 멀티미디어의 공통기반인 미디어플래트폼의 일부로서 실현된다. 미디오플래트폼의 하드웨어는, RISC코어 및 그래픽스코어가 일체로 된 미디어프로세서6000과, 주메모리 및 화상영역이 통합된 통합메모리 7000와, 주변논리 8000으로 이루어진다. 미디어플래트폼시스템은, 이들의 하드웨어의 위에 미디어라이브러리를 탑재한 공통환경으로서 실현된다.
미디어프로세서 6000은, 그 내부에 그래픽스코어의 일부인 화소발생부6100을 가지고 있다. 통합메모리 7000은, 범용 또는 전용의 메모리칩 7100으로 이루어지고, 화상영역 3110을 포함하고 있다. 전용의 메모리칩으로서는, 도형발생으로 특화한 비교판정부기록연산부 판독기능등을 가진 메모리가 있다. 화소발생부6100은, 도형을 구성하는 화소를 본 발명의 휘도계산방식에 따라서 발생하고, 결과로서 얻어진 화상데이터를 화상영역 7110에 기록한다.
도 52는, 화소발생부 6100의 구성의 일예를 표시한 블록도이다. 미소영역어드레스계산부 6110은, 대상이 되는 미소영역의 위치를 결정한다. 미소영역의 위치결정은, 미소영역내의 대표점의 위치의 결정도 겸하고 있다. 대표점의 위치가 항상 미소영역의 중심점이라 생각하면, 미소영역위치와 대표점위치는, 1대 1로 대응한다. 미소영역의 형상은, 실용적으로는, 직사각형영역으로함으로, 위치결정은, 미소영역의 행어드레스 및 열어드레스를 결정하는 일이다. 이 미소영역에는, 적어도 1개의 화소가 대응한다.
이와 같이 해서 얻게된 행 및 열어드레스는, 보간계수/내면정수발생기군6120(a)∼(d)에 입력된다. 보간계수/내면정수발생기군6120(a)∼(d)는, 미소영역의 행 및 열어드레스에 의거해서, 대표점에 있어서의 정규모델좌표계의 좌표를 보간에 의해 발생한다. 6120(a)는, 광원과의 거리에 따른 감쇠항Latt를 면내에서 보간한다. 6120(b)는, 대응하는 정규화모델좌표계에 있어서의 좌표값을 보간하고, 6120(c)는, 스포트광원관련의 정수를 출력하고, 6120(d)는, 반사광성분관련정수를 출력한다.
이들 보간값 또는 정수를 사용해서 먼저 표시한 식(1), (4), (5), (6)에 따라서, 휘도값을 계산한다. 연산기6130(a)는, 식(5)에 의거한 스포트감쇠항을 계산한다. 연산기6130(b)는, 식(4)에 의거한 확산성분에 의한 감쇠항을 계산한다. 연산기6130(c)는, 식(6)에 의거한 반사광성분에 의한 감쇠항을 계산한다. 연산기6140(a),(b),(c) 및 그 이후의 연산기에 있어서는, 이들 값을 사용해서 휘도를 계산한다.
도 53은, 실시예 2에 있어서의 묘화지령포맷의 일예를 표시한 도면이며, 상기 연산기6130(a)이후의 휘도계산부를 기동하기 위한 지령포맷을 표시하고 있다. 1워드 32비트로서, 최초의 6워드에는, 묘화도형(삼각형)의 형상정보를 격납하고, 다음의 2워드에는, 안길이정보의 보간계수를 격납하고, 또 다음의 4워드에는, 텍스처좌표에 대한 보간계수정보를 격납한다. 그 이후가, 휘도관계의 파라미터이고, 광원당 7워드의 정보로 이루어진다. 형상정보중 최초의 2B는, 지령ID이다. 지령ID는, 도형묘화라는 것, 상변이 수평인지 어떤지, 광원수가 몇 개인지 등의 정보를 부여한다. 다음의 2B는, 묘화개시의 Y좌표이다. 2워드째는, 도형의 세로사이즈의 정보를 포함하고 있다. h1은, 개시점으로부터 다음의 정점까지의 높이를 표시하고, h2는 다음의 정점에서부터 최후의 정점까지의 높이를 표시하고 있다. 도형의 형상에 의해, 이들 값이 0으로 되는 경우도 있을 수 있다. 3워드째이후는 변의 경사정보를 부여한다. h1, h2에 의해 값이 존재하지 않는 케이스도 있다. 그 때는, 지령ID 또는 h1, h2에 의해 판정한다.
안길이보간정보 및 텍스처좌표보간정보는, 각각x, y, z에 관한 계수와 지령부로 이루어진다. 실공간에 있어서의 x, y, z값과의 연산을 실행하고, 보간후의 값을 얻는다. 지수부는, 실공간에 대한 정밀도를 확보하기 위하여, x, y, z값에 공통의 값을 1개 설정하였다. 안길이정보에 관해서는, 후에 투시변환을 거는 형편상, 안길이의 역수를 보간하는 방식으로 하고 있다.
휘도계산관련의 정보에 대해서 설명한다. 1워드째는, 거리에 의한 감쇠항성분의 보간파라미터이다. 휘도값은, 최종적으로 8비트정도임으로, 각계수도 8비트로 하고 있다. 보간방법은, 안길이나 텍스처의 보간의 경우와 마찬가지이다. 이어지는 4워드는, 정규모델좌표의 보간정보이다. 계산방법은, 안길이나 텍스처의 경우와 마찬가지이다. 최후의 2워드는, 휘도계산에 필요한 도형마다의 정수이다. 복수의 도형에 공통의 값에 대해서는, 다른 지령에 의해 설정한다. 이 2워드중, 최초의 2B는, 식(5)에서 표시한 스포트라이트에 의한 감시항계산에 필요한 정수이다. 나머지의 2B씩의 3개의 파라미터는, 식(6)에서 표시한 반사광성분계산에 필요한 정수이다.
도 54∼도 59는, 미소영역의 휘도계산수순을 몇 개의 경우에 대해서 설명한 것이다.
도 54는, 광원이 1개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생수순을 표시한 도면이다. 이때는 1화소당의 광원게산수는 1이하이므로, 미소영역의 크기는 1화소로 충분하다. 즉, 화소 5110이기도한 미소영역 5100에 대하여, 광원번호0의 광원인 광원 0에 관한 휘도계산 5160이 행하여진다. 1화소당의 계산량은, 휘도계산 1회분이다.
도 55는, 광원이 2개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생수순을 표시한 도면이다. 광원이 2개의 경우의 1화소당의 광원계산수를 1이하로 하려면, 미소영역의 크기는 2화소이상 필요하다. 미소영역이 2화소이상있으면, 형상을 결정할 필요가 있으나, 화소의 발생순서는 기본적으로 가로방향임으로, 실용적으로는 가로방향으로 연속한 2화소를 미소영역으로 하는 것이 바람직하다. 2화소에 대해서 1광원당 1회의 휘도를 계산하나, 하드웨어량 삭감 때문에, 광원마다의 휘도계산을 동시에는 실행할 수 없다. 또, 모든 광원에 대한 휘도계산이 끝난뒤에 화소를 발생시키는 방식에서는, 레이텐시가 길어지고, 성능이 저하하는 위에, 광원수에 의한 변동도있어, 제어가 복잡화된다. 그래서, 본 실시예 2에 있어서도, 휘도계산처리와 화소발생처리를 파이프라인실행할 수 있는 방식을 채용하였다.
이 방식은, 광원마다 1화소어긋난 미소영역을 정의하고, 미소영역의 최초의 화소발생에 족하도록 휘도계산하고, 다른 광원에 의한 휘도계산에는, 이미 계산된 값을 사용하는 방법이다. 도 55에 있어서, 광원 0에 대응하는 미소영역을 5100(0)으로하고, 광원 1에 대응하는 미소영역을 5100(1)로 한다. 5100(0)의 좌측의 화소 즉 이 미소영역에서 계산되는 최초의 화소를 계산하려면, 광원0의 휘도계산을 실행하고, 그 화소에 대해서 이미 계산되어 있는 광원 1에 의한 휘도계산값을 가산해서, 이 화소를 휘도로 한다.
5100(0)의 우측의 화소즉 5100(1)의 좌측의 화소를 계산하려면, 먼저 구하게 된 광원 0에 대한 휘도값과 새로이 계산되는 광원 1에 대한 휘도값을 가산하고, 이 화소의 휘도로 한다. 이와 같이 하면, 1화소당의 계산량은 휘도계산 1회분이다.
도 56은, 광원수가 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생수순을 표시한 도면이다. 이 경우는, 미소영역은 4화소에 의해 구성한다. 도 56은, 미소영역의 형상을 가로로 긴 것으로한 경우임으로, 도 55의 방식의 연장으로 생각할 수 있다.
도 57(a)는, 광원수가 4개의 경우에 대해서, 미소영역의 형상을 정사각형으로 한 경우의 실시예 2의 미소영역의 구성 및 화소발생수순을 표시한 도면이다. 이 경우에는, 화소발생순서가 2차원적으로 된다. 도 57(b)는, 2차원적 화소발생순서 5111을 표시하고 있다. 이 순서에 따라, 화소가 2차원적으로 가까이에 위치하도록, 지그자그의 경로를 취한다.
도 58은, 광원수가 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생수순을 표시한 도면이다. 도 58(a)는, 도 57(a)의 휘도계산수순설명도중, 광원0에 관한 부분만을 뽑아낸 것이다. 미소영역1100(0)은, 도면중 굵은 선으로 둘러싸인 부분이다. 도 57(b)에 표시한 화소발생순서에 따라, 경로 5111을 취한다. 즉, 좌상→좌하→우하→우상의 순서이다.
도 58(b)는, 도 57(a)의 휘도계산순서설명도중, 광원 1에 관한 부분만을 뽑아낸 것이다. 미소영역5100(1)은, 도면중 굵은 선으로 둘러싸인 부분이다. 도 57(b)에 표시한 화소발생순서에 따라, 경로5111을 취한다. 지그자그경로중, 도 58(a)의 미소영역으로부터 1화소분만큼 어긋나 있다. 스캔은, 좌하→우하→상→우상의 순이다.
도 59는, 광원수가 4개의 경우에 대해서, 실시예 2의 미소영역의 구성 및 화소발생수순을 표시한 도면이다. 도 59(a)는, 도 57(a)의 휘도계산수순설명도중, 광원 2에 관한 부분만을 뽑아낸 것이다. 미소영역5100(2)는, 도면중 굵은선으로 둘러싸인 부분이다. 도 57(b)에 표시한 화소발생순서에 따라, 경로 5111을 취한다. 지그자그경로중, 도 58(b)의 미소영역으로부터 1화소분만큼 어긋나 있다. 스캔은, 좌하→좌상→우→하이다.
도 59(b)는, 도 57(a)의 휘도계산수순설명도중, 광원(3)에 관한 부분만을 뽑아낸 것이다. 미소영역5100(3)은 도면중 굵은선으로 둘러싸인 부분이다. 도 57(b)에 표시한 화소순서에 따라, 경로5111을 취한다. 이것은 지그자그경로중, 도 59(a)의 미소영역으로부터 1화소분만큼 어긋나있다. 스캔은, 좌상→우상→하→우하이다.
도 60은, 실시예 2의 휘도계산부 6160의 구성의 일예를 표시한 블록도이다. 휘도계산부분 6160은, 계수승산기 6161과, 광선색승산기6162와, 미소영역내 화소계산을 위한 딜레이애더6163과, 텍스처색과의 승산기 6165로 이루어진다.
도 61은, 실시예 2의 미소영역내에서 광원마다에 휘도를 가산하는 가산기 즉 딜레이애더6163의 구성의 일예를 표시한 도면이다. 딜레이애더 6163은, 내부에 선임선출(FIFO)버퍼6166을 가지고, 4회전까지 거슬러올라가서 휘도값을 참조할 수 있다. 가산기6167은, 이들 휘도를 가산해서 미소영역에 있어서의 4광원분의 근사휘도값을 출력한다.
도 62는, 실시예 2의 그림자영역특정알고리즘을 설명하는 도면이다. 도형tri00과 광원 light00과의 사이에, 그림자를 생성하는 도형tri10이 있는 경우를 생각한다. 도형 tri00위의 어느부분이 그림자영역이 되는지는, 이하의 알고리즘에 의해 결정된다. 그림자가 되는 볼륨을 형성하는 도형stri10, stri11을 정의한다. 볼륨과 도형tri00과의 교차하는 부분이 그림자영역이다. 그 부분을 특정하는 방법을 도 43(b)에 의해 설명한다. 그림자가 보이는 영역은, 시점0으로부터 tri00위의 점을 봤을 때, 도형stri10, stri11등을 홀수회 가로지른 점이다. 시점으로부터의 보는 방식은, 묘화되는 도형 그자체임으로, 도형stri10, stri11등을 몇번가로질렀는지를 마스크정보로서 묘화하면 된다. 그래서, 마스크정보플랜으로 묘화하기 위한 묘화지령을 준비한다. 이 지령은, 마스크플랜으로의 묘화인 것을 표시하고 있는 외에, 현상정보와 안길이정보를 가진다.
도 63은, 실시예 2의 섀이딩의 수순을 설명하는 도면이다. 처음에, 도형을 모두 묘화한다. 이때의 휘도의 값은, 묘화메모리영역 7111에 격납된다. 다음에, 먼저의 알고리즘에 의해, 그림자영역을 표시하는 마스크를 메모리영역7112위에 형성한다. 마지막으로, 이 영역이 그림자가 되도록 처리한다.
도 64는, 도 63의 섀이딩의 수순을 실행하기 위한 장치구성의 일예를 표시한 도면이다. 본 발명의 화소마다휘도계산에 있어서는, 화소마다 휘도의 각성분이 계산된다. 크게 나누면, 주위광의 성분6180(a)와 광원광의 성분6180(b)이다. 양성분의 합은, 묘화영역 7111에 격납된다. 광원광의 성분6180(b)는, 광원마다 그림자색버터7113에 격납된다. 한편으로, 그림자영역은, 먼저의 알고리즘에 의해, 그림자영역마스크정보7112로서 격납된다. 표시를 할 때에는, 마스크정보7112의 정보에 따라, 묘화영역7111으로부터 그림자색버터(7113)의 휘도를 차감하여 그림자를 형성한다.
도 65는, 도 64의 장치에 있어서의 그림자용 메모리영역의 할당의 일예를 표시한 도면이다. 그림자영역마스크정보7112(0)∼(3), 그림자색버퍼7113(0)∼(3)은 광원마다설정된다. 또, 묘화영역의 휘도를 구할때에 발생한 오버플로분도 그림자색버퍼7113(4)에 격납해둔다. 이 데이터는, 오버플로가 발생한 화소가 실은 그림자였을 경우에, 보정항으로서 사용된다.
또한, 각 정보는, 16화소에 1개 가진 것으로하면, 메모리용량을 삭감할 수 있다. 그림자영역은 휘도가 낮기 때문에, 분해능이 저하해도 눈에 띄지 않기 때문이다.
또, 이들 정보는, 화상메모리의 미사용영역에 격납할 수 있고, 메모리의 유효활용에 기여한다. 영역의 형식은 (a)와 같은 플랜방식이어도되고, (b)와 같은 팩트형식어도 된다.
도 66은, 본 발명에 있어서의 비선형 안길이 포맷을 설명하는 도면이다. 이 비선형안길이포맷은, 안길이정보의 격납에 관해서 메모리를 저감하기 위한 고안을 표시하고 있다. 일반적으로 안길이정보는, 바로 앞일수록 중요도가 크고, 멀수록, 거리의 차이의 의미가 없어져 간다. 따라서, 안으로 갈수록 필요한 분해능이 낮아진다. 도 66의 예에서는, 상위가변자릿수 7118에서 비유효자릿수7117을 표시하고, 유효자릿수7116은 안일수록 적어지는 포맷이다. 이 포맷에 있어서는, 대소관계가 보존됨으로, 안길이의 비교는, 이 포맷그대로로 실행할 수 있다.
본 발명에서는, 각정점에 있어서의 파라미터로서 보수의 기하학적벡터를 부여하고, 복수의 기하학적벡터를 도형내에서 보간하고, 보간에 의해 발생시킨 복수의 기하학적벡터를 사용해서 도형내의 미소영역마다 휘도를 계산한다.
구체적으로는, 보간용으로 부여되는 도형의 정점에 있어서의 파마리터를 극좌표계에서 가지고, 극좌표값을 도형내에서 선형보간해서 보간파라미터를 계산하고, 또는, 보간용으로부터되는 도형의 정점에 있어서의 파라미터를 정규화모델좌표계에서 가지고, 정규화모델좌표값을 도형내에서 선형보간해서 보간파라미터를 계산한다.
따라서, 파라미터간의 계산량이 대폭삭감되고, 적은하드웨어량과 적은 도형수로도, 스포트라이트 또는 하이라이트등의 고속이고도 정확한 표현을 할 수 있는 섀이딩장치를 얻을 수 있다.

Claims (13)

  1. 타일형 어드레스에 의해 유지되는 제 1데이터와 어레이형 어드레스에 의해 유지되는 제 2데이터를 가진 메모리를 액세스해서 데이터의 처리를 행하는 처리부를 가진 처리장치로서,
    상기 제 1데이터를 처리하는 제 1프로세스와 상기 제 2데이터를 처리하는 제 2프로세스를 가지며,
    상기 제 1프로세스의 경우에 어레이형으로 배열된 데이터를 액세스하기 위해 어레이형 어드레스를 타일형 어드레스로 변환하고, 변환된 타일형 어드레스의 어드레싱에 의해 상기 메모리를 액세스하는 것을 특징으로 하는 저리장치.
  2. 타일형 어드레스에 의해 유지되는 제 1데이터와 어레이형 어드레스에 의해 유지되는 제 2데이터를 가진 메모리를 액세스해서 데이터의 처리를 행하는 처리부를 가진 처리장치로서,
    상기 제 1데이터를 처리하는 제 1프로세스와 상기 제 2데이터를 처리하는 제 2프로세스를 가지며,
    상기 제 2프로세스의 경우에 타일형으로 배열된 데이터를 엑세스하기 위해 타일형 어드레스를 어레이형어드레스로 변환하고, 변환된 어레이형 어드레스의 어드레싱에 의해 상기 메모리를 액세스하는 것을 특징으로 하는 처리장치.
  3. 제 1항에 있어서, 상기 제 1프로세스의 경우에, 데이터가 상기 타일형 어드레스에 따라서 액세스되는지, 또는 어레이형 어드레스를 타일형 어드레스로 변환하여 액세스되는지의 여부를, 액세스되는 데이터의 어드레스에 응답하여 선택되는 것을 특징으로 하는 처리장치.
  4. 제 2항에 있어서, 상기 제 2프로세스의 경우, 데이터가 상기 어레이형 어드레스에 따라서 액세스되는지, 또는 타일형 어드레스를 어레이형 어드레스로 변환하여 액세스되는지의 여부를 액세스되는 데이터의 어드레스에 응답하여 선택되는 것을 특징으로 하는 처리장치.
  5. 제 3항에 있어서, 상기 데이터 액세스는, 액세스되는 데이터의 어드레스 또는 액세스되는 데이터를 유지하는 메모리영역을 검출하여 선택되는 것을 특징으로 하는 처리장치.
  6. 제 1항에 있어서, 상기 제 1프로세스는 화상데이터를 처리하는데 이용되고; 상기 제 2프로세스는 화상데이터 이외의 데이터를 처리하는데 이용되는 것을 특징으로 하는 처리장치.
  7. 제 1항에 있어서, 상기 제 1프로세스는 행렬데이터를 처리하는데 이용되고; 상기 제 2프로세스는 행렬데이터 이외의 데이터를 처리하는데 이용되는 것을 특징으로 하는 처리장치.
  8. 제 1항에 있어서, 상기 타일형 어드레스에 의해 유지된 제 1데이터의 영역의 크기는 데이터 액세스가 선택되기 전에 먼저 검출하는 것을 특징으로 하는 처리장치.
  9. 제 1항에 있어서, 상기 처리부는 캐시메모리를 가지고, 상기 처리부와 상기 메모리간의 데이터 액세스는 상기 캐시메모리를 통하여 행하고; 어드레싱모드는 상기 캐시메모리에 유지된 데이터에 의거하여 변경되는 것을 특징으로 하는 처리장치.
  10. 제 2항에 있어서, 상기 제 1프로세스는 화상데이터를 처리하는데 이용되고; 상기 제 2프로세스는 화상데이터 이외의 데이터를 처리하는데 이용되는 것을 특징으로 하는 처리장치.
  11. 제 2항에 있어서, 상기 제 1프로세스는 행렬데이터를 처리하는데 이용되고; 상기 제 2프로세스는 행렬데이터 이외의 데이터를 처리하는데 이용되는 것을 특징으로 하는 처리장치.
  12. 제 2항에 있어서, 상기 타일형 어드레스에 의해 유지된 제 1데이터의 영역의 크기는 데이터 액세스가 선택되기 전에 먼저 검출하는 것을 특징으로 하는 처리장치.
  13. 제 2항에 있어서, 상기 처리부는 캐시메모리를 가지고; 상기 처리부와 상기 메모리간의 데이터 액세스는 상기 캐시메모리를 통하여 행하고; 어드레싱모드는 상기 캐시메모리에 유지된 데이터에 의거하여 변경되는 것을 특징으로 하는 처리장치.
KR1019970706004A 1995-02-28 1996-02-27 데이터처리장치및섀이딩장치 KR100448724B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP3969195 1995-02-28
JP95-39691 1995-02-28
JP95-101885 1995-04-26
JP10188595A JP3619565B2 (ja) 1995-04-26 1995-04-26 データ処理装置、及びそれを用いたシステム
JP95-298408 1995-11-16
JP29840895A JP3268484B2 (ja) 1995-02-28 1995-11-16 シェーディング方法およびシェーディング装置

Publications (2)

Publication Number Publication Date
KR19980702599A KR19980702599A (ko) 1998-08-05
KR100448724B1 true KR100448724B1 (ko) 2005-08-17

Family

ID=27290232

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970706004A KR100448724B1 (ko) 1995-02-28 1996-02-27 데이터처리장치및섀이딩장치

Country Status (4)

Country Link
US (4) US6433782B1 (ko)
KR (1) KR100448724B1 (ko)
TW (1) TW335466B (ko)
WO (1) WO1996027168A1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100300618B1 (ko) * 1992-12-25 2001-11-22 오노 시게오 노광방법,노광장치,및그장치를사용하는디바이스제조방법
TW335466B (en) * 1995-02-28 1998-07-01 Hitachi Ltd Data processor and shade processor
US6279045B1 (en) * 1997-12-29 2001-08-21 Kawasaki Steel Corporation Multimedia interface having a multimedia processor and a field programmable gate array
US6611272B1 (en) * 1998-07-02 2003-08-26 Microsoft Corporation Method and apparatus for rasterizing in a hierarchical tile order
US6886090B1 (en) * 1999-07-14 2005-04-26 Ati International Srl Method and apparatus for virtual address translation
JP3780954B2 (ja) * 2002-02-06 2006-05-31 ソニー株式会社 画像生成装置およびその方法
JP4079410B2 (ja) * 2002-02-15 2008-04-23 株式会社バンダイナムコゲームス 画像生成システム、プログラム及び情報記憶媒体
CN100551083C (zh) * 2003-01-20 2009-10-14 三洋电机株式会社 立体观察用图像提供方法和立体图像显示装置
US7525547B1 (en) * 2003-08-12 2009-04-28 Nvidia Corporation Programming multiple chips from a command buffer to process multiple images
JP2005190161A (ja) * 2003-12-25 2005-07-14 Matsushita Electric Ind Co Ltd データ処理装置およびコンパイラ装置
DE602005004125T2 (de) * 2004-02-17 2008-12-18 Koninklijke Philips Electronics N.V. Erzeugen einer tiefenkarte
WO2005124695A2 (de) * 2004-06-15 2005-12-29 Daimlerchrysler Ag Verfahren zum erzeugen einer räumlichen darstellung
US7671860B2 (en) * 2004-10-28 2010-03-02 Microsoft Corporation Representing implicit curves of procedural geometric surfaces
US7425959B2 (en) * 2004-10-28 2008-09-16 Microsoft Corporation Representation of implicit curves for procedural surfaces
US7813432B2 (en) 2004-12-30 2010-10-12 Intel Corporation Offset buffer for intra-prediction of digital video
US7408548B2 (en) * 2005-06-30 2008-08-05 Microsoft Corporation Triangulating procedural geometric objects
US7496416B2 (en) 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
JP3853829B1 (ja) * 2005-10-31 2006-12-06 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、並列処理装置および排他制御方法
DE102005052971A1 (de) * 2005-11-07 2007-05-10 Siemens Ag Datenverarbeitungsvorrichtung und Verfahren zum Betrieb
WO2008027875A2 (en) * 2006-08-29 2008-03-06 Texas Instruments Incorporated Methods and systems for tiling video or still image data
US7737986B2 (en) 2006-08-29 2010-06-15 Texas Instruments Incorporated Methods and systems for tiling video or still image data
DE102006042311B4 (de) * 2006-09-06 2013-12-05 3D-Shape Gmbh Dreidimensionale Vermessung von Objekten in einem erweiterten Winkelbereich
KR100803220B1 (ko) * 2006-11-20 2008-02-14 삼성전자주식회사 다중 파이프라인의 3차원 그래픽스 렌더링 방법 및 장치
US8245011B2 (en) 2008-02-08 2012-08-14 Texas Instruments Incorporated Method and system for geometry-based virtual memory management in a tiled virtual memory
GB2465792A (en) * 2008-11-28 2010-06-02 Sony Corp Illumination Direction Estimation using Reference Object
US8884963B2 (en) * 2011-05-04 2014-11-11 Qualcomm Incorporated Low resolution buffer based pixel culling
JP5792046B2 (ja) * 2011-12-07 2015-10-07 オリンパス株式会社 画像処理装置
CN108257582B (zh) * 2018-01-30 2020-10-09 广东中星微电子有限公司 一种图像的显示缓冲方法和装置
KR101999066B1 (ko) * 2018-09-04 2019-07-10 박병우 2차원 화상공간의 음영 처리 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6011890A (ja) * 1983-06-30 1985-01-22 富士通株式会社 イメ−ジメモリ制御方式
JPH0273479A (ja) * 1988-09-09 1990-03-13 Nippon I B M Kk 図形処理装置
JPH04222066A (ja) * 1990-03-16 1992-08-12 Hewlett Packard Co <Hp> 図形要素表現装置及び方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4284988A (en) * 1977-09-26 1981-08-18 Burroughs Corporation Control means to provide slow scrolling positioning and spacing in a digital video display system
JPS59186057A (ja) 1983-04-07 1984-10-22 Fujitsu Ltd イメ−ジメモリシステムにおけるアクセス処理方式
JPS60221848A (ja) 1984-04-18 1985-11-06 Matsushita Electric Ind Co Ltd デ−タ記憶装置
JPH0746391B2 (ja) * 1984-09-14 1995-05-17 株式会社日立製作所 図形シエ−デイング装置
US4757441A (en) * 1985-02-28 1988-07-12 International Business Machines Corporation Logical arrangement for controlling use of different system displays by main proessor and coprocessor
US4817005A (en) * 1985-07-05 1989-03-28 Dai Nippon Insatsu Kabushiki Kaisha Method of designing cubic receptacle and apparatus therefor
JPH0772915B2 (ja) * 1986-03-05 1995-08-02 株式会社日立製作所 図形シェーディング装置
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US5384912A (en) * 1987-10-30 1995-01-24 New Microtime Inc. Real time video image processing system
US4953101A (en) * 1987-11-24 1990-08-28 Digital Equipment Corporation Software configurable memory architecture for data processing system having graphics capability
JPH02255930A (ja) 1989-01-24 1990-10-16 Mitsubishi Electric Corp データ処理システム
WO1991014986A1 (en) * 1990-03-23 1991-10-03 Eastman Kodak Company Virtual memory management and allocation arrangement for digital data processing system
JPH0831140B2 (ja) * 1990-04-13 1996-03-27 株式会社エイ・ティ・アール通信システム研究所 高速画像生成表示方法
EP0470570B1 (en) 1990-08-09 1997-01-29 Silicon Graphics, Inc. Method and apparatus for byte order switching in a computer
CA2047525A1 (en) * 1990-08-31 1992-03-01 Gerald W. Plunk Oblique photographic database generation
GB9021920D0 (en) * 1990-10-09 1990-11-21 Texas Instruments Ltd Improvements in or relating to raster-scanned displays
US5263136A (en) * 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5315698A (en) * 1991-08-21 1994-05-24 Digital Equipment Corporation Method and apparatus for varying command length in a computer graphics system
US5539899A (en) * 1992-04-03 1996-07-23 International Business Machines Corporation System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage
JPH06274653A (ja) * 1993-03-18 1994-09-30 Fujitsu Ltd グラフィック表示装置
US5486876A (en) * 1993-04-27 1996-01-23 Array Microsystems, Inc. Video interface unit for mapping physical image data to logical tiles
US5448310A (en) * 1993-04-27 1995-09-05 Array Microsystems, Inc. Motion estimation coprocessor
JPH0757117A (ja) * 1993-07-09 1995-03-03 Silicon Graphics Inc テクスチャマップへの索引を生成する方法及びコンピュータ制御表示システム
US5561750A (en) * 1994-09-22 1996-10-01 Seiko Epson Corporation Z-buffer tag memory organization
TW335466B (en) * 1995-02-28 1998-07-01 Hitachi Ltd Data processor and shade processor
US5794037A (en) * 1995-05-01 1998-08-11 Intergraph Corporation Direct access to slave processing by unprotected application using context saving and restoration
US5828382A (en) * 1996-08-02 1998-10-27 Cirrus Logic, Inc. Apparatus for dynamic XY tiled texture caching
US6009190A (en) * 1997-08-01 1999-12-28 Microsoft Corporation Texture map construction method and apparatus for displaying panoramic image mosaics
US6348981B1 (en) * 1999-01-19 2002-02-19 Xerox Corporation Scanning system and method for stitching overlapped image data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6011890A (ja) * 1983-06-30 1985-01-22 富士通株式会社 イメ−ジメモリ制御方式
JPH0273479A (ja) * 1988-09-09 1990-03-13 Nippon I B M Kk 図形処理装置
JPH04222066A (ja) * 1990-03-16 1992-08-12 Hewlett Packard Co <Hp> 図形要素表現装置及び方法

Also Published As

Publication number Publication date
US6433782B1 (en) 2002-08-13
US20020154116A1 (en) 2002-10-24
US20050041489A1 (en) 2005-02-24
WO1996027168A1 (fr) 1996-09-06
US6806875B2 (en) 2004-10-19
KR19980702599A (ko) 1998-08-05
US7064756B2 (en) 2006-06-20
TW335466B (en) 1998-07-01
US20060202992A1 (en) 2006-09-14

Similar Documents

Publication Publication Date Title
KR100448724B1 (ko) 데이터처리장치및섀이딩장치
US6002407A (en) Cache memory and method for use in generating computer graphics texture
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
EP0850462B1 (en) Method and system for rendering graphical objects to image chunks and combining image layers into a display image
US8018467B2 (en) Texture caching arrangement for a computer graphics accelerator
US7102646B1 (en) Demand-based memory system for graphics applications
US5949428A (en) Method and apparatus for resolving pixel data in a graphics rendering system
US4692880A (en) Memory efficient cell texturing for advanced video object generator
US5973705A (en) Geometry pipeline implemented on a SIMD machine
US7620793B1 (en) Mapping memory partitions to virtual memory pages
US6005582A (en) Method and system for texture mapping images with anisotropic filtering
US5794016A (en) Parallel-processor graphics architecture
US5990912A (en) Virtual address access to tiled surfaces
US20030174136A1 (en) Multipurpose memory system for use in a graphics system
GB2267203A (en) Three-dimensional graphics drawing apparatus and a memory apparatus to be used in texture mapping
US20020113787A1 (en) Resample and composite engine for real-time volume rendering
GB2343603A (en) Shading 3-dimensional computer generated images
US9569348B1 (en) Method for automatic page table compression
JP3645024B2 (ja) 描画装置及び描画方法
GB2343602A (en) Shading 3-dimensional computer generated images
JP5061273B2 (ja) 画像生成装置、テクスチャマッピング装置、画像処理装置、及びテクスチャ格納方法
EP0948777A1 (en) Tiled linear host texture storage
JP2002183748A (ja) ボリュームデータセットのレンダリング方法およびシステム
EP1434172A2 (en) Method and system for generating a display image using Gsprites.
US6724396B1 (en) Graphics data storage in a linearly allocated multi-banked memory

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: 20110811

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20120821

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee