KR19990072375A - 고정소수점라이팅유닛의로컬눈벡터의고속계산 - Google Patents

고정소수점라이팅유닛의로컬눈벡터의고속계산 Download PDF

Info

Publication number
KR19990072375A
KR19990072375A KR1019990003389A KR19990003389A KR19990072375A KR 19990072375 A KR19990072375 A KR 19990072375A KR 1019990003389 A KR1019990003389 A KR 1019990003389A KR 19990003389 A KR19990003389 A KR 19990003389A KR 19990072375 A KR19990072375 A KR 19990072375A
Authority
KR
South Korea
Prior art keywords
coordinates
given
vector
eye
viewport
Prior art date
Application number
KR1019990003389A
Other languages
English (en)
Inventor
넬슨스코트알.
디링마이클에프.
Original Assignee
썬 마이크로시스템즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 썬 마이크로시스템즈, 인코포레이티드 filed Critical 썬 마이크로시스템즈, 인코포레이티드
Publication of KR19990072375A publication Critical patent/KR19990072375A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects

Abstract

고정 소수점 라이팅 유닛에서 로컬 눈 벡터를 고속으로 계산하는 방법에 관한 것이다. 스크린 공간 좌표의 주어진 뷰포트로 투영되는 주어진 초기 삼각형에 대하여, 로컬 눈 벡터는 주어진 눈 위치 및 주어진 초기 삼각형의 제 1 정점에 상응한다. (주어진 초기 삼각형의 각 정점에 대해 상이한 로컬 눈 벡터가 계산된다.) 우선 본 방법은 주어진 눈 위치 및 주어진 뷰포트의 코너 좌표에 상응하는 뷰 벡터 행렬을 생성하는 단계를 포함하며, 상기 코너 좌표는 스크린 공간 좌표에서 표현된다. 스크린 공간 좌표를 주어진 뷰포트에 상응하는 눈 벡터 공간으로 매핑하도록 뷰 벡터 행렬이 사용가능하다. 이후 본 방법은 제 1 정점에 상응하는 (스크린 공간내의) 제 1 세트의 좌표를 수신하는 단계를 포함한다. 이후 제 1 세트의 좌표는 고정 소수점 라이팅 유닛에 의해 표현될 수 있는 수치 범위로 스케일링된다. 그다음으로, 주어진 뷰포트에 대해 눈 벡터 공간내에서 비법선화된 로컬 눈 벡터를 발생하는 뷰 벡터 행렬을 사용하여 제 1 세트의 좌표는 변환된다. 법선화된 로컬 눈 벡터를 수행하도록 비법선화된 로컬 눈 벡터는 법선화된다. 이후 무한정 광원에 대한 반사값 계산과 같이 뒤따르는 라이팅 계산을 수행하기 위해 법선화된 로컬 눈 벡터가 사용가능하며, 무한정 눈 벡터가 사용될 때보다 보다 사실감있는 라이팅 효과가 발생한다. 그러나, 본 방법을 사용하여 로컬 눈 벡터가 고속으로 계산될 수 있지만, 보다 사실감있는 라이팅 효과로 인해 성능이 감소되지 않는다.

Description

고정 소수점 라이팅 유닛의 로컬 눈 벡터의 고속 계산{Rapid computation of local eye vectors in a fixed point lighting unit}
본 발명은 3D 그래픽 가속기에 관한 것으로서, 보다 상세하게는 로컬 눈(eye) 벡터의 고속 계산을 수행하는 3D 그래픽 가속기내의 고정 소수점 라이팅 유닛에 관한 것이다.
3차원(3D) 그래픽 가속기는 호스트 프로세서로부터 3D 렌더링 기능을 오프로드하여 향상된 시스템 성능을 제공하도록 설계된 컴퓨터 시스템을 위한 특정화된 그래픽 렌더링 서브시스템이다. 3D 그래픽 가속기를 갖는 시스템에서, 컴퓨터 시스템의 호스트 프로세서에서 실행되는 응용 프로그램은 디스플레이 디바이스에서 출력하기위해 3차원 그래픽 요소를 정의하는 3차원 기하학 데이터를 생성한다. 응용 프로그램으로 인해 호스트 프로세서는 기하학 데이터를 그래픽 가속기로 전송한다. 그래픽 가속기는 기하학 데이터를 수신하고 디스플레이 디바이스에서 상응하는 그래픽 요소를 렌더링한다.
많은 컴퓨터 그래픽 시스템에서 한가지 목적은 물체를 사용자에게 사실감있게 렌더링하는 것이다. 그러나 가상 사실감의 문제는 상당히 복잡하다. 실제 세계에서의 물체에는 칼라의 미묘한 변화, 반사, 및 불규칙한 표면을 포함하여 매우 많은 세부적인 사항이 있다.
그래픽 시스템이 가상 사실감을 증가시키는 가장 중요한 한가지 방법은 광이 실제 물체와 상호작용하는 복잡한 방법을 캡쳐(capture)하는 것이다. 이러한 이유로, 라이팅 성능을 증가시키기위해 전용 유닛이 사용되었다. 이러한 라이팅 유닛의 설계로 인해 사실감을 증가시키고, 성능을 유지시키는 것 그리고 비용을 최소화하는 것이 균형을 이룬다.
3차원 그래픽을 디스플레이하는 응용에는 매우 많은 프로세싱 기능이 필요하다. 예를 들어, 부드러운 3D 모션 비디오를 생성하는 컴퓨터 시스템에 있어서, 초당 20 내지 30사이에서 프레임 속도 또는 갱신 속도를 유지하는 컴퓨터 시스템이 필요하다. 이것은 초당 백만개 삼각형의 프로세싱을 할 수 있는 3D 컴퓨터 그래픽 가속기를 필요로 한다. 이 프로세싱에는 다중 광원을 (단순히 하나의 발산 광이 아닌) 특정 하이라이트와 연관시키는 라이팅 계산이 포함된다.
종래 기술의 라이팅 유닛이 갖는 한가지 문제점은 부동 소수점 연산을 사용한다는 것이다. 라이팅 계산에 연관된 몇 개의 파라미터(예를 들어, 감쇠 인자)는 전체 영역의 IEEE 부동 소수점 수를 필요로 하기 때문에 라이팅 유닛에 부동 소수점 수학이 사용된다. 그러나, 필요한 하드웨어는 그 크기면에서 비교적 비용이 비싸다는 것이 부동 소수점 산술의 주요 단점이다. 성능을 최대화하고자 하는 저 비용 그래픽 시스템의 라이팅 유닛에서 문제가 된며, 특히 라이팅 연산의 대부분은 부동 소수점 수학의 전체 범위를 필요로 하지 않는다는 사실에서 볼때 문제가 된다.
라이팅 유닛에서 만들어진 또다른 트레이드오프에는 무한정 광원에 대한 특정 하이라이트 계산을 수행할때 무한 눈 위치의 사용이 관련된다. (발산된 반사와 반대되는) 특정 반사에서, 물체의 표면은 입사광의 칼라로 보인다. 이러한 이유때문에 밝은 광으로 투사된 부분의 사과는 백색이고, 그 외 부분은 적색으로 보인다. 거울 반사를 정밀하게 모델링하기위해, 로컬 눈 위치는 이상적으로 라이팅 효과를 계산하는데 사용되어야 한다. 눈 위치는 렌더링되는 3D 화면과 관찰자와의 거리 및 정위를 나타내는 세계 공간내의 위치이다. 로컬 눈 위치를 사용함으로써, 거울 반사의 위치는 주어진 물체에 대해 사실감있게 렌더링될 수 있다.
그러나, 거울 반사값을 계산할 때 종래 기술의 그래픽 시스템은 일반적으로 무한정 눈 위치를 사용한다. 이것은 로컬 눈 벡터(로컬 눈 위치로부터 광이 비춰지는 초기 삼각형의 정점으로의 벡터)의 계산에 많은 시간이 소모되고 라이팅 성능을 제한하기때문에 행해진다. 무한정 광원에 대한 거울 하이라이트를 계산할 때 무한정 눈 위치사용함으로써 수용가능한 라이팅 효과가 발생하지만, 이상적인 것이 아니다.
따라서 무한정 광원과 관련된 거울 하이라이트에 대한 로컬 눈 벡터를 고속으로 계산할 수 있는 라이팅 유닛을 갖는 것이 바람직하다. 성능이 감소되고 비용이 증가함에도 불구하고 이 라이팅 유닛이 부동 소수점 산술을 사용하는 것에 구속되지 않는 것이 또한 바람직하다.
본 발명은 고정 소수점 라이팅 유닛에서 로컬 눈 벡터를 고속으로 계산하는 방법을 포함한다. 스크린 공간 좌표에서 주어진 뷰포트로 투영되는 초기 삼각형에 대해서, 로컬 눈 벡터는 주어진 눈 위치 및 주어진 초기 삼각형의 정점에 상응한다. (주어진 초기 삼각형의 각 정점에 대해 상이한 로컬 눈 벡터가 계산된다.)
상기 방법은 주어진 뷰포트의 코너 좌표 및 뷰(view) 벡터 행렬을 생성하는 단계를 포함하며, 코너 좌표는 스크린 공간 좌표에서 표현된다. 스크린 공간 좌표를 주어진 뷰포트와 상응하는 눈 벡터 공간으로 매핑하기위해 뷰 벡터 행렬이 사용가능하다. 이후 이 방법에는 (스크린 공간에서) 제 1 정점과 상응하는 제 1 세트의 좌표를 수신하는 단계가 포함된다. 이후 제 1 세트의 좌표는 고정 소수점 라이팅 유닛에 의해 표현될 수 있는 수치 범위로 스케일링된다. 이후, 주어진 뷰포트에 대해 눈 벡터 공간에서 비법선화 로컬 눈 벡터를 생성하는 뷰 벡터 행렬을 사용하여 제 1 세트의 좌표가 변환된다. 비법선화 로컬 눈 벡터는 정휴과 로컬 눈 벡터를 형성하기위해 법선화다. 무한정 광원에 대한 반사값 계산과 같은 이후의 라이팅 계산을 수행하기위해 법선화 로컬 눈 벡터가 사용가능하며, 무한정 눈 벡터가 사용되는 것보다 사실감있는 라이팅 효과가 발생한다. 그러나, 본 방법을 사용하여 로컬 눈 벡터가 고속으로 계산될 수 있지만 보다 사실감있는 라이팅 효과로 인해 성능이 감소되지 않는다.
뷰 벡터 행렬의 계산에는 현재의 뷰 행렬로부터 역행렬을 생성하는 단계가 포함된다. (그래픽 파이프라인의 초기 단계에서 세계 공간 좌표로부터 스크린 공간 좌표로 정점을 변환하기위해 현재의 뷰 행렬이 사용된다.) 이후 역행렬을 사용하여 주어진 눈 위치에 대해 세계 좌표가 계산된다. 그다음으로, 주어진 뷰포트의 클립 공간 좌표 및 역행렬을 사용하여 주어진 뷰포트의 코너 좌표에 대한 세계 공간 좌표가 측정된다. 주어진 눈 위치에 대한 세계 공간 좌표뿐만 아니라 주어진 뷰포트의 코너 좌표에 대한 세계 공간 좌표가 법선화다. 또한 상기 방법은 법선화 세계 공간 눈 좌표로부터 뷰 체적의 코너를 형성하는 법선화 각 세계 공간 코너 좌표로 세계 공간 좌표내의 복수의 벡터를 생성하는 단계를 포함한다. 이후 복수의 벡터는 주어진 뷰포트의 정면 클리핑 면(Z=1)으로 법선화다. 이후, 투영의 중심 오프셋뿐만 아니라 복수의 벡터가 주어진 뷰포트로 투영되는 크기가 측정된다. 주어진 뷰포트의 중심 오프셋 및 크기가 스크린 공간 좌표에서 계산되고, 라이팅 유닛의 수치 범위로 조절된다.
비법선화 뷰 벡터 행렬 성분을 계산하기위해 주어진 뷰포트의 크기와 중심 오프셋과 함께 투영 크기 및 중심 오프셋이 사용된다. 이후, 뷰 벡터 행렬에 대한 최대 입력값이 계산되고, 최대 뷰 벡터 길이의 측정이 가능해진다. 이후 주어진 뷰포트에 대한 소정의 범위내에서 최대 벡터 길이를 유지하기위해 비법선화 뷰 벡터 행렬 성분이 스케일링되며, 이에따라 최종 뷰 벡터 행렬 성분값이 생성된다. 마지막으로, 유효 행렬로부터 최종 뷰 벡터 행렬 성분이 측정된다.
다음에 따르는 바람직한 실시예와 첨부된 도면을 고려하여 본 발명은 충분히 이해될 수 있다.
도 1은 본 발명에 따라 3차원(3D) 그래픽 가속기를 포함하는 컴퓨터 시스템을 도시한다.
도 2는 도 1의 컴퓨터 시스템의 간략화된 블록도이다.
도 3은 본 발명의 바람직한 실시예에 따라 3D 그래픽 가속기를 도시하는 블록도이다.
도 4는 본 발명의 바람직한 실시예에 따라 3D 그래픽 가속기에 있는 부동 소수점 프로세서중 한 가지를 도시하는 블록도이다.
도 5는 본 발명의 바람직한 실시예에서 고정 소수점 라이팅 유닛을 도시하는 블록도이다.
도 6a은 디스플레이 스크린에서 정점에 대한 눈 벡터와 점(S)과의 관계를 도시한다.
도 6b은 디스플레이 스크린에서 주어진 뷰포트로 뷰 벡터가 어떻게 매핑되는지를 도시한다.
도 7은 본 발명의 바람직한 실시예에 따라 법선화 로컬 눈 벡터를 계산하는 방법을 도시하는 흐름도이다.
도 8a 내지 8d는 반사값을 계산하는 데 있어서 로컬 눈 벡터를 사용하는 것을 도시한다.
도 9는 본 발명의 바람직한 실시예에서 뷰 벡터 행렬을 계산하는 방법을 도시하는 흐름도이다.
도 1 - 컴퓨터 시스템
도 1 에서, 본 발명에 따른 3차원(3D) 그래픽 가속기를 포함하는 컴퓨터 시스템(80)이 도시된다. 도시된 바와같이, 컴퓨터 시스템(80)은 시스템 유닛(82) 및 시스템 유닛(82)에 연결된 비디오 모니터 또는 디스플레이 디바이스(84)를 포함한다. 디스플레이 디바이스는 디스플레이 모니터 또는 디바이스의 다양한 형태를 가질 수 있다. 키보드(86) 그리고/또는 마우스(88), 또는 다른 입력 디바이스를 포함하여 컴퓨터 시스템에 다양한 입력 디바이스가 연결될 수 있다. 비디오 모니터(84)상에 3D 그래픽 물체를 디스플레이하기위해 컴퓨터 시스템(80)에 의해 응용 소프트웨어가 실행될 수 있다. 하기에 설명되는 바와같이, 컴퓨터 시스템(80)내의 3D 그래픽 가속기는 무한정 광원에 상응하는 반사 하이라이트의 계산을 위해 법선화 로컬 눈 벡터의 고속 계산을 수행하도록 구성된 고정 소수점 라이팅 유닛을 포함한다. 이러한 로컬 눈 벡터를 사용함으로써 디스플레이 디바이스(84)에서 보다 사실감있게 렌더링된 그래픽 물체의 라이팅 효과가 나타난다.
도 2 - 컴퓨터 시스템 블록도
도 2에서, 도 1의 컴퓨터 시스템을 도시하는 간략화된 블록도가 도시된다. 본 발명을 이해하는데 필요하지 않은 컴퓨터 시스템의 요소는 도시되지 않는다. 도시된 바와같이, 컴퓨터 시스템(80)은 고속 버스 또는 시스템 버스(104)에 연결된 중앙 처리 장치(CPU;102)를 포함한다. 시스템 메모리(106)는 또한 바람직하게 고속 버스(104)에 연결된다.
호스트 프로세서(102)는 컴퓨터 프로세서, 멀티프로세서 및 CPU에서 다양한 형태를 가질 수 있다. 시스템 메모리(106)는 임의 액세스 메모리 및 대량 기억 디바이스를 포함하여 메모리 서브시스템의 다양한 형태를 가질 수 있다. 시스템 버스 또는 호스트 버스(104)는, 특정 서브시스템뿐만 아니라 호스트 프로세서, CPU, 및 메모리 서브시스템 사이에서 통신하기위해 통신 또는 호스트 컴퓨터 버스의 다양한 형태를 가질 수 있다. 바람직한 실시예에서, 호스트 버스(104)는 83MHz에서 동작하는 64비트 버스인 UPA 버스이다.
본 발명에 따른 3D 그래픽 가속기(112)는 고속 메모리 버스(104)에 연결된다. 3D 그래픽 가속기(112)는 예를 들어 크로스 바 스위치 또는 다른 버스 연결 로직에 의해 버스(104)에 연결될 수 있다. 당 기술에 공지된 바와같이, 다양한 주변 디바이스가 고속 메모리 버스(104)에 연결될 수 있다는 것이 가정된다. 3D 그래픽 가속기는 다양한 버스에 연결될 수 있다는 것이 주의된다. 도시된 바와같이, 비디오 모니터 또는 디스플레이 디바이스(84)는 3D 그래픽 가속기(112)에 연결된다.
호스트 프로세서(102)는 프로그래밍된 입력/출력(I/O) 프로토콜에 따라 호스트 버스(104)를 통해 그래픽 가속기(112)와 정보를 송수신할 수 있다. 대체하여, 그래픽 가속기(112)는 직접 메모리 액세스(DMA)를 따라 또는 인텔리전트 버스 마스터링을 통해 메모리 서브시스템(106)에 액세스한다.
OpenGL 또는 XGL과 같은 응용 프로그래머 인터페이스(API)에 적합한 그래픽 응용 프로그램은 디스플레이 디바이스(84)에서 출력하기위해 다각형과 같은 기하학적 초기값을 정의하는 명령과 데이터를 생성한다. 이러한 초기값은 응용 프로그램에 의해 정의되는 속성을 갖는 광원에 의해 도시되듯이 모델링된다. 호스트 프로세서(102)는 이러한 명령 및 속성 데이터를 메모리 서브시스템(106)으로 전송한다. 이후, 호스트 버스(104)를 통해 데이터를 그래픽 가속기(112)로 전송하도록 호스트 프로세서(102)는 동작한다. 대체하여, 그래픽 가속기(112)는 DMA 액세스 사이클을 사용한 기하학 데이터 어레이를 호스트 버스(104)를 통해 판독한다. 또다른 실시예에서, 그래픽 가속기(112)는 인텔 코포레이션에 의해 배포된 어드밴스 그래픽 포트(AGP)와 같은 직접 포트를 통해 시스템 메모리(106)에 연결된다. 이후 그래픽 가속기(112)는 (전송후) 전송된 초기값에 대한 (로컬 눈 벡터의 계산을 포함하는) 라이팅 연산을 수행하며, 바람직한 실시예에서 정점마다의 칼라값을 생성한다. 이에 따르는 렌더링 연산이 라이팅 초기값에 대해 수행된다.
도 3 - 그래픽 가속기
도 3에서, 본 발명의 바람직한 실시예에 따라 그래픽 가속기(112)를 도시하는 블록도가 도시된다. 도시된 바와같이, 그래픽 가속기(112)는, 명령 블록(142), 한 세트의 부동 소수점 프로세서(152A - 152F), 한 세트의 묘화(draw) 프로세서(172A 및 172B), 3DRAM으로 구성된 프레임 버퍼(100), 및 임의 액세스 메모리/디지털 대 아날로그 변환기(RAMDAC;196)로 주로 구성된다.
도시된 바와같이, 그래픽 가속기(112)는 메모리 버스(104)와 인터페이스되는 명령 블록(142)을 포함한다. 명령 블록(142)은 그래픽 가속기(112)를 호스트 버스(104)와 인터페이스하며 그래픽 가속기(112)내의 칩 또는 다른 블록사이의 데이터 전송을 제어한다. 명령 블록(142)은 또한 삼각형 및 벡터 데이터를 미리 처리하고 기하학 데이터 압축해제를 수행한다.
명령 블록(142)은 복숭의 부동 소수점 블록(152)과 인터페이스된다. 그래픽 가속기(112)는 바람직하게 도시된 바와같이 152A 내지 152F으로 칭한 6개의 부동 소수점 프로세서를 포함한다. 부동 소수텀 프로세서(152A 내지 152F)는 스크린에서 3차원 물체를 렌더링하기위해 삼각형, 선 등과 같은 그래픽 초기값 및 높은 레벨의 묘화 명령을 수신한다. 부동 소수점 프로세서(152A 내지 152F)는 수신된 기하학 데이터에서 변환, 클리핑, 페이스 측정, 라이팅 및 셋업 연산을 수행한다. 각 부동 소수점 프로세서(152A 내지 152F)는 각 메모리(153A 내지 153F)에 연결된다. 메모리(153A 내지 153F)는 32k x 36비트 SRAM이고 마이크로코드 및 데이터 저장에 사용된다.
각 부동 소수점 블록(152A 내지 F)은 2개의 묘화 프로세서(172A 및 172B) 각각에 연결된다. 그래픽 가속기(112)는, 2개보다 많게 또는 적게 사용될 수 있지만 바람직하게 2개의 묘화 프로세서(172A 및 172B)를 포함한다. 묘화 프로세서(172A 및 172B)는 다양한 그래픽 초기값의 스크린 공간 렌더링을 실행하고 완료된 화소를 3DRAM 어레이에 채우기 위해 또는 순서를 갖도록 동작한다. 묘화 프로세서(172A 및 172B)는 프레임 버퍼(100)를 위한 3DRAM 제어 칩의 기능을 나타낸다. 묘화 프로세서(172A 및 172B)는 이미지를 부동 소수점 프로세서(152A 내지 152F)중 한개의 프로세서로부터 수신된 묘화 패킷에 따라 또는 명령 프로세서(142)로부터 수신된 직접 포트 패킷에 따라 프레임 버퍼(100)로 동시에 렌더링한다.
각 부동 소수점 블록(152A 내지 F)은 바람직하게 동일한 데이터를 2개의 묘화 블록(172A 및 172B)으로 동보 전송하도록 동작한다. 환언하면, 동일한 데이터는 각 부동 소수점 블록(152)으로부터 전달되는 데이터 라인의 양 세트에 항상 있다. 따라서, 부동 소수점 블록(152A)은 데이터를 전송하고, 부동 소수점 블록(152A)은 동일한 데이터를 FD 버스의 양 부분을 통해 묘화 프로세서(172A 및 172B)로 전송한다.
각 묘화 블록(172A 및 172B)은 프레임 버퍼(100)에 연결되고, 프레임 버퍼(100)는 3DRAM 메모리(192A 및 B, 그리고 194A 및 B)의 4개 뱅크를 포함한다. 묘화 프로세서(172A)는 2개의 3DRAM 뱅크(192A 및 192B)에 연결되고, 묘화 프로세서(172B)는 2개의 3DRAM 뱅크(194A 및 194B) 각각에 연결된다. 도시된 바와같이 각 뱅크는 3개의 3DRAM 칩을 포함한다. 3DRAM 메모리 또는 뱅크(192A 및 B 그리고 194A 및 B)는 깊이 96비트의 1280 x 1024 인 프레임 버퍼(100)를 집약적으로 형성한다. 프레임 버퍼는 묘화 프로세서(172A 및 172B)에 의해 렌더링되는 3D 물체에 따른 화소를 저장한다.
각 3DRAM 메모리(192A-B 및 194A-B)는 RAMDAC(임의 액세스 메모리 디지털 대 아날고그 변환기;196)에 연결된다. RAMDAC(196)는 기존의 칼라 조사 테이블 및 삼중 비디오 DAC회로뿐만 아니라 크로스바 기능과 함께, 프로그래밍가능한 비디오 타이밍 발생기 및 프로그래밍가능한 화소 클록 신디사이저를 포함한다. RAMDAC는 다시 비디오 모니터(84)에 연결된다.
명령 블록은 바람직하게 단일 칩으로서 실현된다. 각 부동 소수점 프로세서(152)는 독립 칩으로서 실현된다. 바람직한 실시예에서, 6개까지의 부동 소수점 블록 또는 칩(152A 내지 F)이 포함될 수 있다. 각 묘화 블록 또는 프로세서(172A 및 172B)는 바람직하게 독립 칩을 포함한다. 바람직한 실시예의 그래픽 가속기 아키텍쳐의 상이한 형태에 대한 정보에 대하여, 관련된 공동계류중인 "향상된 성능을 위한 직접 데이터 채널을 갖는 3차원 그래픽 가속기"라는 명칭의 출원번호 제 08/673,492호, 및 관련된 공동계류중이고 1996년 7월 1일에 제출된 "향상된 버스 통신을 위한 다중 로직 버스를 실현하는 3차원 그래픽 가속기"라는 명칭의 출원번호 제 08/673,491호를 참조하라.
상기 언급된 바와같이, 명령 블록(142)은 호스트 CPU(102)로부터 그래픽 명령과 데이터를 수신하도록 호스트 버스(104)와 인터페이스된다. (초기 삼각형 및 상응하는 광 파라미터 데이터를 포함하여) 이러한 명령 및 데이터는 차례로 변환, 라이팅, 및 셋업 계산을 위해 부동 소수점 프로세서(152)로 전달된다. 향상된 라이팅 성능을 위해 구성된 부동 소수점 프로세서(152)의 일반적인 연산은 도 4에서 설명된다. 향상된 라이팅 기능을 제공하는 각 부동 소수점 프로세서(152)내의 L코어 블록은 도 5에서 보다 상세히 설명된다. 도 6a, 6b, 7 및 8은 고정 소수점 라이팅 유닛을 사용한 로컬 눈 벡터의 계산을 도시한다.
도 4 - 부동 소수점 프로세서 블록도
도 4에서, 본 발명의 바람직한 실시예에 따라 부동 소수점 프로세서(152)중 한 개를 도시하는 블록도가 도시된다. 각 부동 소수점 프로세서(152A 내지 152F)는 일치하며, 따라서 오직 한개만이 편의상 설명된다. 도시된 바와같이, 각 부동 소수점 블록(152)은 3개의 주요 기능 유닛 또는 코어 프로세서, 즉 F코어(352), L코어(354), 및 S코어(356)를 포함한다. F코어 블록(352)은 명령 블록(142)으로부터 전송된 CF버스로부터 데이터를 수신하도록 연결된다. F코어 블록(352)은 출력 데이터를 각 L코어 블록(354) 및 S코어 블록(356)에 제공한다. L코어 블록(354)은 데이터를 또한 S코어 블록(356)에 제공한다. S코어 블록(356)은 출력 데이터를 FD 버스에 제공한다.
F코어 블록(352)은 기하학 변환, 클립 테스트, 페이스 측정, 투시 구분, 및 스크린 공간 변환을 포함하여 모든 부동 소수점 집약 연산을 수행한다. F코어 블록(352)은 또한 필요할 때 클리핑을 수행한다. 바람직한 실시예에서, F코어 블록(352)은 32k 워드 SRAM에 저장된 36비트 마이크로 지시 워드를 사용하여 전체가 프로그래밍가능하다.
L코어 블록(354)은 마이크로코드에 의거한 온칩 RAM을 사용하여 대부분의 라이팅 계산을 수행한다. 종래 기술의 라이팅 유닛과 달리, L코어 블록(354)은 이러한 계산을 반영하기위해 고정 소수점 산술을 사용한다. 바람직한 실시예에서, (한개의 단일 비트, 한개의 정수 비트, 및 14개의 소수 비트) s1.14 포맷을 사용하여 L코어 블록(354)의 수치 범위는 -2.0 내지 +2.0이다. 라이팅 계싼의 대부분은 16비트 오퍼랜드의 형태를 사용하여 수치범위에서 수행될 수 있다. 라이팅 계산에 필요한 (감쇠 인자와 같은) 몇 개의 파라미는 이 범위를 넘으며, F코어 블록(352)에서 처리된다.
L코어 블록(354)은 또한 보다 효율적인 라이팅 계산을 위한 효율적인 3배 길이 워드 설계를 포함한다. 3배길이 워드 설계는 16비트 고정 소수갑승ㄹ 포함하는 48비트 데이터 워드로 동작한다. 따라서 한 개의 지시는 한 사이클동안 모든 3개의 칼라 성분(RGB)에서 또는 모든 법선의 성분(Nx, Ny, Nz)에서 동일한 기능을 수행할 수 있다. L코어 블록(354)에 포함된 수학 유닛은 자동적으로 값을 허용된 수치범위내로 클램핑하고, 이에따라 브랜치가 추가로 필요하지 않다.
S코어 블록은 모든 초기값에 대한 셋업 계산을 수행한다. 이 셋업 계산에는 한 정점으로부터 다른 정점으로의 다중 차원의 거리를 계산하는 것과 가장자리를 따른 기울기를 계산하는 것이 관련된다. 삼각형에 대해서, Z깊이의 기울기, 칼라, 및 (섬유에 대한) UV는 또한 스캔 라인의 방향으로 계산된다.
도시된 바와같이, 각 부동 소수점 블록(152)은 CF버스에 연결되는 CF 버스 인터페이스 로직(362)을 포함한다. 각 부동 소수점 블록(152)은 FD 버스에 연결되는 FD 버스 인터페이스 로직(366)을 포함한다. 각 부동 소수점 블록(152)은 CD버스에 대한 각 부동 소수점 블록(152)을 통한 데이터 전송경로의 역할을 하는 바이패스 버스 또는 데이터 경로(364)를 포함한다. CD버스를 통해 전송되는 데이터, 즉 FD 버스로 직접 전송되는 데이터는 데이터 전송 버스(364)에서 이동하며, 이에따라 부동 소수점 블록(152)에 포함된 부동 소수점 로직을 바이패스한다.
일반적으로, 부동 소수점 블록(152)에 제공되는 데이터는 F코어 블록(352), L코어 블록(354), 또는 직접 FD 버스, 즉, CD 버스 전송인 3개의 지정중 한개를 가질 수 있다. 바람직한 실시예에서, F코어 블록(352)용인 데이터는 32비트 IEEE 부동 소수점 번호 및 다른 32비트 데이터를 포함하여 32비트 워드를 포함한다. L코어 블록(354)용 데이터는 3개의 16비트 고정 소수점 번호를 포함하는 48비트 워드를 포함한다.
도시된 바와같이, 부동 소수점 블록(152)은 명령 블록(142)에 의해 제공된 CF 버스로부터 데이터를 수신하는 부동 입력 버퍼(352; FI 버퍼)를 포함한다. FI 버퍼(372)는 더블 버퍼된 것이고 32개의 32비트 엔트리를 각 버터내에 보유한다. FI 버퍼(372)에 저장된 제 1 워드인 워드(0)는 어느 마이크로코드 루틴이 수신된 기하학적 초기값을 전달할 것인가를 F코어 블록(352)에게 알리는 연산코드를 포함한다. 기하학적 초기값을 변환하고 라이팅할 때 헤더 및 X, Y 그리고 Z 좌표만이 버퍼에 제공된다.
부동 소수점 블록(152)은 또한 F코어 내지 L코어 버퍼(FL 버퍼)(374)를 포함한다. FL 버퍼(374)는 이중 버퍼된 것이고 16개의 16비트 엔트리를 각 버퍼내에 보유한다. 3개의 F코어 워드를 기록하고 또는 FL버퍼(374)에 제공되는 한개의 L코어 워드로 조합하도록 F코어 블록(352)은 동작한다. L코어 투시로부터, FL 버퍼(374)에 있는 각 버퍼는 5개의 48비트 엔트리로서 보인다. 라이팅 연산동안, 3개 X, Y, 및 Z 좌표는 F코어 블록(352)로부터 L코어 블록(354)으로 FL 버퍼(374)를 통해 전송된다. 3개 X, Y, Z 는 눈 방향을 계산하도록 사용된다.
부동 소수점 블록(152)은 명령 블록(142)으로부터 제공된 CF 버스를 통해 데이터를 수신하고 이 데이터를 L코어 블록(354)에 제공하는 L코어 버퍼(LI 버퍼; 376)를 포함한다. LI 버퍼(376)는 5개의 버퍼를 포함하고, 각 버퍼는 7개의 48비트 엔트리를 보유한다. 7개의 48비트 엔트리는 3개의 정점 법선, 3개의 정점 칼라, 및 3개의 알파값을 갖는 한개의 워드를 포함한다. FI 버퍼(372) 및 LI 버퍼(376)는 부동 소수점 블록 입력 버퍼를 포함한다.
부동 소수점 블록(152)은 또한 F코어 블록(352) 및 L코어 블록(354)을 연결하는 FLL 버퍼(378)를 포함한다. FLL 버퍼(378)는 F코어 블록(3520로부터 L코어 블록(354)으로 감쇠 인자 및 라이팅을 전송하는데 사용되는 FIFO이다. 이 감쇠 인자는 3개의 X, Y, Z 위치값, 3개의 감쇠값, 3개의 주위 광 값, 및 모여진 3개 값을 갖는 한개의 감쇠 시프트 워드를 포함한다. F코어 블록(352)과 L코어 블록(354)사이에서 FLF 버퍼(380)가 또한 제공된다. FLF 버퍼는 F코어 블록하에 F코어 블록(352) 및 L코어 블록(354)사이의 데이터를 통신하는데 사용되는 양방향 버퍼이다.
L코어 블록(354) 및 S코어 블록(356)사이에서 L코어 내지 S코어 버퍼(LS 버퍼)(386)가 연결된다. LS 버퍼(386)는 이중 버퍼된 것이고 각 버퍼는 4개의 48비트 워드를 보유한다.
부동 소수점 블록(152)은 또한 F코어 블록(352)으로부터 S코어 블록(356)으로 데이터를 전송하는데 사용되는 F코어 내지 S코어 버퍼(FS 버퍼; 384)를 포함한다. FS 버퍼는 각각의 버퍼가 32개의 32비트 값을 갖는 5개의 버퍼를 포함한다. 5개의 버퍼는 L코어 블록(354)의 파이프라인 스페이지를 정합하도록 설계되고, 즉, 2개의 FL 버퍼, 2개의 LS 버퍼, 그리고 L코어 블록(354)에 저장될 수 있는 초기값이다. 이 버퍼를 통해 전송된 F코어 블록(352)로부터 S코어 블록(356)으로 전송된 데이터는 어느 마이크로코드 프로시저가 S코어 블록(356)에서 동작하는지를 나타내는 디스패치 코드를 포함한다.
마지막으로, 부동 소수점 블록(152)은 S코어 블록(356)과 FD 버스 인터페이스(366)사이에 연결된 S코어 출력 버퍼(SO 버퍼; 158)를 포함한다. SO 버퍼(158)는 FD 버스를 통해 각 묘화 프로세서(172A 내지 172B)로 전송될 데이터를 모은다. SO 버퍼(158)는 이중 버퍼된 것이고 각 버퍼에 32개의 32비트 워드를 보유한다. SO 버퍼(158)는 각 묘화 프로세서(172A 및 172B)에 의해 필요한 순서로 고정 소수점 데이터를 포함하는 2개의 초기값을 보유한다. S코어 블록(356)은 고정 소수점 데이터와 함께 추가 상태 정보를 묘화 프로세서(172)로 전송한다. 예를 들어, 상태 비트는 주어진 초기값이 관련된 초기값 그룹의 마지막인지 여부를 나태내는 각 엔트리와 함께 전송된다. 버스를 통해 데이터를 전송하기위해 최소한의 사이클 수가 사용되도록 SO 버퍼(158)는 워드가 얼마만큼 유효한 것인지를 나타내는 독립 상태 레지스터를 포함한다. SO 버퍼(158)는 부동 소수점 블록 출력 버퍼(158)를 포함한다.
컬러와 법선은 LI-버퍼(376)를 통해 명령 블록(142)에서 L-코어(354)로 전송된다. 라이팅 계산은 F-코어 블록(352)을 통과한 디스패치 워드와 명령 제어 로직(470)의 제어하에 실행하고 SRAM(472)에 내장된 마이크로코드 명령에 응답하여 실행된다. L-코어 명령 세트는 브랜치 명령을 포함하지 않고, 따라서 라이팅 계산의 각각의 단계는 완료하고, 그 다음 단계는 다음 디스패치 워드의 내용을 근거로 하여 시작된다.
L-코어(354)는 입력 및 출력 버퍼에 추가로 3개의 상이한 레지스터 파일을 포함한다. LL 레지스터(410)는 최대 32개의 라이트 각각에 대한 값을 포함한다. 단지 하나의 라이트가 동시에 액세스될 수 있기 때문에, LT 레지스터(440)는 어느 라이트가 액세스하는지를 명시한다. 라이트 값은 F-코어(352)에 의해 로드되고, L-코어(354)에 의해 수정되지 않는다. LR 레지스터(430)는 라이팅 계산으로부터의 중감값을 저장하기 위해 보통 레지스터로서 사용된다. LCC 레지스터(420)는 자료 특성 또는 원 정점에 대한 "현재 컬러"를 유지한다.
L-코어 블록(354)은 승산-누산 블록(450)을 포함하고, 48 비트 워드내의 3개의 16 비트값 각각에 대하여 하나의 유닛을 포함한다. 승산-누산 유닛 각각의 표준 동작은 48 비트 인(in)과 48 비트 아웃(out)이다. 내적 계산에 있어서, 단지 16 비트 결과만 있어서, 이 결과는 3개의 16 비트 필드 각각으로 복사된다.
역 제곱근(ISQRT)블록(462)은 뷰 포인트 벡터를 법선화하는데 사용된다. ISQRT 블록(462)은 내적 계산으로부터 16 비트를 수신하고, 48 비트 워드내의 3개의 값으로 복사된 16 비트 결과를 생성한다. 더욱이, L-코어(354)는 반사 하이라이트를 계산하기 위해 사용되는 멱함수(464)를 또한 포함한다. 멱함수 유닛(464)은 내적 계산으로부터 16 비트형태로 또한 취득하고 48 비트 워드내의 3개의 값으로 복사된 16 비트 결과를 생성한다. 멱함수 유닛(464)은 두 개의 테이블 조사를 수행하고 정확한 값을 생성하는 다른 계산을 수행한다. 그 결과는 0.5%에서 정확하거나, 8 비트 컬러의 상당한 비트에서 정확하다.
L-코어 통신 버퍼
L-코어(354)는 다른 부분의 칩과 통신하는 5개의 상이한 버퍼를 포함하고 있다. LI 버퍼(376)는 F-코어 블록(352)내의 FI 버퍼(372)에 응답한다. LI 버퍼(376)는 7개의 48 비트 레지스트로서 작용하고, 3개의 컬러, 3개의 법선, 및 3 개의 알파값을 가진 하나의 워드를 포함한다. F-코어(352)내의 FS 레지스터(384)와 같이, LI 버퍼(376)는 두 개의 FI 버퍼(372), 두 개의 FL 버퍼(374), 추가로 F-코어(352)에서 처리되는 하나의 원 버퍼와 매칭되는 5개의 버퍼로 구성되어 있다.
FL 버퍼(374)는 F-코어(352)로부터 XYZ 뷰 포인트 벡터를 수신하는데 사용된다. FL 버퍼(374)는 또한 필요할 때 클리핑 RGB 컬러와 알파값을 저장하는데 사용된다. FLL FLFO(378)는 로컬 라이트에 대한 감쇠값을 통과시키는데 사용된다. 이 값은 F-코어에서 수행될 수 있는 부동 소수점 계산을 필요로 한다. 라이팅 계산이 속성 벡터가 라이트에 필요한 포인트로 갈 때, L-코어(354)는 데이터가 FLL FLFO(378)에서 이용될 때까지 중지한다.
FLF 버퍼(380)는 L-코어와 F-코어간의 통신용이고, 정상 동작용으로 의도된 것은 아니다. FLF 버퍼(380)의 1 실행 시간 사용은 클리핑동안에 L-코어(354)에서 역으로 라이팅 값을 전송하는 것이고, F-코어에 대하여는 스폿 라이트로 이용하기 위해 L-코어(354)에서 멱함수 로직을 "빌리는 것(borrow)"이다. 이것을 행하기 위하여, F-코어는 두개의 멱함수 파라미터를 FLF 버퍼(380)에 기록하고, 그 다음, L-코어를 인터럽트하고, 계산이 수행되는 것을 요구한다. 계산이 완료할 때, 그 결과는 역으로 FLF 버퍼(380)으로 위치되고, L-코어(354)는 계속할 수 있다. F-코어(352)는 FLF 버퍼(380)의 한 쪽으로부터 그 결과를 판독한다. FLF 버퍼(380)는 또한 진단용으로 사용된다.
LS 버퍼(386)는 셋업 계산용으로 S-코어(356)에 데이터를 전송하는데 사용되는 기록 전용 출력 레지스터로 구성되어 있다. 하나의 컬러와 알파값은 이러한 인터페이스를 통해서 전송된다. 표준 삼각형에 있어서, 3개의 컬러와 하나의 알파 워드(3개의 값을 포함)는 S-코어(356)에 전송된다. 바람직한 실시예에서, LS 버퍼(386)는 4개의 이중 버퍼 엔트리로 구성되어 있다.
그래픽 좌표계
호스트 CPU(102)가 그래픽 가속기(112)에 기학적인 초기값을 전송할 때, 이러한 초기값의 정점은 전형적으로 3차원 모델 공간 좌표(또한 월드 공간 좌표)의 용어로 표현된다. 월드 공간 좌표는 표현(예, 피트, 마일, 미터 등)에 편리한 어떠한 유닛에 표현될 수 있다. 실제 파이프라인 단계에 의해 처리하기 전에, 이러한 좌표는 뷰 변환 동작으로 진행하고, F-코어 블록(352)에서 수행되고, 이것은 이러한 정점을 스크린 공간 좌표로 변환한다. 스크린 공간은 화소(또는 그 단편) 용어로 측정되고, 스크린의 최대 화소 좌표(예, 1280×1024 화소)로 경계지어진다.
F-코어 블록(352)에서 수행되는 뷰 변환 동작은 입력 좌표값을 나타내는 벡터로 변환 행렬("현재의 뷰 행렬")을 승산하는 것을 포함한다. 변환 행렬로 입력 좌표 벡터를 승산하는 것은 정점 좌표를 소정의 아이 위치에 매핑하는 것을 포함하여 여러 효과를 가지고 있다. 이러한 변환은 또한 제 4 정점 좌표(W)를 이용하여 초기값의 사시 투영을 제공한다.
F-코어 블록(352)내의 변환 동작의 다른 효과는 원도우-뷰포트 변환이다. "윈도우"는 초기값이 위치되어 있는 곳을 정의하는 월드 좌표내의 영역(전형적으로 역삼각형)이다. "뷰포트"는 초기값이 실제로 렌더링될 수 있는 스크린 공간 좌표내의 대응하는 영역이다. 윈도우-뷰포트 변환의 결과로서, 주어진 초기값은 F-코어 블록(352)에 의해 스케일링, 클리핑 등이 행해질 수 있다. 상기된 바와 같이, 정점(스크린 공간 좌표에서)은 라이팅 계산용으로 FL 버퍼(374)를 통해 L-코어 블록(354)에 전송된다.
로컬 아이 벡터를 계산하기 위해, 아이 위치(월드 공간 좌표)와 정점 위치(스크린 공간 좌표)가 고려되어야 한다. 아래에 설명된 바와 같이, 로컬 아이는 스크린 공간내의 정점을 아이 벡터 공간(월드 좌표내)으로 변환하는 뷰 벡터 행렬을 이용하여 계산된다. 뷰 벡터 행렬은 현재 뷰 행렬의 역 행렬로부터 부분적으로 계산되고, 정점 좌표의 역 변환을 월드 공간에 제공한다.
여기서, 도 6a를 참조하면, 표면(512)상에 정점("V")이 묘사되어 있다. 아이 벡터(516)는 정점(502)에서 아이 위치(508)로 뻗어 있다. 벡터(516)는 포인트("S") (510)에서 z=0(월드 공간 좌표계)을 통과한다. 디스플레이 디바이스(84)의 스크린(516)는 z=0(도 6a에 도시된 측면도에 도시)내에 존재하는 것을 고려한다. XGL과 OpenGL과 같은 그래픽 표준에서, 거울 반사값과 같은 계산은 표면 법선(504)및, 정점(502)에서 광원(506)으로 뻗어 있는 라이트 방향 벡터(516)에도 관련되어 있다. 종래의 시스템(부동 소수점 라이팅 유닛으로)에서, 로컬 아이 벡터는 아이 위치(508)에서 정점(502)의 위치(월드 공간에서의 역변환)를 감산함으로써 계산되었다. 이러한 거리는 상당히 크기 때문에, L-코어 블록(354)의 수적인 범위를 초과할 수 있다.
도 7 - 로컬 아이 벡터의 계산
여기서 도 7를 참조하면, 주어진 아이 위치(예, 아이 위치(508))에 대응하는 로컬 아이 벡터 및 주어진 정점(예, 정점(502))의 고속 계산에 대한 방법(600)이 도시되어 있다. 단계(610)에서, 뷰 벡터 행렬이 생성된다, 추가로 아래에 상세히 설명되는 바와 같이, 뷰 벡터 행렬은, 정점(502)가 매핑되는 주어진 뷰포트의 코너의 스크린 공간 좌표와 현재의 뷰 행렬의 역행렬로부터 생성된다. 일실시예에서, 뷰 벡터 행렬은 희소 3×3 행렬이다.
단계(610)에서, L-코어 블록(354)은 정점(502)에 대한 스크린 공간 좌표르 수신한다. 이러한 좌표는 FL 버퍼(374)를 통해 전송되고, 또한 정점(502)가 일부인 삼각형 초기값의 다른 정점에 대한 좌표를 포함한다. 바람직한 실시예에서, 이러한 변환된 정점은 셋업 동작을 위해 F-코어 블록(352)에서 S-코어 블록(356)로 동시에 전송되어, 그 정점 좌표는 L-코어 블록(354)에 대하여 전용으로 생성되지 않는다.
단계(630)에서, L-코어 블록(354)은 표현가능한 수적 범위에서 정점(502)에 대한 스크린 공간 좌표를 스케일링한다. 일실시예에서, F-코어 블록(352)는 s11.20 포맷(하나의 부호 비트, 11개의 정수 비트, 및 20개의 분수 비트)을 이용하여 스ㅋ크린 공간 좌표를 표현한다. 최대 스크린 공간 값(X에서 1280.0, Y에서 1024.0)이 표현될 수 있다(가이드 밴드 공간이 고려될 때 최대 범위는 -40.0에서 1320.0). L-코어 블록(354)만이 -2.0에서 +2.0의 범위를 가지고 있지만, 대다수의 최소 유효 분수 비트는 버리고, 인입 정점 좌표는 L-코어(354)의 s1.14 포맷으로 표현되도록 스케일링된다. F-코어(352)에서 L-코어(354)로의 좌표의 전송 결과는 1024만큼의 자동 분할이다. 좌표의 최대 범위는 대략 0.039에서 1.289이다.
단계(640)에서, 미법선화된 아이 벡터는 정점(502)의 스케일링된 스크린 공간 좌표를 나타내는 벡터로 단계(610)에서 생성되는 뷰 벡터 행렬의 행렬 곱을 수행함으로써 계산된다. 이러한 연산은 미법선화된 아이 벡터(516)의 성분을 준다. 이러한 연산은 아이 위치에서 스크린상의 하나의 포인트로의 각도가 그 포인트에서 매핑하는 모든 깊이에 대하여 일정하기 때문에 가능하다.
아래에 설명되는 바와 같이, 뷰 벡터 행렬은 또한 실제 계산을 돕기 위해 아이 벡터(516)의 스케일링을 수행한다. 일부 상황에서, 아이 위치(508)는 유효 아이 벡터(L-코어 블록(354)의 범위를 오버플로우하지 않는 벡터)가 계산되지 않도록 될 수 있다. 일실시예에서, 이러한 상황에 대한 로컬 아이 벡터 계산은 F-코어 블록(352)과 같은 부동 소수점 유닛에 의해 조정될 수 있다. 바람직한 실시예에서, 단계(640)의 변환 처리는 하나의 L-코어(354) 마이크로코드 승산-누산 명령에 의해 실행된다.
단계(650)에서, 단계(640)에서 계산된 미법선화된 아이 벡터(516)는 법선화된다(동일 방향의 단위 길이로 변환). 바람직한 실시예에서, 이러한 처리는 3개의 L-코어(354) 마이크로코드 명령을 포함하고 있다. 먼저, 미법선화된 아이 벡터는 제곱된다(내적 명령). 다음에, 내적 결과의 역수가 취해진다(역 제곱근 명령). 최종적으로, 역 제곱근 결과는 최초 뷰 벡터값(승산 명령)에 의해 승산되고 올바른 정규화된 로컬 아이 벡터를 얻는다.
단계(660)에서, 단계(650()에서 계산된 정규화된 로컬 아이 벡터는 거울 반사값과 같은 실질 라이팅 계산을 수행하는데 사용된다. 여기서 도 8a-8b를 참조하면, 거울 계산의 일부 예가 도시되어 있다. 도 8a에서, XGL에 대하여 거울 반사 계산이 도시되어 있다. XGL에서, 거울 하이라이트의 양은 라이트 벡터(672A)와 법선 벡터(674A)로부터의 반사 벡터(676A)를 계산함으로써 계산된다. 반사 벡터(676A)와 아이 벡터(678A)의 내적은 거울 반사의 양을 결정한다. 도 8b에서, OpenGL에 대하여 거울 반사 계산이 도시되어 있다. OpenGL에서, 반사 벡터(676B)는 아이 벡터(678B)와 라이트 벡터(672B)간의 중간이 되도록 계산된다. 거울값은 반사 벡터(676B)와 법선 벡터(674B)의 내적으로부터 결정된다. 양 방법은 단점과 장점을 가지고 있다.
무한 아이 위치로 사용될 때, OpenGL 방법은 라이트당 한번의 반사 벡터의 계산을 가능하게 하고, 정점당 한 번의 내적 연산만을 필요로 한다. 그러나, 로컬 아이 포인트로, 반사 벡터는 모든 정점에 대하여 라이트당 한 번 계산되어야 하고, 법선화 동작이 필요하기 때문에 상당한 비용이 든다.
XGL 방법은 약간 재배열될 수 있기에 하나의 반사 벡터는 동일 반사 벡터가 각각의 라이트에 대하여 사용되는 상태로 정점당 계산된다. 도 8d에 도시된 바와 같이, 반사 벡터(676C)와 아이 벡터(678C)는 법선 벡터(674C)상의 아이 벡터(678C)의 투영의 높이를 만든다. 2만큼 이 높이를 승산하고 그 결과로 법선 벡터(674C)를 승산하면, 아이 벡터(678C)에 가산된 반사 벡터와 등가인 법선 벡터(674C)상에 포인트가 주어진다. 평행 사변형을 이용하고 이 포인트로부터 아이 벡터(678C)를 감산하면, 실제 반사 벡터(676C)가 주어진다. 양 벡터는 이러한 연산전에 단위 길이에 법선화되기 때문에, 그 결과는 또한 법선화된다. 주어진 정점에 대한 각각의 라이트와의 반사 벡터(676C)의 내적은 도 8c에 도시된 바와 같이, 거울 반사량을 만든다.
도 9 - 뷰 벡터 행렬의 생성
여기서 도 9를 참조하면, 상기 사용된 뷰 벡터 행렬을 생성하는 방법(700)이 설명되어 있다. 단계(710)에서, 역 행렬은 현재 뷰 행렬로부터 생성된다. (현재의 뷰 행렬은 그래픽 파이프라인의 초기 단계에서 월드 공간 좌표에서 스크린 공간 좌표로 변환하는데 사용된다.) 단계(712)에서, 월드 좌표는 역행렬을 이용하여 주어진 아이 위치에 대하여 계산된다. 바람직한 실시예에서, 주어진 아이 위치에 대한 월드 좌표는 역행렬(아래에 리스트한 코드를 참조)의 행(2)의 성분을 단순화한다. 단계(714)에서, 주어진 뷰포트의 코너 좌표에 대한 월드 공간 좌표는 단계(710)에서 역행렬로 주어진 뷰포트의 코너의 클립 공간 좌표를 변환함으로써 결정된다. (클립 공간 좌표에서, 뷰 포트의 좌측 에지가 y=+1.0에 있고, 우측 에지가 x=+1.0에 있다. 유사하게, 뷰 포트의 상부 에지는 y=+1.0에 있고, 하부 에지는 y=-1.0에 있다. (x,y) 클립 좌표내의 주어진 뷰포트의 4개의 코너는 좌상귀에 대하여 (-1.0,+1.0)이고, 우상귀에 대하여 (+1.0,+1.0)이고, 좌하귀에 대하여 (-1.0,-1.0)이고, 우하귀에 대하여 (+1.0,-1.0)이다. z 와 w 좌표는 각각의 코너에 대하여 1.0이다.)
단계(716)에서, 주어진 아이 위치에 대한 월드 공간 좌표뿐만 아니라, 주어진 뷰포트의 코너 좌표에 대한 월드 공간 좌표는 법선화된다. 단계(718)에서, 단계(716)로부터의 최종 월드 좌표는 법선화된 아이 위치에서 뷰포트의 코너로 월드 공간내의 복수의 벡터를 생성하는데 사용된다. 이러한 벡터는 뷰포트에 대한 뷰 체적을 정의한다. 다음에, 단계(720)에서, 이 복수의 벡터는 평면 Z=1에 법선화된다. 법선화후, 사이즈와 중심 오프셋(x 및 y 양 방향으로)은 단계(722)에서 주어진 뷰포트에 대하여 결정된다. 유사하게, 단계(724)에서, 투영의 중심 오프셋뿐만 아니라, 주어진 뷰포트상의 복수의 벡터의 투영과 사이즈가 결정된다. 주어진 뷰포트의 사이즈와 중심 오프셋은 스크린 공간 좌표에서 계산되고, L-코어(354)의 범위에서 조정된다.
투영의 사이즈와 중심 오프셋은 단계(726)에서 미법선화된 뷰 벡터 행렬 성분를 계산하기 위해 주어진 뷰포트의 사이즈와 오프셋에 따라서 사용된다. 다음에, 뷰 벡터 행렬에서의 최대 입력값은 단계(728)에서 결정되고, 단계(730)에서 최대 뷰 벡터 길이의 결정을 가능하게 한다. 단계(732)에서, 미법선화된 뷰 벡터 행렬 성분은 주어진 뷰포트에 대한 소정 범위내에서 최대 벡터 길이를 유지하도록 스케일링되고, 최종 뷰 벡터 행렬 성분값이 주어진다.
바람직한 실시예에서, 주어진 뷰포트에 대한 소정 범위는 도 6b를 기준으로 설명될 것이다. 도 6b는 스크린(514)내의 뷰포트(520)를 도시하고 있다. 뷰 벡터(아이 벡터의 다른 이름)(530)는 방법(600)을 기준으로 상기된 바와 같이 계산된다. 뷰 벡터(530)는 두 개의 기준을 근거로 유효하게 결정된다. 먼저, 아이 위치(508)에서 뷰포트(520)로의 거리는 아이 벡터 공간(월드 좌표로 표현)에서 최소한 0.5이여야 한다. 이 거리는 도 6b내의 구획선(522)에 의해 도시되어 있다. 이 최소 길이는 법선 제도가 역수 제곱근 연산동안에 오버플로우하는 것을 방지한다. 두번째로, 아이 위치(508)에서 뷰포트(520)의 보다 먼 법적 포인트로의 거리는 범위내의 다른 부분의 유지하기 위해 1.0보다 적어야 한다. 이 거리는 구획선(524,526)에 의해 표현된다. 다른 실시예에서, 이러한 소정 범위는 가변할 수 있다. 일부 상황에서, 유효 로컬 아이 벡터는 계산되지 않을 수 있다. 일실시에에서, 이러한 로컬 아이 벡터는 F-코어 블록(352)과 같이 부동 소수점 유닛에서 계산된다.
뷰 벡터 행렬 생성의 코드 리스트
본 발명의 바람직한 실시예에서 수행되는 뷰 벡터 행렬 계산용 소스 코드가 아래에 있다.
본 발명은 고정 소수점 라이팅 유닛에서 로컬 눈 벡터를 고속으로 계산하는 방법을 포함한다. 스크린 공간 좌표에서 주어진 뷰포트로 투영되는 초기 삼각형에 대해서, 로컬 눈 벡터는 주어진 눈 위치 및 주어진 초기 삼각형의 정점에 상응한다. 본 방법을 사용하여 로컬 눈 벡터가 고속으로 계산될 수 있지만, 보다 사실감있는 라이팅 효과로 인해 성능이 감소되지 않는다.

Claims (23)

  1. 로컬 눈 벡터는 주어진 눈 위치 그리고 주어진 초기 삼각형의 제 1 정점에 상응하고, 상기 주어진 초기 삼각형은 주어진 뷰포트로 투영되는 고정 소수점 라이팅 유닛의 로컬 눈 벡터를 계산하는 방법에 있어서,
    상기 주어진 뷰포트의 스크린 공간 좌표인 코너 좌표 그리고 상기 주어진 눈 위치에 상응하며 상기 주어진 뷰포트에 상응하는 스크린 공간 좌표를 눈 벡터 공간으로 매핑할 수 있는 뷰 벡터 행렬을 생성하는 단계;
    상기 제 1 정점에 상응하며 스크린 공간 좌표인 제 1 세트의 좌표를 수신하는 단계;
    상기 제 1 세트의 좌표를 상기 고정 소수점 라이팅 유닛에 의해 표현가능한 수치범위로 스케일링하는 단계; 및
    비법선화 로컬 눈 벡터를 생성하고, 상기 비법선화 로컬 눈 벡터는 라이팅 계산을 수행하도록 사용가능하며, 상기 뷰 벡터 행렬을 사용하여 상기 제 1 세트의 좌표를 변환하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서, 상기 비법선화 로컬 눈 벡터를 법선화하고, 이에따라 법선화 로컬 눈 벡터를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서, 상기 법선화 로컬 눈 벡터를 사용하여 상기 라이팅 계산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서, 상기 뷰 벡터 행렬은 상기 주어진 뷰포트 및 현재 뷰 행렬의 역행렬의 상기 코너 좌표로부터 계산되고, 상기 현재 뷰 행렬은 월드 공간 좌표로부터 스크린 공간 좌표로 정점을 변환하도록 사용가능하며 상기 주어진 눈 위치에 의존하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서, 상기 뷰 벡터 행렬을 생성하는 단계는:
    상기 역행렬로부터 상기 주어지 눈 위치에 대한 월드 좌표를 계산하는 단계;
    상기 역행렬을 사용한 상기 주어진 뷰포트의 상기 코너 좌표 및 상기 주어진 뷰포트의 클립 공간 좌표에 대한 월드 공간 좌표를 계산하는 단계;
    법선화 월드 공간 코너 좌표가 발생되도록 상기 주어진 뷰포트의 상기 코너 좌표에 대한 상기 월드 공간 좌표를 법선화하는 단계;
    법선화 월드 공간 눈 좌표가 발생되도록 상기 주어진 눈 위치에 대한 상기 월드 공간 좌표를 법선화하는 단계;
    상기 법선화 월드 공간 눈 좌표로부터 상기 각 법선화 월드 공간 코너 좌표로 월드 공간 좌표의 복수의 벡터를 생성하는 단계;
    상기 복수의 벡터를 상기 주어진 뷰포트의 전방 클리핑 면으로 법선화하는 단계;
    상기 주어진 뷰포트로 투영되는 상기 복수의 벡터의 크기를 측정하는 단계;
    상기 투영의 중심 오프셋을 측정하는 단계;
    상기 주어진 뷰포트의 상기 크기 및 상기 주어진 뷰포트의 상기 중심 오프셋이 상기 라이팅 유닛에 의해 조절되며, 스크린 공간 좌표의 상기 제 1 뷰포트의 중심 오프셋과 상기 주어진 뷰포트의 크기를 측정하는 단계;
    상기 주어진 뷰포트의 상기 중심 오프셋, 상기 주어진 뷰포트의 상기 크기, 상기 투영의 상기 중심 오프셋, 및 상기 투영의 상기 크기로부터 비법선화 뷰 벡터 행렬 성분을 계산하는 단계;
    상기 뷰 벡터 행렬에 대한 최대 입력값을 계산하는 단계;
    상기 비법선화 뷰 벡터 행렬 성분을 사용하여 상기 최대 입력값을 변환함으로써 최대 뷰 벡터 길이를 측정하는 단계; 및
    최종 뷰 벡터 행렬 성분값이 발생하도록 소정의 범위내로 상기 최대 벡터 길이를 유지하기위해 상기 비법선화 뷰 벡터 행렬 성분을 스케일링하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서, 상기 뷰 벡터 행렬을 생성하는 단계는 상기 최종 뷰 벡터 행렬 성분이 유효 행렬을 형성하는지를 측정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 5 항에 있어서, 상기 최대 뷰 벡터 길이가 스케일링된 월드 공간 좌표에서 1.0미만으로 계산된다면 상기 최대 뷰 벡터 길이는 상기 소정의 범위내에 있는 것을 특징으로 하는 방법.
  8. 제 6 항에 있어서, 스케일링된 월드 공간 좌표에서 상기 최대 뷰 벡터 길이가 1.0미만이라면 그리고 상기 주어진 눈 위치로부터 상기 주어진 뷰포트로의 거리가 상기 스케일링된 월드 공간 좌표에서 적어도 0.5이라면 상기 최종 뷰 벡터 행렬 성분은 상기 유효 행렬을 형성하는 것을 특징으로 하는 방법.
  9. 제 8 항에 있어서, 상기 유효 행렬을 형성하지 않는 상기 뷰 벡터 행렬 성분에 응답하여 독립 부동 소수점 유닛에서 상기 법선화된 로컬 눈 벡터를 계산하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제 1 항에 있어서, 상기 제 1 정점에 상응하는 상기 제 1 세트의 좌표는 월드 공간 정점 좌표를 스크린 공간 정점 좌표로 변환하도록 구성된 부동 소수점 유닛으로부터 전달되는 것을 특징으로 하는 방법.
  11. 제 1 항에 있어서, 상기 제 1 세트의 좌표를 스케일링하는 단계는 상기 라이팅 유닛에 의해 표현가능한 범위로 상기 제 1 세트의 각 좌표의 선택된 비트를 절단하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제 1 항에 있어서, 뷰 벡터 행렬을 사용하여 상기 제 1 세트의 좌표를 변환하는 단계는 상기 라이팅 유닛에 의해 실행되는 단일 마이크로코드 지시에 의해 수행되는 것을 특징으로 하는 방법.
  13. 제 1 항에 있어서, 상기 제 1 세트의 좌표를 변환하는 단계는 상기 뷰 벡터 행렬 및 상기 제 1 세트의 좌표를 승산 행렬하는 단계를 포함하는 것을 특징으로 하는 방법.
  14. 제 1 항에 있어서, 상기 라이팅 계산은 상기 법선화 로컬 눈 벡터를 사용하여 무한정 광원에 대한 반사 하이라이트를 계산하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 제 1 항에 있어서, 상기 제 1 정점에 상응하는 상기 제 1 세트의 좌표는 복수의 초기 삼각형의 정점의 변환을 수행하도록 구성된 부동 소수점 유닛으로부터 셋업 유닛 및 상기 라이팅 유닛으로 동시에 전달되는 것을 특징으로 하는 방법.
  16. 주어진 초기 삼각형의 제 1 정점을 스크린 공간 좌표로부터 월드 공간 좌표로 변환하도록 상기 뷰 벡터 행렬이 사용가능하며, 상기 주어진 초기 삼각형이 주어진 뷰포트내에 있고, 주어진 눈 위치에 대한 뷰 벡터를 생성하는 방법에 있어서,
    월드 공간 좌표로부터 스크린 공간 좌표로 정점을 변환하도록 사용가능한 현재 뷰 행렬로부터 역행렬을 생성하는 단계;
    상기 역행렬로부터 상기 주어진 눈 위치에 대한 월드 좌표를 계산하는 단계;
    상기 주어진 뷰포트의 클립 공간 좌표 및 상기 역행렬을 사용한 상기 주어진 뷰포트의 코너 좌표에 대한 월드 공간 좌표를 계산하는 단계;
    법선화된 월드 공간 코너 좌표를 발생하도록 상기 주어진 뷰포트의 상기 코너 좌표에 대한 상기 월드 공간 좌표를 법선화하는 단계;
    법선화된 월드 공간 눈 좌표를 발생하도록 상기 주어진 눈 위치에 대한 상기 월드 공간 좌표를 법선화하는 단계;
    상기 법선화된 월드 공간 눈 좌표로부터 상기 각 법선화된 월드 공간 코너 좌표로 월드 공간 좌표의 복수의 벡터를 생성하는 단계;
    상기 주어진 뷰포트의 전방 클리핑 면으로 상기 복수의 벡터를 법선화하는 단계;
    상기 주어진 뷰포트로 투영되는 상기 복수의 벡터의 크기를 측정하는 단계;
    상기 투영의 중심 오프셋을 측정하는 단계;
    상기 주어진 뷰포트의 상기 크기 및 상기 주어진 뷰포트의 상기 중심 오프셋이 상기 라이팅 유닛에 의해 조절되며, 스크린 공간 좌표의 상기 제 1 뷰포트의 중심 오프셋과 상기 주어진 뷰포트의 크기를 측정하는 단계;
    상기 주어진 뷰포트의 상기 중심 오프셋, 상기 주어진 뷰포트의 상기 크기, 상기 투영의 상기 중심 오프셋, 및 상기 투영의 상기 크기로부터 비법선화 뷰 벡터 행렬 성분을 계산하는 단계;
    상기 뷰 벡터 행렬에 대한 최대 입력값을 계산하는 단계;
    상기 비법선화 뷰 벡터 행렬 성분을 사용하여 상기 최대 입력값을 변환함으로써 최대 뷰 벡터 길이를 측정하는 단계; 및
    최종 뷰 벡터 행렬 성분값이 발생하도록 소정의 범위내로 상기 최대 벡터 길이를 유지하기위해 상기 비법선화 뷰 벡터 행렬 성분을 스케일링하는 단계를 포함하는 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서, 상기 최종 뷰 벡터 행렬 성분이 유효 행렬을 형성하는지를 측정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제 16 항에 있어서, 상기 최대 뷰 벡터 길이가 스케일링된 월드 공간 좌표에서 1.0미만으로 계산된다면 상기 최대 뷰 벡터 길이는 상기 소정의 범위내에 있는 것을 특징으로 하는 방법.
  19. 제 18 항에 있어서, 스케일링된 월드 공간 좌표에서 상기 최대 뷰 벡터 길이가 1.0미만이라면 그리고 상기 주어진 눈 위치로부터 상기 주어진 뷰포트로의 거리가 상기 스케일링된 월드 공간 좌표에서 적어도 0.5이라면 상기 최종 뷰 벡터 행렬 성분은 상기 유효 행렬을 형성하는 것을 특징으로 하는 방법.
  20. 제 17 항에 있어서, 상기 유효 행렬을 형성하지 않는 상기 뷰 벡터 행렬 성분에 응답하여 독립 부동 소수점 유닛에서 상기 법선화된 로컬 눈 벡터를 계산하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  21. 주어진 눈 위치 및 주어진 뷰포트로 투영되는 주어진 초기 삼각형의 제 1 정점에 상응하는 로컬 눈 벡터를 계산하기위한 고정 소수점 라이팅 유닛에 있어서,
    현재 뷰 행렬은 상기 주어진 눈 위치에 의존하며, 월드 공간 좌표로부터 스크린 공간 좌표로 정점을 변환하도록 사용가능한 현재 뷰 행렬의 역행렬과 상기 주어진 뷰포트의 상기 코너 좌표로부터 계산되며, 뷰 벡터 행렬을 저장하도록 구성된 복수의 메모리 위치;
    제 1 세트의 좌표는 스크린 공간 좌표이고, 상기 제 1 세트의 좌표를 상기 고정 소수점 라이팅 유닛에의해 표현가능한 수치 범위로 스케일링하도록 고정 소수점 라이팅 유닛이 구성되며, 상기 제 1 정점과 상응하는 제 1 세트의 좌표를 수신하도록 구성된 입력 정점 좌표 버퍼; 및
    제 1 라이팅 루틴은 상기 뷰 벡터 행렬을 사용하는 것을 포함하며, 라이팅 계산을 수행할 수 있는 비법선화된 로컬 눈 벡터를 발생하도록 제 1 라이팅 루틴의 제어하에서 상기 제 1 세트의 좌표를 변환하도록 구성된 고정 소수점 산술 유닛을 포함하는 것을 특징으로 하는 고정 소수점 라이팅 유닛.
  22. 제 21 항에 있어서, 법선화된 로컬 눈 벡터를 발생하기 위해 상기 산술 유닛은 비법선화된 로컬 눈 벡터를 법선화하도록 더 구성된 것을 특징으로 하는 고정 소수점 라이팅 유닛.
  23. 제 22 항에 있어서, 상기 법선화된 로컬 눈 벡터를 사용하여 라이팅 계산을 수행하도록 더 구성되어 있는 것을 특징으로 하는 고정 소수점 라이팅 유닛.
KR1019990003389A 1998-02-03 1999-02-02 고정소수점라이팅유닛의로컬눈벡터의고속계산 KR19990072375A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US9/017,973 1998-02-03
US09/017,973 US6014144A (en) 1998-02-03 1998-02-03 Rapid computation of local eye vectors in a fixed point lighting unit

Publications (1)

Publication Number Publication Date
KR19990072375A true KR19990072375A (ko) 1999-09-27

Family

ID=21785575

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990003389A KR19990072375A (ko) 1998-02-03 1999-02-02 고정소수점라이팅유닛의로컬눈벡터의고속계산

Country Status (4)

Country Link
US (2) US6014144A (ko)
EP (1) EP0933729A3 (ko)
JP (1) JPH11272880A (ko)
KR (1) KR19990072375A (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098297B2 (en) * 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US6389485B1 (en) * 1998-10-02 2002-05-14 International Business Machines Corporation Graphics adapter capable of supporting lighting models from multiple application programming interfaces within a graphics system
US6304275B1 (en) * 1998-10-31 2001-10-16 Hewlett-Packard Company Memory efficient surface normal decompression
US6525740B1 (en) * 1999-03-18 2003-02-25 Evans & Sutherland Computer Corporation System and method for antialiasing bump texture and bump mapping
US6504538B1 (en) * 1999-07-01 2003-01-07 Microsoft Corporation Method and system for generating light values for a set of vertices
US6559856B1 (en) * 1999-09-09 2003-05-06 International Business Machines Corporation Apparatus for fixed-point graphics and method therefor
US6611265B1 (en) * 1999-10-18 2003-08-26 S3 Graphics Co., Ltd. Multi-stage fixed cycle pipe-lined lighting equation evaluator
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US6353439B1 (en) * 1999-12-06 2002-03-05 Nvidia Corporation System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline
US7209140B1 (en) 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US6198488B1 (en) * 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
US6844880B1 (en) 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US6452595B1 (en) * 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
GB0010685D0 (en) * 2000-05-03 2000-06-28 Koninkl Philips Electronics Nv Autostereoscopic display driver
US6670958B1 (en) * 2000-05-26 2003-12-30 Ati International, Srl Method and apparatus for routing data to multiple graphics devices
US7576748B2 (en) * 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US6937245B1 (en) * 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7196710B1 (en) * 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US7538772B1 (en) * 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6788303B2 (en) * 2001-02-27 2004-09-07 3Dlabs Inc., Ltd Vector instruction set
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
US6781594B2 (en) * 2001-08-21 2004-08-24 Sony Computer Entertainment America Inc. Method for computing the intensity of specularly reflected light
EP1442390B1 (en) * 2001-10-10 2017-09-13 Sony Computer Entertainment America LLC System and method for environment mapping
US6677953B1 (en) * 2001-11-08 2004-01-13 Nvidia Corporation Hardware viewport system and method for use in a graphics pipeline
US6836247B2 (en) 2002-09-19 2004-12-28 Topcon Gps Llc Antenna structures for reducing the effects of multipath radio signals
US7006090B2 (en) * 2003-02-07 2006-02-28 Crytek Gmbh Method and computer program product for lighting a computer graphics image and a computer
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
US20060071933A1 (en) 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
US7649534B2 (en) * 2006-02-01 2010-01-19 Microsoft Corporation Design of arbitrary linear and non-linear maps
US7880746B2 (en) 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
EP2104930A2 (en) 2006-12-12 2009-09-30 Evans & Sutherland Computer Corporation System and method for aligning rgb light in a single modulator projector
US8051124B2 (en) * 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
US8358317B2 (en) 2008-05-23 2013-01-22 Evans & Sutherland Computer Corporation System and method for displaying a planar image on a curved surface
US8702248B1 (en) 2008-06-11 2014-04-22 Evans & Sutherland Computer Corporation Projection method for reducing interpixel gaps on a viewing surface
US8077378B1 (en) 2008-11-12 2011-12-13 Evans & Sutherland Computer Corporation Calibration system and method for light modulation device
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
US9641826B1 (en) 2011-10-06 2017-05-02 Evans & Sutherland Computer Corporation System and method for displaying distant 3-D stereo on a dome surface
CN103035031B (zh) * 2012-11-15 2016-03-02 北京科东电力控制系统有限责任公司 面向电网运行监控的三维人机交互显示控制方法
US9911395B1 (en) * 2014-12-23 2018-03-06 Amazon Technologies, Inc. Glare correction via pixel processing
US10417813B2 (en) * 2016-12-05 2019-09-17 Nvidia Corporation System and method for generating temporally stable hashed values
CN110689606B (zh) * 2019-08-26 2023-06-30 福建数博讯信息科技有限公司 一种虚拟场景中雨滴下落位置的计算方法及终端

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4866637A (en) * 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function
US5307452A (en) * 1990-09-21 1994-04-26 Pixar Method and apparatus for creating, manipulating and displaying images
US5644689A (en) * 1992-01-13 1997-07-01 Hitachi, Ltd. Arbitrary viewpoint three-dimensional imaging method using compressed voxel data constructed by a directed search of voxel data representing an image of an object and an arbitrary viewpoint
JP3107452B2 (ja) * 1992-04-28 2000-11-06 株式会社日立製作所 テクスチャマッピング方法およびその装置
JPH0757117A (ja) * 1993-07-09 1995-03-03 Silicon Graphics Inc テクスチャマップへの索引を生成する方法及びコンピュータ制御表示システム
GB9424273D0 (en) * 1994-12-01 1995-01-18 Wrigley Adrian M T Improvements in and relating to image constrcution
KR100261076B1 (ko) * 1995-11-09 2000-07-01 윤종용 범프 맵핑과 퐁 쉐이딩을 동시에 수행하는 렌더링방법 및 장치
US5977978A (en) * 1996-11-13 1999-11-02 Platinum Technology Ip, Inc. Interactive authoring of 3D scenes and movies

Also Published As

Publication number Publication date
JPH11272880A (ja) 1999-10-08
EP0933729A3 (en) 2002-05-08
US6141013A (en) 2000-10-31
US6014144A (en) 2000-01-11
EP0933729A2 (en) 1999-08-04

Similar Documents

Publication Publication Date Title
KR19990072375A (ko) 고정소수점라이팅유닛의로컬눈벡터의고속계산
US6724394B1 (en) Programmable pixel shading architecture
US6417858B1 (en) Processor for geometry transformations and lighting calculations
US8144158B2 (en) Display system having floating point rasterization and floating point framebuffering
US8648856B2 (en) Omnidirectional shadow texture mapping
US6342888B1 (en) Graphics processing unit with an integrated fog and blending operation
US7095414B2 (en) Blending system and method in an integrated computer graphics pipeline
US6417851B1 (en) Method and apparatus for lighting module in a graphics processor
US6037947A (en) Graphics accelerator with shift count generation for handling potential fixed-point numeric overflows
US7400325B1 (en) Culling before setup in viewport and culling unit
US6219062B1 (en) Three-dimensional graphic display device
US6870540B1 (en) System, method and computer program product for a programmable pixel processing model with instruction set
US7292239B1 (en) Cull before attribute read
US5623527A (en) Method and apparatus for determining an integer power of a floating point number
US6885375B2 (en) Stalling pipelines in large designs
JP3102031B2 (ja) 模擬光源による3dカラー画像生成システムおよび方法
KR19990078036A (ko) 유효한부동점제트버퍼링을구현하기위한방법및장치
JPH0721155A (ja) 中央演算処理装置
JP2005078357A (ja) 画像処理装置およびその方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid