KR100969448B1 - 그래픽스 시스템의 중간 타겟들을 제공하기 위한 시스템및 방법 - Google Patents

그래픽스 시스템의 중간 타겟들을 제공하기 위한 시스템및 방법 Download PDF

Info

Publication number
KR100969448B1
KR100969448B1 KR1020030023429A KR20030023429A KR100969448B1 KR 100969448 B1 KR100969448 B1 KR 100969448B1 KR 1020030023429 A KR1020030023429 A KR 1020030023429A KR 20030023429 A KR20030023429 A KR 20030023429A KR 100969448 B1 KR100969448 B1 KR 100969448B1
Authority
KR
South Korea
Prior art keywords
intermediate memory
data
component
memory target
target
Prior art date
Application number
KR1020030023429A
Other languages
English (en)
Other versions
KR20040007242A (ko
Inventor
볼랜드미첼비.
보이드찰스엔.
칸첼라아나새알.
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040007242A publication Critical patent/KR20040007242A/ko
Application granted granted Critical
Publication of KR100969448B1 publication Critical patent/KR100969448B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Digital Computer Display Output (AREA)

Abstract

컴퓨터 시스템의 컴퓨터 그래픽스와 관련된 중간 타겟(intermediate target)(들)을 이용하는 시스템들 및 방법들이 제공된다. 각종 실시예들에서, 그래픽스 API들로부터의 직렬화된 프로그램들이 단일 프로그램들에 대한 절차적 셰이더(procedural shader)들의 명령 제한들을 초과하는 알고리즘을 서포트하게 하기 위해, 비디오 메모리의 중간 메모리 버퍼들이 제공되고 이용된다. 중간 버퍼들은 또한 다른 목적의 프로그램들 사이의 데이터 공유도 가능하게 하고, 자동적으로 액세스가능하다. 버퍼들의 사이즈, 즉 중간 타겟들에 저장된 데이터량은 그래픽스 데이터에 대한 해상도의 변화량에 대해 가변적으로 설정될 수 있다. 이 점에 있어서, 단일 프로그램은 중간 데이터를 생성한 후 사용될 수 있고, 동일한 프로그램 및/또는 원한다면 여러번 임의 수의 다른 프로그램들의 연장에 의해 재사용할 수 있어, 현대 그래픽스 칩들의 속도를 유지하면서, 셰이딩 프로그램들의 상당한 유연성 및 복잡성을 가능하게 한다.
비디오 메모리, 중간 버퍼, 절차적 셰이딩, 중간 타겟, 그래픽스 칩

Description

그래픽스 시스템의 중간 타겟들을 제공하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR PROVIDING INTERMEDIATE TARGETS IN A GRAPHICS SYSTEM}
도 1은 컴퓨터 그래픽스 시스템의 그래픽스 파이프라인의 프로세스의 개관도.
도 2a 내지 도 2c는 종래의 그래픽스 파이프라인이 갖는 각종 제한들 및 문제점들을 설명하는 도면.
도 3a는 본 발명이 구현될 수 있는 각종 연산 디바이스들을 갖는 예시적인 네트워크 환경을 나타낸 블록도.
도 3b는 본 발명이 구현될 수 있는 예시적인 무제한 연산 디바이스들을 나타내는 블록도.
도 4는 하드웨어 명령 카운트 제한을 피하기 위한 본 발명의 중간 메모리 타겟들의 예시적인 사용을 나타낸 도면.
도 5는 본 발명에 따른 API의 사용을 설명하는 예시적인 흐름도.
도 6은 본 발명의 중간 메모리 타겟들의 예시적인 특징들을 설명하는 블록도.
도 7은 본 발명에 따라 하드웨어에 의해 수개의 프로그램 패스(pass)들을 갖는 복잡한 기능을 실현하기 위한 중간 메모리 타겟들의 예시적인 사용을 설명하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
10a, 10b : 서버 오브젝트
14 : 통신 네트워크/버스
100 : 연산 환경
120 : 프로세싱 유닛
130 : 시스템 메모리
140 : 제거불가능한 불휘발성 메모리 인터페이스
150 : 제거가능한 불휘발성 메모리 인터페이스
160 : 사용자 입력 인터페이스
170 : 네트워크 인터페이스
이 특허 문헌의 개시물의 일부는 카피라이트 보호에 행해지는 내용을 포함할 수 있다. 카피라이트 소유자는, 특허 및 상표 오피스 특허 파일들 또는 기록들에 나타나는 바와 같이, 특허 문헌 또는 특허 개시물의 누군가에 의한 팩시밀리 재생에 대한 문제가 없지만, 모든 카피라이트 권리들을 보존한다. 다음 경고가 이 문서에 적용될 것이다:Copyrightⓒ2002, Microsoft Corp.
본 발명은 컴퓨터 그래픽스과 관련된 중간 메모리 타겟(들)을 제공하기 위한 시스템들 및 방법들에 관한 것이다. 특히, 본 발명은 픽셀 및 버텍스 셰이더(vertex shader)와 관련되어 사용되는 중간 메모리 타겟(들)을 제공하기 위한 시스템들 및 방법들에 관한 것이다.
3차원(3-D) 그래픽스의 렌더링(rendering) 및 표시는 일반적으로 많은 계산들을 포함한다. 예를 들면, 3-D 오브젝트를 렌더링하기 위해, 렌더링되는 오브젝트를 정의하는 좌표점들 또는 수직선들의 세트가 형성된다. 수직선들은 렌더링 및 표시되는 오브젝트의 표면을 정의하는 다각형들을 형성하도록 결합될 수 있다. 오브젝트를 정의하는 수직선들이 형성되면, 수직선들은 레퍼런스의 오브젝트 또는 모델 프레임으로부터 레퍼런스의 월드(world) 프레임으로 변형되어 결국 모니터 등의 평판 표시 장치에서 표시될 수 있는 2-D 좌표들로 변형될 수 있다. 이 방법에 의해, 수직선들은 각종 조명 계획들 및 소스들에 의한 조명화, 색상화, 그렇지 않으면 변환, 쉐이딩 등이 행해지는 보이는 영역의 외부에 있기 때문에, 회전, 스케일링, 제거 또는 클리핑될 수 있다. 3-D 오브젝트의 렌더링 및 표시에 포함된 프로세스들은 산술적으로 인텐시브(intensive)할 수 있고 다수의 수직선들을 포함할 수 있다.
종래, 도 1에 도시된 바와 같이, 복합 3-D 오브젝트들 또는 그 부분들은, 2차원(2-D) 표면 공간에, 3-D 오브젝트의 대략적인 기하학을 나타내는 인접한 삼각형들("메시(mesh)")의 집합들, 또는 기하학 맵, 즉 표면으로 표현될 수 있다. 메시는 삼각형들의 수직선들의 위치를 통해 지정될 수 있다. 하나 이상의 텍스쳐(texture) 맵들은 텍스쳐 매핑 프로세스에 따라 텍스쳐링된 표면들을 생성하 도록 표면들에 매핑될 수 있다. 여기서, 표면에 걸쳐 텍스쳐링된 신호들은 아주 일반적일 수 있고, 셰이더 절차(들) 등의 변환 메카니즘(들)에 입력될 수 있는 임의의 종류의 중간 결과를 지정하여, 최종 칼라 및/또는 포인트 샘플과 관련된 다른 값들을 생성할 수 있다.
텍스쳐 샘플링 후, 표시 장치의 화소들(픽셀들)로 이미지를 렌더링하거나 데이터를 표시 이외의 어떤 목적으로 다른 곳에 출력하기 전에, 셰이딩 알고리즘 및 기술들과 같은 부가 변환들이 선택적으로 적용될 수 있다. 컴퓨터 그래픽스들의 이미지들은 일반적으로 이산적인 값들(그레이 스케일)의 2-D 어레이로서 또는 이산적인 값들(칼라)의 3개의 2-D 어레이들로서 표시될 수 있다. 표준 (x,y,z) 직교 좌표계를 사용하여, 표면은 메시 버텍스마다 (x,y,z) 좌표를 갖는 메시(예를 들어, 삼각 메시)로서, 또는 (x,y,z) 좌표들이 때때로 표면 파라미터화 도메인(surface parameterization domain)이라 명명되는 2D(u,v) 좌표계로 직선 이미지로서 지정되어 기하학적인 맵으로서 지정될 수 있다. 텍스쳐 맵(들)은 (u,v) 좌표계로 지정될 수도 있다.
그 기하학을 포함한, 신호들이 표면에 첨부된, 표면 파라미터화 도메인의 포인트 샘플들은 텍스쳐링된 메시들 또는 기하학적인 맵들로부터 발생될 수 있다. 이들 샘플들은 각종 계산들을 이용하여 변환 및 셰이딩될 수 있다. 이 변환 및 셰이딩 처리의 마지막에, 포인트 샘플은 (a) 위치 정보, 즉 이미지면에서 포인트 맵을 가리키는 이미지 어드레스 및 (b) 텍스쳐링된 칼라, 또는 그레이 스케일, 위시 정보에 의해 표시된 위치에서의 샘플의 칼라를 나타내는 정보를 포함한다. 숨겨진 표면 제거를 가능하게 하는 포인트 샘플의 깊이 정보, 웨이트(weight), 또는 포인트 샘플에 대한 다른 유용한 정보 등의 다른 데이터가 포함될 수도 있다. 변환되고 텍스쳐링된 표면은 2-D 픽셀 이미지 공간(x,y)의 표시에 의해 렌더링되기 전에 프레임 버퍼에 배치된다. 이 때, 흑백 표시 장치의 경우에는, 2-D 이미지 공간의 각 (x,y) 픽셀 위치가 프레임 버퍼의 표면의 일부 기능에 따라 그레이 값으로 할당된다. 일반적인 칼라 표시 장치의 경우에는, 2-D 이미지 공간의 각 (x,y) 픽셀 위치가 적, 녹, 청(RGB)색의 값들로 할당된다. RGB 이외의 각종 칼라 포맷들도 존재함을 이해해야 한다. 시작부터 끝까지 아키텍쳐가 변화하면서, 방대한 양의 그래픽스 버텍스 및 픽셀 데이터의 크런칭(crunching)을 위한 상기 수단이 그래픽스 파이프라인(pipeline)으로서 알려져 있다.
컴퓨터 그래픽스 산업 및 그래픽스 파이프라인들은 최근 몇 년간 엄청난 성장량을 보여주고 있다. 예를 들면, 현재 세대의 컴퓨터 게임은 더욱 증가하면서 보다 현실적으로 3차원(3-D) 그래픽스로 이동하고 있다. 동시에, 플레이 속도는 더욱 빠르게 구동된다. 이 조합이 비교적 저가의 시스템의 3-D 그래픽스의 고속 렌더링에 대한 요구를 가속화하고 있다.
1970년대 초기에 렌더링 시스템들은 파라미터들에 따라 오브젝트들의 "외형(appearance)"을 묘사할 수 있었다. 이들 및 최근 방법들은 그 표면의 위치 및 배향에 기초하여 오브젝트의 인지된 칼라 및 그것을 조명하는 광원들의 파라미터화를 제공한다. 이와 같이 행함으로써, 오브젝트의 외형이 그로부터 계산된다. 파라미터들은 확산 칼라, 스페큘라(specular) 반사 계수, 스페큘라 칼라, 반사율, 및 오브젝트의 재료의 투과성 등의 값들을 더 포함한다. 이러한 파라미터들은 일반적으로 오브젝트의 셰이딩 파라미터들이라 칭해진다.
초기 시스템들은, 단일 값이 셰이딩 파라미터들에 속한다고 생각했기 때문에 오브젝트의 전면에 걸쳐 일정하고 균일하게 남아있었다. 최근 시스템들은 오브젝트의 상이한 부분들에 상이한 값들을 가질 수 있는 불균일한 파라미터들(예를 들어 투명도)의 사용을 가능하게 했다. 이들 불균일한 파라미터들에 의해 취해진 값들을 오브젝트의 표면의 다양한 부분들에 묘사하기 위해, 2개의 현저하게 다른 기술들 : 절차적 셰이딩(procedural shading) 및 텍스쳐 매핑이 사용되었다. 텍스쳐 매핑은 화소 기반이고 해상도에 의존한다.
절차적 셰이딩은, 이 공간의 기능(종종 절차적 셰이더라고 함)을 셰이딩 파라미터 공간으로 정의함으로써, 1-D, 2-D 또는 3-D 공간의 임의의 점에서의 재료의 외형을 설명한다. 오브젝트는 오리지날 1-D, 2-D 또는 3-D 공간에서 "통합(immersed)"되고, 오브젝트의 표면의 주어진 점들에서의 셰이딩 파라미터들의 값들은 이 점에서 절차적 셰이딩 기능의 결과로서 정의된다. 예를 들면, 나무, 마블 또는 다른 천연 재료들의 외형에 가까운 절차적 셰이더들이 개발되었고 문헌에서 발견될 수 있다.
컴퓨터 시스템의 그래픽스 데이터의 렌더링은 리소스 인텐시브 프로세스들의 집합이다. 셰이딩의 프로세스, 특정 그래픽스 데이터 구조의 세트(들)에 기초하여, 그래픽스 데이터 구조들과 관련된 칼라 등의 특정 원색들에 대한 값들을 결정하기 위해 사용되는 복합 알고리즘을 수행하는 프로세스는, 이러한 인텐시브한 계산 및 복잡한 프로세스를 예시한다. 일반적으로 셰이딩의 프로세스는 어느 정도까지 표준화되었다. 셰이더와 함께 작용하도록 설계된 소스 코드를 어플리케이션에 통과시킴으로써, 셰이더는 어플리케이션이 복합 비디오 그래픽스의 효과적인 묘사를 가능하게 하기 위해 어플리케이션이 생성/이용될 수 있는 오브젝트가 된다.
전문화된 하드웨어 칩들의 현재 구현 이전에, 버텍스 및 픽섹 셰이더들은 때때로 소프트웨어 코드로서 전체 또는 대부분 구현되었고, 때때로 하드웨어를 제어하는 소프트웨어와 보다 정확한 종류의 하드웨어의 조합으로서 구현되었다. 이들 구현들은 종종 CPU에 포함되거나 시스템의 CPU를 사용한 것의 존재를 모방하였다. 예를 들면, 하드웨어 구현들은 CPU 칩을 그 설계에 직접 통합시켜 셰이딩 작업에 요구되는 프로세싱 기능을 수행하였다. 표준 프로세싱 칩이 제공하는 기능의 범위 때문에 CPU는 셰이딩 프로세스에 많은 유연성을 부가시키는 반면, CPU의 내장은 특정 셰이딩 프로세스에 비용을 추가시킨다. 그러나, 오늘날 기술의 하드웨어 상태가 없었다면, 선택의 여지가 없었다.
오늘날, 그러나, 하드웨어 기술에 진보가 있었기 때문에 소프트웨어로 이미 구현된 기능을 특정 하드웨어로 이동시키는 능력이 가능하게 되었다. 그 결과, 오늘날의 픽셀 및 버텍스 셰이더들은 전문화되고 프로그램 가능한 하드웨어 칩들로서 구현된다. 버텍스 및 픽셀 셰이더들의 오늘날의 하드웨어 설계들은 고도로 전문화되어 있기 때문에 과거의 CPU 하드웨어 구현들과 같이 작용하지 않는다.
오늘날의 버텍스 및 픽셀 셰이더들의 전문화된 기능을 나타내는 전문화된 3-D 그래픽스 API들이 개발되었다. 여기서, 개발자는 전문화된 작용을 수행하도록 버텍스 셰이더를 효과적으로 프로그램하는 명령들을 버텍스 셰이더에 다운로딩할 수 있다. 예를 들어, API들은 버텍스 셰이더들의 증가 수들과 관련된 기능, 즉 레지스터 레벨에서 부동점 수들에 대해 전문화된 버텍스 셰이딩 기능을 노출시킨다. 또한, 매우 빠른 버텍스 셰이더가 부동점 수들의 일부 부분만을 리턴시키는 명령 세트를 구현할 수 있다. 이들 명령들을 다운로딩함으로써, 버텍스 셰이더의 명령 카운트 제한이 초과하지 않는다면, 다양한 기능이 달성될 수 있다.
유사하게, 픽셀 셰이더에, 픽셀 셰이더에 명령들을 다운로딩함으로써 전문화된 픽셀 셰이딩 기능이 달성될 수 있다. 예를 들면, 픽셀 셰이더의 리니어 보간 메카니즘(linear interpolation mechanism)을 제공하는 기능이 노출된다. 또한, 픽셀 셰이더들에 맞추어진 명령 세트들과 관련하여 많은 다른 동작 모디파이어(modifier)들의 기능이 개발자들에게 노출된다. 예를 들어, 취소(negating), 리매핑(remapping), 바이어싱(biasing), 및 다른 기능들은 효과적인 픽셀 셰이딩이 요구되는 많은 그래픽스 어플리케이션에 매우 유용하지만, 그것들은 단일 명령의 일부로서 실행되기 때문에 그 명령에 대한 모디파이어들로서 가장 잘 표현된다. 즉, 상기 기능은 많은 그래픽스 동작들에 유리하고, 이미 전문화된 픽셀 및 버텍스 셰이더로의 기능 결합은 개발의 용이함 및 향상된 성능의 견지로부터 엄청난 가치를 더한다. 따라서, 픽셀 셰이더의 명령 카운트 제한이 초과하지 않는다면, 이들 명령을 다운로딩함으로써 다양한 기능이 달성될 수 있다.
2001년 3월 6일자로 출원되어, 공동으로 선임되어 계류중인 미국 특허 출원 제09/801,079호는, 로컬 레지스터들을 갖는 버텍스 셰이더들 및 픽셀 셰이더들의 하드웨어 구현들과의 통신을 위한 예시적인 3차원(3-D) API들을 제공한다. 버텍스 셰이더에 의하면, 온-칩 레지스터 인덱스를 이용할 수 있는 API 통신들이 설명되고, API 통신들에는 레지스터 레벨로 온-칩 구현되고, 취소, 보완(complementing), 리매핑, 바이어싱, 스케일링 및 포화(saturating)를 포함하는 수정 기능들을 수행하는 전문화된 모디파이어가 제공된다. 유리하게도, API 통신들은 매우 유용한 온칩 그래픽스 알고리즘의 요소들을 개발자에게 노출하는 반면, 버텍스 셰이더 및 픽셀 셰이더의 동작들의 세부 사항들을 개발자로부터 숨긴다.
2001년 3월 1일자로 출원된, 공동으로 선임되어 계류중인 미국 특허 출원 제09,796,577호는, 개념적으로 소프트웨어 인터페이스 하부 또는 내부에 존재하는 메카니즘을 통해 절차적 셰이더들을 이용하여 독특한 알고리즘의 요소들을 개발자들에게 노출하고, 개발자가 명령들을 절차적 셰이더들, 및 GPU에 다운로딩할 수 있게 하는 3-D API들을 설명한다. 예를 들어, 이러한 3-D API는 향상된 성능 특성들을 위해 동작들이 3-D 칩에 다운로딩될 수 있게 한다. 이들 3-D API들은, 호스트 프로세서의 프로세싱으로부터 관례의 그래픽스 코드를 제거하고, 이와 같이 프로그램 가능하고 다운로드 가능한 기능을 그래픽스 칩에 배치하기 위해, 플렉시블 온 칩 프로세싱 및 리미티드 온 칩 메모리를 포함함으로써, 이와 같이 프로그램 가능한 기능을 처리하기 시작한 3-D 그래픽스 칩들의 에지 커팅을 이용한다. 이와 같은 API들은 개발자에 의해 기입된 프로그래밍 또는 알고리즘의 기능을 칩에 다운로딩할 수 있기 때문에, 향상된 성능 레벨로 이들 알고르즘들을 수행하도록 칩을 프 로그래밍할 수 있게 한다. 개발자가 3-D 칩에 다운로드 가능한 루틴을 작성할 수 잇는 이 경우와 관련하여, 3-D API와 관련하여 제공되는 알고리즘 요소들의 세트(들)(개발자에 의해 작성되지 않았지만 개발자를 위해 이미 프로그래밍되어 있는 루틴들)도 있다. 유사하게, 개발자는 성능을 향상시키기 위해 이들 미리 패키징된 API 알고리즘들을 프로그램 가능한 3-D 칩에 다운로딩할 수 있다. 3-D 알고리즘의 요소들을 다운로드하는 능력은 개발의 용이함 뿐만 아니라 향상된 성능, 보다 나은 제어를 제공한다.
따라서, 프로그램 가능한 동작들의 도입은 현대 그래픽스 하드웨어에서 보다 폭넓게 확산되었다. 이 일반적인 프로그래밍 가능성에 의해 증가된 성능 레벨에서 정교하고 창조적인 알고리즘에 대한 잠재력이 가능하게 된다. 그러나, 달성될 수 있는 것에 일부 제한이 있다. 일반적으로, 버텍스 및 픽셀 셰이더에서 파이프라인들을 렌더링함에 따라, 도 2a에 도시된 바와 같이, 기하학적인 데이터의 스트림 SGD가 버텍스 셰이더(200)로 입력되어 수직선들의 일부 동작을 수행한 후, 래스터라이저(210)가 기하학적인 데이터를 픽셀 데이터로 래스터화하고, 픽셀 데이터의 스트림 SPD1을 출력한다. 버텍스 셰이더(200)는 전문화된 기능을 수행하기 위해 버텍스 셰이더(200)를 프로그램하는 명령들을 수신할 수 있지만, 버텍스 셰이더 명령들의 사이즈 및 복잡성에 제한이 있다. 유사하게, 픽셀 셰이더(220)는 픽셀 데이터의 스트림 SPD2을 출력하는 데이터에 하나 이상의 변환들을 선택적으로 수행할 수 있다. 픽셀 셰이더(220)도 전문화된 기능을 수행하기 위해 픽셀 셰이더(220)를 프로그램하는 명령들을 수신할 수 있지만, 픽셀 셰이더 명령들의 사이즈 및 복잡성 에 제약이 있다. 따라서, 오늘날이 API들 및 대응하는 하드웨어에 대한 하나의 제약은 대부분의 하드웨어가 매우 제한된 명령 카운트를 갖는다는 것이다. 이 제한된 명령 카운트는 가장 정교한 알고리즘의 일부가 API들을 사용하는 개발자에 의해 구현되는 것을 막는다. 부가적으로, 현행 프로그램 가능한 하드웨어는 개별 프로그램들 사이의 데이터를 교환하기에 매우 제한된 메카니즘을 갖는다, 즉 제1 픽셀 셰이더 프로그램은 제2 픽셀 셰이더 프로그램으로부터의 데이터 출력을 재사용할 수 없다.
부가적으로, 도 2a에 도시된 바와 같이, 픽셀은 그와 연관된 계조값 또는 칼라 값들을 갖는, 이미지 공간의 2-D 그리드의 점으로서 공통으로 생각되지만, 현대 그래픽스는, 표시된 이미지와 관련되어 있든 없든, 픽셀 엔진 파이프라인의 픽셀을 2-D 어레이의 점과 관련된 임의의 집합적인 데이터로서 간주한다. 예를 들어, 도 2a는 적색용 버킷(bucket), 녹색용 버킷 및 청색용 버킷을 갖는 픽셀을 설명하지만, 이 경우일 필요는 없으며, 임의의 수의 버킷들 및 대응하는 값들이 픽셀일 수 있다. 따라서, 2-D 어레이의 픽셀 데이터를 발생하는 데 상당한 유연성이 있으며, 조명 효과들, 웨이트, z-버퍼 정보 등에 대한 파라미터 값들을 포함할 수 있다. 오늘날의 그래픽스 파이프라인이 갖는 문제는, 도 2c에 도시된 바와 같이, 픽셀의 별도의 세트들이 출력될 수 있는 유연성에 관한 것이다. 픽셀 엔진(230)은 임의 종류의 픽셀 데이터를 출력할 수 있다, 즉 출력으로서 스트리밍되는 픽셀들 P1, P2, P3, P4 내지 PN은 모두가 동일한 버킷들을 가져야 함에도 불구하고 픽셀들, P1, P2, P3, P4 내지 PN을 정의하는 버킷들의 종류와 수에 대해 상당한 유 연성을 가질 수 있다. 따라서, P1이 R,G,B 데이터를 포함하고, P2, P3, P4 내지 PN도 R,G,B 데이터를 포함하기 때문에, 출력 픽셀 데이터의 다른 세트들을 정의하기 위한 유연성이 없고, 일부는 조명에 사용될 것이고 일부는 염격하게 칼라에 사용될 것이다. 또한, 현재, 렌더 타겟들에 대한 해상도는 래스터화 프로세스에 따라 미리 결정된다, 즉 렌더링 프로세스는 렌더 타겟에 배치될 수 있는 샘플들의 양을 조정하기 때문에, 렌더 타겟의 해상도, 즉 렌더 타겟과 관련되어 저장될 수 있는 샘플들의 양을 가변적으로 제어하는 것이 바람직할 것이다.
명령 카운트의 제약에 의한 본 그래픽스 파이프라인 아키텍쳐, API들 및 하드웨어와 관련된 본 프로그래밍 가능성의 단점, 출력 형태의 제약들 및 프로그램들 사이의 데이터 공유의 부족을 극복하는 시스템들 및 방법들을 구현하는 것이 요망된다.
상기 관점에서, 본 발명은 컴퓨터 시스템의 컴퓨터 그래픽스와 관련된 중간 타겟(들)을 제공하는 시스템들 및 방법들을 제공한다. 각종 실시예들에서, 본 발명은, 그래픽스 API로부터의 전문화된 프로그램들이 단일 프로그램용 절차적 셰이더들의 명령 제약들을 초과하는 알고리즘을 서포트하게 하는 비디오 메모리의 중간 메모리 버퍼들을 제공하고 이용한다. 중간 버퍼들은 또한 다른 목적의 프로그램들 사이의 데이터 공유를 가능하게 할 수 있고, 자동적으로 액세스가능하다. 버퍼의 사이즈, 즉 중간 타겟들에 저장된 데이터량은 그래픽스 데이터에 대한 해상도의 변화량에 가변적으로 설정될 수 있다. 여기서, 단일 프로그램은 중간 데이터를 발생 시킨 후 사용될 수 있고, 동일한 프로그램 및/또는 임의의 수의 다른 프로그램을 원한다면 수배 연장함으로써 재사용되어, 현대 그래픽스 칩들의 속도를 유지하면서 셰이딩 프로그램들의 상당한 유연성 및 복합성을 가능하게 한다.
본 발명의 다른 특징들 및 실시예들은 이하에 설명된다.
본 발명에 따른 중간 메모리 타겟들을 제공하는 시스템 및 방법들은 첨부 도면을 참조하여 더 설명된다.
개관
상기한 바와 같이, 본 발명은 개발자가 절차적 셰이더들의 기능을 프로그래밍할 수 있게 하는 하급 셰이딩 언어 등의 셰이딩 언어에서 사용되는 복수의 중간 타겟 순환(circulation)을 가능하게 한다. 본 발명에 따른 중간 타겟들의 재순환을 갖지 않는 그래픽스 플랫폼은 퍼 픽셀(per pixel) 및 퍼 버텍스(per vertex) 레벨에서 동작하는 프로그램들의 사이즈 및 복잡성에서 제한된다. 본 발명의 시스템들 및 방법들은 일반적으로 프로그램 가능한 그래픽스 파이프라인의 진화와 관련하여 프로그램 가능한 능력의 이용을 추상화하고 간략화시키는 고급 언어의 생성을 가능하게 한다. 본 발명은 또한 하드웨어 가속화를 사용하여 비 실시간 렌더링을 가능하게 하는 가상 무제한의 길이 프로그램들을 생성하는데 사용될 수 있다. 버퍼의 사이즈, 즉 중간 타겟들에 저장된 데이터의 양은 그래픽스 데이터에 대한 해상도의 변화량에 대하여 가변적으로 설정될 수 있다. 따라서, 본 발명에 따른 비 실시간(non-real time) 렌더링 어플리케이션에 대한 무제한의 하드웨어 가속된 재 순환의 이용가능성은 그래픽스 플랫폼의 속도 및 성능을 증가시킨다.
예시적인 네트워킹되고 분산된 환경들(Exemplary Networked Distributed Environments)
당업자들은 컴퓨터 네트워크의 일부로서, 또는 분산된 연산 환경에서 컴퓨터 또는 다른 클라이언트 또는 서버 장치가 채용될 수 있음을 이해할 수 있다. 이 점에 있어서는, 본 발명은, 본 발명의 중간 메모리 타겟들과 관련되어 사용될 수 있는, 임의의 수의 메모리 또는 기억 장치들, 및 임의의 수의 기억 장치들 또는 볼륨들에 걸쳐 발생하는 임의 수의 어플리케이션들과 프로세스들을 갖는 임의의 컴퓨터 시스템에 적합하다. 본 발명은 리모트 또는 로컬 기억장치를 갖는, 네트워크 환경 또는 분산된 연산 환경에서 배치되는 서버 컴퓨터들 및 클라이언트 컴퓨터들을 갖는 환경에 적용될 수 있다. 본 발명은 또한 리모트 또는 로컬 서비스와 관련하여 정보의 발생, 수신 및 전송을 위한 프로그래밍 언어 기능, 번역 및 실행 가능성을 갖는, 단독형(stand alone) 연산 디바이스들에 적용될 수 있다.
분산된 연산은 연산 장치들과 시스템들 사이의 직접 교환에 의해 컴퓨터 리소스들과 서비스들의 공유를 가능하게 한다. 이들 리소스들 및 서비스들은 정보의 교환, 캐시 기억장치, 및 파일용 디스크 기억장치를 포함한다. 분산된 연산은 클라이언트가 전체 기업의 이익이 되기 위해 그 집합적인 파워를 이용하게 하는, 네트워크 접속점을 이용한다. 이 점에 있어서는, 다양한 장치들이 본 발명의 중간 메모리 타겟을 포함할 수 있는 어플리케이션들, 오브젝트들 또는 리소스들을 가질 수 있다.
도 3a는 예시적인 네트워킹된 또는 분산된 연산 환경의 개략적인 도면을 제공한다. 분산된 연산 환경은 연산 오브젝트들(10a, 10b, 등) 및 연산 오브젝트들 또는 디바이스들(110a, 110b, 110c, 등)을 포함한다. 이들 오브젝트들은 프로그램들, 방법들, 데이터 스토어들, 프로그램 가능한 로직, 등을 포함할 수 있다. 오브젝트들은 PDA들, 텔레비젼들, MP3 플레이어들, 퍼스널 컴퓨터들 등과 같이 동일하거나 상이한 디바이스들의 부분들을 포함한다. 각 오브젝트는 통신 네트워크(14)에 의해 다른 오브젝트와 통신할 수 있다. 이 네트워크 자체는 도 3a의 시스템에 서비스들을 제공하는 다른 연산 오브젝트들 및 연산 디바이스들을 포함할 수 있다. 본 발명의 특징에 따르면, 각 오브젝트(10a, 10b, 등. 또는 110a, 110b, 110c, 등)는 본 발명의 중간 메모리 타겟들의 사용을 요청하기 위해 API, 또는 다른 오브젝트의 사용을 이용할 수 있는 어플리케이션을 포함할 수 있다.
분산된 연산 아키텍쳐에서는, 어떤 역할도 네트워크에 가장 효율적이라고 가정하면, 종래 클라이언트들로서만 사용될 수 있었던 컴퓨터들이 그 자신들 사이에서 직접 통신하고, 클라이언트들 및 서버들 모두로서 기능할 수 있다. 이는 서버들에 대한 부하를 감소시키고 모든 클라이언트들이 다른 클라이언트에서 이용가능한 리소스들을 액세스할 수 있게 함으로써, 전체 네트워크의 가능성 및 효율성을 증가시킨다. 따라서, 본 발명에 따른 중간 타겟들을 사용하는 서비스들은 전체 네트워크에 효율적으로 작용하는, 클라이언트들과 서버들 사이에서 분산될 수 있다.
분산된 연산은 비지니스 전달 서비스들 및 가능성들을 다양한 지라학적인 경계들에 걸쳐 보다 효과적으로 만들 수 있다. 또한, 분산된 연산은 네트워크 캐싱 메카니즘으로서 작용하면서 데이터가 소비되는 지점에 가깝게 데이터를 이동시킬 수 있다. 또한 분산된 연산은 연산 네트워크들이 인텔리전트 에이전트(intelligent agent)들을 이용하여 함께 효과적으로 작용할 수 있게 한다. 에이전트들은 피어(peer) 컴퓨터들에 있고 다양한 종류의 정보를 앞뒤로 통신한다. 에이전트들은 또한 다른 피어 시스템들을 위해 작업들을 착수할 수 있다. 예를 들어, 인텔리전트 에이전트들은 네트워크 상의 작업들의 우선순위를 매기고, 트래픽 플로우(traffic flow)를 변경하고, 국부적으로 파일들을 서치하거나 바이러스 등의 예외 동작을 결정하여 그것이 네트워크에 영향을 미치기 전에 정지시키는데 사용될 수 있다. 모든 종류의 다른 서비스들도 또한 고려될 수 있다. 그래픽스 오브젝트(들), 텍스쳐 맵들, 셰이딩 데이터, 등은 원칙적으로 하나 이상의 위치들에 물리적으로 배치될 수 있기 때문에, 본 명세서에 기재된 중간 타겟들을 사용하는 서비스들을 분산하는 능력은 이러한 시스템에서 매우 유용하다.
또한, 110c 등의 오브젝트는 또 다른 연산 디바이스(10a, 10b, 등 또는 110a, 110b, 등)에 호스팅될 수 있다. 따라서, 서술된 물리적 환경이 컴퓨터들로서 접속된 디바이스들을 나타낼 수 있지만, 이러한 설명은 단지 예시적이며, 물리적 환경은 PDA들, 텔레비전들, MP3 플레이어들, 등과 같은 각종 디지털 디바이스들, 인터페이스들, COM 오브젝트들과 같은 소프트웨어 오브젝트들을 포함하도록 다르게 서술되거나 기재될 수 있다.
분산된 연산 환경들을 서포트하는 다양한 시스템들, 구성 요소들, 및 네트워크 구성들이 있다. 예를 들면, 연산 시스템들은 로컬 네트워크들 또는 넓게 분산 된 네트워크들에 의해, 유선 또는 무선 시스템들에 의해 함께 접속될 수 있다. 현재, 많은 네트워크들은 넓게 분산된 연산을 위한 인프라 구조를 제공하고, 많은 다른 네트워크를 포함하는 인터넷에 접속되어 있다.
홈 네트워킹(home networking) 환경에서는, 전원 라인, 데이터(유선 및 무선 모두), 보이스(voice)(예를 들어, 텔레폰) 및 오락 매체 등의 유일한 프로토콜을 각각 서포트할 수 있는 적어도 4개의 다른 네트워크 전송 매체가 있다. 조명 스위치 및 전기 기구들과 같은 대부분의 가정용 제어 장치들은 접속을 위해 전원 라인을 사용할 수 있다. 데이터 서비스들은 광대역(즉, DSL 또는 케이블 모뎀 중 하나)으로서 가정에 공급될 수 있고, 무선(예를 들어, HomeRF 또는 802.11b) 또는 유선(즉, HomePNA, Cat5, 심지어 전원 라인) 접속을 사용하여 가정 내에 접근가능할 수 있다. 보이스 트래픽은 유선(즉, Cat3) 또는 무선(즉, 셀 폰들) 중 하나로서 가정에 공급될 수 있고,다. Cat3 배선을 이용하여 가정 내에 분산될 수 있다. 오락 매체, 또는 다른 그래픽스 데이터는 위성 또는 케이블 중 하나를 통해 가정에 공급될 수 있고, 일반적으로 동축 케이블을 이용하여 가정에 분산될 수 있다. IEEE 1394 및 DVI는 또한 매체 디바이스들의 클러스터들에 대한 디지털 접속들로서 출현하고 있다. 프로토콜 표준들로서 나올 수 있는 모든 이들 네트워크 환경들 및 다른 환경들은 인터넷에 의해 외부 세계에 접속될 수 있는 인트라넷을 형성하도록 접속될 수 있다. 즉, 각종 전혀 다른 소스들은 데이터의 전송 및 저장을 위해 존재하기 때문에 진보하고, 연산 디바이스들은 본 발명에 따른 중간 타겟들의 중간 결과들을 이용하는 프로그램 오브젝트들에 발생하기 쉬운 액세스되거나 이용된 데 이터 등의, 데이터의 공유 방법들이 요구될 것이다.
인터넷은 흔히 컴퓨터 네트워킹의 기술에 공지되어 있는 프로토콜들의 TCP/IP 슈트(suite)를 이용하는 네트워크들과 게이트웨이들의 집합체를 나타낸다. TCP/IP는 "전송 제어 프로토콜/인터페이스 프로그램(Transport Control Protocol/Interface Program)"의 약자이다. 인터넷은 사용자들이 네트워크 상에서 정보를 공유하고 상호작용하게 하는 네트워킹 프로토콜들을 실행하는 컴퓨터들에 의해 내부 접속된, 지리적으로 분산된 리모트 컴퓨터 네트워크들의 시스템으로서 설명될 수 있다. 이러한 와이드-스프레드 정보 공유 때문에, 인터넷과 같은 리모트 네트워크들은 일반적으로, 개발자들이 궁극적으로 제한없이 전문화된 동작들 또는 서비스들을 수행하기 위한 소프트웨어 어플리케이션들을 설계할 수 있는 오프 시스템들로 발전하고 있다.
따라서, 네트워크 인프라 구조는 클라이언트/서버, 피어 투 피어(peer-to-peer), 또는 하이브리드 아키텍처들과 같은 네트워크 토폴로지들의 호스트를 가능하게 한다. "클라이언트(client)"는 관련되지 않은 다른 클래스 또는 그룹의 서비스들을 사용하는 클래스 또는 그룹의 멤버이다. 따라서, 연산시, 클라이언트는 또 다른 프로그램에 의해 제공된 서비스를 요청하는 프로세스, 예를 들어 명령들 또는 작업들의 대략적인 세트이다. 클라이언트 프로세스는 다른 프로그램 또는 서비스 자체에 대한 임의의 작업의 세부 사항들을 "인지할(know)" 필요 없이 요청된 서비스를 이용한다. 클라이언트/서버 아키텍처, 특히 네트워킹된 시스템에서, 클라이언트는 보통 또 다른 컴퓨터, 즉 서버에 의해 제공된 공유 네트워크 리소스들을 액 세스하는 컴퓨터이다. 도 3a의 예에서, 컴퓨터들(110a, 110b, 등)은 서버 (10a, 10b, 등)가 클라이언트 컴퓨터들(110a, 110b, 등)에서 복사된 데이터를 유지하는 서버로 간주될 수 있다.
서버는 일반적으로 인터넷과 같은 리모트 네트워크상에서 액세스가능한 리모트 컴퓨터 시스템이다. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 활성화될 수 있고, 서버 프로세스는 제2 컴퓨터 시스템에서 활성화될 수 있으며, 통신 매체를 통해 서로 통신할 수 있기 때문에, 분산된 기능을 제공하고 복수의 클라이언트들이 서버의 정보 개더링(gathering) 능력을 이용가능하게 한다.
클라이언트와 서버는 프로토콜 계층에 의해 제공되는 기능을 사용하여 서로 통신한다. 예를 들어, 하이퍼텍스트-전송 프로토콜(HTTP)은 월드 와이드 웹(WWW)과 함께 사용되는 공통 프로토콜이다. 일반적으로, URL(Universal Resourve Locator) 또는 IP(Internet Protocol) 어드레스와 같은 컴퓨터 네트워크 어드레스는 서로 서버 또는 클라이언트 컴퓨터들을 확인하도록 사용된다 네트워크 어드레스는 URL 어드레스라 할 수 있다. 예를 들면, 통신은 통신 매체를 통해 제공될 수 있다. 특히, 클라이언트와 서버는 하이-커패시티(high-capacity) 통신을 위해 TCP/IP 접속들을 통해 서로 결합될 수 있다.
따라서, 도 3a는 본 발명이 채용될 수 있는, 네트워크/버스를 통해 클라이언트 컴퓨터들과 서버가 통신중인 예시적인 네트워킹되거나 분산된 환경을 설명한다. 보다 구체적으로, 다수의 서버들(10a, 10b, 등)은 본 발명에 따라 휴대용 컴퓨터, 핸드헬드 컴퓨터, 씬(thin) 클라이언트, 네트워킹된 전기 제품, 또는 VCR, TV, 오 븐, 라이트, 히터 등과 같은 다른 디바이스 등의 다수의 클라이언트 또는 리모트 연산 디바이스들(110a, 110b, 110c, 110d, 110e 등)을 갖는, LAN, WAN, 인트라넷, 인터넷 등일 수 있는 통신 네트워크/버스(14)를 통해 접속되어 있다. 따라서, 본 발명은 그래픽스 오브젝트(들)를 프로세스하고자 하는 것이 바람직한 연산 디바이스와 관련하여 임의의 연산 디바이스들에 적용될 수 있다는 것이 이해될 것이다.
통신 네트워크/버스(14)가 인터넷인 네트워크 환경에서, 예를 들어 서버들(10a, 10b 등)은 클라이언트(110a, 110b, 110c, 110d, 110e 등)이 HTTP와 같은 다수의 공지된 프로토콜들 중 어느 것을 통해 통신하는 웹서버들일 수 있다. 서버들(10a, 10b, 등)은 분산된 연산 환경의 특징이라 할 수 있는 클라이언트들(110a, 110b, 110c, 110d, 110e, 등)로서도 작용할 수 있다. 통신들은 필요에 따라, 무선 또는 유선일 수 있다. 클라이언트 디바이스들(110a, 110b, 110c, 110d, 110e, 등)은 통신 네트워크/버스(14)를 통해 통신할 수 있을 수 있거나 없을 수 있으며, 그와 연관된 독립적인 통신들을 가질 수 있다. 예를 들어, TV 또는 VCR의 경우, 그 제어에 대해 네트워킹된 특징이 있을 수 있거나 없을 수 있다. 각 클라이언트 컴퓨터(110a, 110b, 110c, 110d, 110e, 등) 및 서버 컴퓨터(10a, 10b, 등)는 다양한 어플리케이션 프로그램 모듈들 또는 오브젝트들(135)이 구비될 수 있고, 파일들이 저장될 수 있거나 파일들의 부분(들)이 다운로딩 또는 이동될 수 있는, 각종 형태의 저장 요소들 또는 오브젝트들과의 접속들 또는 액세스가 구비될 수 있다. 임의의 컴퓨터 (10a, 10b, 110a, 110b, 등)는, 그래픽스 오브젝트(들) 또는 중간 그래픽스 오브젝트(들) 또는 본 발명에 따라 프로세싱된 데이터를 저장하기 위한 데이터베이스 또는 메모리(20)와 같은, 본 발명에 따른 데이터 베이스 또는 다른 저장 요소의 유지 및 갱신에 대한 책임이 있을 수 있다. 따라서, 본 발명은 컴퓨터 네트워크/버스(14)와 액세스 및 상호작용할 수 있는 클라이언트 컴퓨터들(110a, 110b 등)과 클라이언트 컴퓨터들(110a, 110b 등) 및 다른 유사한 디바이스들과 상호작용 할 수 있는 서버 컴퓨터들(10a, 10b 등) 및 데이터베이스(20)를 갖는 컴퓨터 네트워크 환경에서 사용될 수 있다.
예시적인 연산 디바이스(Exemplary Computing Device)
도 3b는 본 발명이 구현될 수 있는 적당한 연산 환경의 간략한 일반적 설명을 제공하기 위한 것이다. 그러나, 핸드 헬드, 휴대가능한 다른 연산 디바이스들 및 모든 종류의 연산 오브젝트들이 본 발명과 관련된 사용에 고려됨을 이해해야 한다. 일반적인 목적의 컴퓨터가 이하에 설명되지만, 이는 하나의 예일 뿐이고, 본 발명은 네트워크/버스 내부 동작 가능성 및 상호 작용을 갖는 씬 클라이언트로 구현될 수 있다. 따라서, 본 발명은 매우 작거나 극소의 클라이언트 리소스들이 포함되는 네트워킹되고 호스팅된 서비스들의 환경, 즉 클라이언트 디바이스가 전기 제품에 배치된 오브젝트 등의 네트워크/버스에 대한 인터페이스로서만 기능하는 네트워킹된 환경에서 구현될 수 있다. 즉, 에디터가 저장될 수 있거나 데이터가 복구될 수 있는 곳이라면 어디나 본 발명의 그래픽스 파이프라인 기술들의 동작을 위한 바람직하고 적합한 환경이다.
비록 요구되지 않았지만, 본 발명은 디바이스 또는 오브젝트용 서비스들이 개발자에 의해 사용되고, 및/또는 본 발명의 중간 타겟들과 관련하여 동작하는 어 플리케이션 소프트웨어에 포함되는 오퍼레이팅 시스템을 통해 구현될 수 있다. 본 발명은 또한 본 발명의 중간 타겟들과 상호작용하기 위해 버텍스 셰이더 및 픽셀 셰이더들의 설계를 포함한다. 소프트웨어는 클라이언트 워크스테이션들, 서버들 또는 다른 디바이스들과 같이, 하나 이상의 컴퓨터들에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능한 명령들의 일반적인 문맥에서 설명될 수 있다. 일반적으로, 프로그램 모듈들은 특정 작업들을 수행하거나 특정 요약 데이터 타입을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 일반적으로, 프로그램 모듈들의 기능은 각종 실시예들에서 원하는 대로 조합되거나 분산될 수 있다. 또한, 당업자들은 본 발명이 다른 컴퓨터 시스템 구성들에 의해 실행될 수 있음을 이해할 것이다. 본 발명에서 사용되기에 적합한 다른 공지된 연산 시스템들, 환경들, 및/또는 구성들은 퍼스널 컴퓨터(PC), 자동 텔러 기계, 서버 컴퓨터들, 핸드 헬드 또는 랩톱 디바이스들, 멀티 프로세서 시스템들, 마이크로프로세서 기반의 시스템들, 프로그램 가능한 소비자 전자 기기들, 네트워크 PC들, 전기 제품들, 조명들, 환경 제어 요소들, 미니컴퓨터들, 메일프레임 컴퓨터들 등을 포함하지만 이에 한정되지 않는다. 본 발명은 또한 통신 네트워크/버스 또는 다른 데이터 전송 매체를 통해 링크되는 리모트 프로세싱 디바이스들에 의해 작업들이 수행되는 분산된 연산 환경들에서 실행될 수 있다. 분산된 연산 환경에서는, 프로그램 모듈들이 메모리 기억 장치들을 포함하는 로컬과 리모트 컴퓨터 기억 매체 모두에 배치될 수 있고, 클라이언트 노드들은 서버 노드들로서 차례로 작용할 수 있다.
이와 같이 도 3b는 본 발명이 구현될 수 있는 적합한 연산 시스템 환경(100)의 예를 나타내지만, 상기한 바와 같이, 연산 시스템 환경(100)은 적합한 연산 환경의 일례일 뿐이며 본 발명의 사용 또는 기능의 범위에 대한 임의의 제한을 암시하도록 의도되지 않는다. 연산 환경(100)은 예시적인 동작 환경(100)에 설명된 컴포넌트들 중 어느 하나 또는 조합과 관련된 어떠한 종속 또는 조건을 가지도록 해석되어서는 안된다.
도 3b를 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태로 일반적인 목적의 연산 디브이스를 포함한다. 컴퓨터(110)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함한 각종 시스템 컴포넌트들을 처리장치(120)에 결합시키는 시스템 버스(121)를 포함하지만 이에 한정되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러를 포함한 각종 타입의 버스 구조들중 어느 것, 주변 회로 버스, 및 임의의 각종 버스 아키텍쳐들을 사용한 로컬 버스일 수 있다. 예로서, 한정되지 않지만, 이러한 아키텍쳐들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 PCI(Peripheral Component Interconnect) 버스(메자닌 버스로도 알려져 있음)를 포함한다.
컴퓨터(110)는 일반적으로 다양한 컴퓨터 판독가능한 매체를 포함한다. 컴퓨터 판독가능한 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고, 휘발성과 불휘발성 매체 모두, 제거가능과 제거불가능 매체를 포 함한다. 예로서, 제한되지는 않지만, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성과 불휘발성 모두, 제거가능과 제거불가능 매체를 포함한다. 컴퓨터 저장 메체는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CDROM, DVD(digital versatile disks) 또는 다른 광디스크 기억장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치나 다른 자기 저장 장치들, 또는 원하는 정보를 저장할 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이에 한정되지 않는다. 통신 매체는 일반적으로 컴퓨터 판독가능한 명령들, 데이터 구조들, 프로그램 모듈들 또는 캐리어 웨이브(carrier wave) 또는 다른 전송 메카니즘과 같이 변조된 데이터 신호의 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호(modulated data signal)"라는 용어는 신호의 정보를 인코딩하도록 설정되거나 변경된 하나 이상의 특성들을 갖는 신호를 의미한다. 예로서, 제한되지는 않지만, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체, 및 아쿠스틱, RF, 적외선 및 다른 무선 매체 등의 무선 매체를 포함한다. 상기한 것의 임의의 조합들도 컴퓨터 판독가능한 매체의 범위 내에 포함될 수 있다.
시스템 메모리(130)는 ROM(read only memory)(131) 및 RAM(read access memory)(132)와 같은 휘발성 및/또는 불휘발성 메모리의 형태의 컴퓨터 기억 매체를 포함한다. 파워업 시와 같이, 컴퓨터(110) 내의 소자들 사이에서 정보를 전송 하도록 돕는 기본적인 루틴들을 포함한, 기본적인 입출력 시스템(133)(BIOS)은 일반적으로 데이터 및/또는 즉시 액세스 가능하거나 또는 처리장치(120)가 현재 동작하고 있는 프로그램 모듈들을 포함한다. 예로서, 제한되지 않지만, 도 3b는 오퍼레이팅 시스템(134), 어플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)를 나타낸다.
컴퓨터(110)는 또한 다른 제거가능/제거불가능, 휘발성/불휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 3b는 제거불가능, 불휘발성 자기 매체로부터 판독하거나 제거불가능, 불휘발성 자기 매체에 기입하는 하드 디스크 드라이브(141), 제거가능, 불휘발성 자기 디스크(152)로부터 판독하거나 제거가능, 불휘발성 자기 디스크(152)에 기입하는 자기 디스크 드라이브(151), 및 CD ROM 또는 다른 광학 매체와 같은 제거가능, 불휘발성 광디스크(156)으로부터 판독하거나 제거가능, 불휘발성 광디스크(156)에 기입하는 광디스크 드라이브(155)를 나타낸다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 제거가능/제거 불가능, 휘발성/불휘발성 컴퓨터 저장 매체는 테이프 카세트, 플래시 메모리 카드들, DVD, 디지털 비디오 테이프, 고상 RAM, 고상 ROM 등을 포함하지만 이에 제한되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 제거불가능한 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 제거가능한 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
도 3b에 도시되고 설명된 드라이브들 및 그와 관련된 컴퓨터 저장 매체는 컴 퓨터 판독가능한 명령들, 데이터 구조들, 프로그램 모듈들 및 컴퓨터(110)의 다른 데이터의 저장을 제공한다. 도 3b에는, 예를 들면, 오퍼레이팅 시스템(144), 어플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)를 저장하는 하드 디스크 드라이브(141)가 설명된다. 이들 컴포넌트들은 오퍼레이팅 시스템(134), 어플리케이션 프로그램들(135), 다른 프로그램 모듈들(136), 및 프로그램 데이터(137)와 동일하거나 상이할 수 있다는 것을 주의해야 한다. 오퍼레이팅 시스템(144), 어플리케이션 프로그램들(145), 다른 프로그램 모듈들(146), 및 프로그램 데이터(147)는 그들이 최소한 상이한 카피들이라는 것을 설명하기 위해 여기서는 상이한 수가 주어진다. 사용자는 키보드(162) 및 흔히 마우스, 트랙볼 또는 터치 패드라고 불리는 포인팅 디바이스(161)와 같은 입력 디바이스들을 통해 컴퓨터(110)에 커맨드들 및 정보를 입력할 수 있다. 다른 입력 디바이스들(도시하지 않음)은 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 시스템 버스(121)에 결합되지만 병렬 포트, 게임 포트 또는 USB(universal serial port)와 같은 다른 인터페이스 및 버스 구조들에 의해 접속될 수 있는 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속된다. 노스브리지(northbridge)와 같은 그래픽스 인터페이스(182)는 또한 시스템 버스(121)에 접속될 수 있다. 노스브리지는 CPU와 통신하는 칩셋, 또는 호스트 처리장치(120)이고, AGP(accelerated graphics port) 통신들에 대한 책임이 있다고 가정한다. 하나 이상의 그래픽스 처리 장치(GPU)들(184)은 그래픽스 인터페이스(182)와 통신할 수 있다. 이 점에 있어서는, GPU들(184)은 일 반적으로 레지스터 기억장치와 같은 온칩 메모리 기억장치를 포함하고, GPU들(184)은 본 발명의 중간 타겟들이 구현될 수 있는 비디오 메모리(186)와 통신한다. 그러나, GPU들(184)은 단지 코프로세서(coprocess)의 일례이기 때문에 다양한 코프로세싱 디바이스들은 컴퓨터(110)에 포함될 수 있고, 픽셀 및 버텍스 셰이더들과 같은 각종 절차적 셰이더들일 수 있다. 모니터(191) 또는 다른 타입의 표시 장치는 또한 비디오 메모리(186)와 교대로 통신할 수 있는 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터(191)에 부가하여, 컴퓨터들은 또한 출력 주변 회로 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 다른 주변 회로 출력 디바이스들을 포함할 수 있다.
컴퓨터(110)는 리모트 컴퓨터(180)와 같은 하나 이상의 리모트 컴퓨터들과의 논리적 접속들을 이용하여 네트워킹되거나 분산된 환경에서 동작할 수 있다. 비록 메모리 저장 디바이스(181)만이 도 3b에 도시되어 있지만, 리모트 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있고, 일반적으로 컴퓨터(110)에 관련된 상기한 다수의 또는 모든 소자들을 포함한다. 도 3b에 도시된 논리적 접속들은 LAN(local area network)(171) 및 WAN(wide area network)(173)을 포함하지만, 다른 네트워크들/버스들을 포함할 수도 있다. 이러한 네트워킹 환경들은 가정, 오피스, 엔터프라이즈-와이드 컴퓨터 네트워크들, 인트라넷들 및 인터넷들에 흔하다.
컴퓨터(110)는, LAN 네트워킹 환경에서 사용되는 경우, 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. 컴퓨터(110)는, WAN 네트워킹 환 경에서 사용되는 경우, 일반적으로 모뎀(172) 또는 인터넷과 같이 WAN(173)을 통해 통신을 성립시키는 다른 수단들을 포함한다. 내부 또는 외부에 있을 수 있는 모뎀(172)은 사용자 입력 인터페이스(160), 또는 다른 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(110)에 관련되어 도시된 프로그램 모듈들, 또는 그 부분들은 리모트 메모리 저장 장치에 저장될 수 있다. 예로서, 제한되지는 않지만, 도 3b는 메모리 디바이스(181)에 있는 리모트 어플리케이션 프로그램들(185)을 도시한다. 도시된 네트워크 접속들은 예시적이며 컴퓨터들 사이의 통신 링크를 성립시키는 다른 수단들이 사용될 수 있음을 이해할 것이다.
예시적인 분산된 연산 프레임 워크들 또는 아키텍쳐들(Exemplary distributed Computing Frameworks or Architectures)
각종 분산된 연산 프레임 워크들이 퍼스널 컴퓨팅 및 인터넷의 수렴의 관점에서 개발되고 있다. 개인들 및 사업상 사용자들에게는 동일하게 어플리케이션들 및 연산 디바이스용의 분리되지 않게 내부 동작 가능하고 웹 가능한 인터페이스가 제공되어, 연산 동작들이 웹브라우저 또는 네트워크 지향이 증가된다.
예를 들면, MICROSOFT
Figure 112003013113444-pat00001
's.NET 플랫폼은 서버들, 웹 기반의 데이터 스토리지 및 다운로딩 가능한 디바이스 소프트웨어와 같은 빌딩 블록 서비스들을 포함한다. 일반적으로 말하면, .NET 플랫폼은 (1) 전 범위의 연산 디바이스드들이 함께 작동하게 하고 그들 모두에서 사용자 정보가 자동적으로 업데이트되고 동기되게 하는 능력, (2) HTML보다는 XML의 더 많은 사용에 의해 가능해지는, 웹 사이트들에 대한 증가된 상호작용 가능성, (3) e-메일과 같은 각종 어플리케이션들 또는 Office.NET과 같은 소프트웨어의 관리를 위해 중앙 개시점으로부터 사용자들에 대한 제품들 및 서비스들의 주문 액세스와 배송을 특징으로 하는 온라인 서비스들, (4) 사용자들과 디바이스들 사이의 정보의 동기화 뿐만 아니라 정보에 대한 액세스의 효율성 및 용이함을 증가시키는 집중형 데이터 기억장치, (5) 이메일, 팩스들, 및 전화기와 같은 각종 통신 매체들을 통합하는 능력, (6) 개발자들이, 재사용가능한 모듈들을 생성함으로써 생산성을 향상시키고 프로그래밍 에러의 수를 감소시킬 수 있는 능력 및 (7) 많은 다른 크로스-플랫폼(cross-platform) 통합 특성들을 제공한다.
본 명세서의 예시적인 실시예들은 연산 디바이스에 있는 소프트웨어와 관련되어 설명되지만, 본 발명의 하나 이상의 부분들은 오퍼레이팅 시스템, 어플리케이션 프로그래밍 인터페이스(API) 또는 코프로세서와 요청 오브젝트 사이의 "중간자(middle man)" 오브젝트를 통해 구현될 수도 있어, 제어가능한 텍스쳐 샘플링 서비스들은 모든 .NET's 언어들과 서비스들을 통해서, 및 다른 분산된 연산 프레임워크들에서 수행되고, 지지되거나 액세스될 수 있다. 부가적으로, 본 발명에 대한 다른 특징은, 절차적 셰이더가 API로부터 프로그램들을 수신하고, 그들을 각종 중간 타겟들로 번역하게 하는 그래픽스 아키텍쳐 뿐만 아니라 비디오 메모리에 있는 중간 타겟들 그 자체이다.
다수의 중간 타겟 순환(Multiple Intermediate Target circulation)
본 발명의 시스템들 및 방법들은 일반적으로 프로그램 가능한 그래픽스 파이프라인의 진보와 관련하여 프로그램 가능한 능력의 사용을 요약하고 간단하게 하기 위한 고급 언어의 생성을 가능하게 한다. 따라서, 본 발명은 더 넓은 범위의 그래픽스 기술들이, 개발자에 의해 표현되지만 그래픽스 하드웨어에 의해 매우 고성능의 레벨에서 행해지도록 하는 플랫폼을 가능하게 한다.
본 발명에 따른 중간 타겟들의 재순환을 갖지 않는 그래픽스 플랫폼들은, 유사한 결과를 달성하기 위해 데이터에 대해 부가적인 패스들이 요구된다는 점에서, 퍼 픽셀 및 퍼 버텍스 레벨에서 동작하는 프로그램들의 사이즈 및 복잡성에 있어서 성능 전망으로부터 제한된다. 예를 들면, 변환과 같은 조명 효과를 구현하는 임의의 프로그램들은 포함된 프로그램들의 복잡성 및/또는 길이 때문에 본 발명이 없는 비 실시간 그래픽스에 제한된다. 도 4로 도시된 바와 같이, 비교적 복잡한 셰이더 프로그램 SP는 포함된 하드웨어, 즉 픽셀 셰이더에 대해 최대 명령 제한을 초과하기 때문에, 본 발명의 도움이 없는 개발자는 실시간 요구들에 충분히 고속일 수 없는 호스트 프로세서에 의해 변환을 구현하게 된다. 본 발명에 따라 크기가 가변될 수 있는 중간 타겟들 MRT1 및 MRT2의 사용을 통해, 개발자는 프로그램 SP를 부분들 SPP1, SPP2 및 SPP3으로 효과적으로 분할할 수 있으며, 이들은 개별적으로 하드웨어의 명령 제한을 초과하지 않지만, 중간 결과들을 출력 및 재사용함으로써 SP의 기능을 집합적으로 수행한다. 예를 들면, SPP1은 프로그램 부분 SPP2에 대한 입력으로서 작용하는 중간 타겟 MRT1에 중간 결과들을 출력한 후, 다시 프로그램 부분 SPP3에 대한 입력으로서 작용하는 중간 타겟 MRT2에 중간 결과들을 출력하고 나서, 원하는 변환 데이터를 출력한다. 이에 의해, 본 발명은 하드웨어 가속을 이용하여 비 실시간 렌더링을 가능하게 하는 가상적으로 무제한의 길이 프로그램을 생성하는 데 사용될 수 있다. 따라서, 본 발명에 따른 비 실시간 렌더링 어플리케이션에 대한 무제한의 하드웨어 가속된 재순환의 이용가능성은 그래픽스 플랫폼의 속도 및 성능을 증가시킨다.
또한, MRT들의 데이터를 입력으로서 임의의 프로그램에 임의번 재순환하는 능력은 반복 동작들, 및 재계산 없이 중간 데이터의 재사용이 임의의 프로그램에 의해 실현될 수 있다는 것을 의미한다. 또한, 중간 타겟들의 데이터 포맷은, MRT1가 적색, 녹색, 청색 데이터를 포함하지만, MRT2는 색과 전혀 무관한 데이터를 포함할 수 있도록, 즉 데이터는 위치 또는 웨이트의 복합 기능과 관계없을 수 있도록 개발자에 의해 설정된다. 또한, 상기한 바와 같이, 버퍼의 사이즈, 즉 중간 타겟들에 저장된 데이터량은 그래픽스 데이터에 대한 해상도의 변화량에 따라 가변적으로 설정될 수 있다.
본 명세서에서 사용된 바와 같이, 본 발명의 다수의 재순환 타겟들(MRT들)은 버퍼로서 사용되는 텍스쳐들이다. 버퍼들은 "픽셀 셰이더(pixel shader)"라고 흔히 칭해지는 퍼 픽셀 프로그램에 입력되거나 퍼 픽셀 프로그램으로부터 출력될 수 있다. 단일 픽섹 셰이더 프로그램은 렌더 타겟들로서 나타나는 임의의 수의 다른 MRT들에 출력하면서 텍스쳐의 형태로 임의의 수의 이들 MRT들로부터 동시에 입력될 수 있다. 이들 별개의 버퍼들의 수는 하드웨어, 및 비디오 메모리의 사이즈에 의해서만 제한되기 때문에 이들 버퍼들은 매우 다수일 수 있다.
본 발명의 예시적인 컴포넌트들은 (1) 텍스쳐들을 샘플링하고 임의의 최종 선택의 프레임 버퍼 출력에 부가하여 다수의 렌더 타겟들을 출력하는 픽셀 셰이더 프로그램 및 (2) 출력용 렌더 타겟들 또는 입력용 텍스쳐들로서 픽셀 셰이더 프로그램(들)에 결합될 수 있는 재순환 버퍼(들)을 포함한다.
무제한 실시예들(Non-Limiting Embodiments)
이하는, 본 발명의 상기 컴포넌트를 이용하는 본 발명의 무제한 소프트웨어 구현들이다. 이 점에 있어서, 본 발명은 하드웨어의 변경들을 수용하기 위해 적어도 2가지 형태의 MRT들을 표현한다. 구현들은 MET 형태로서 설명된 형태 및 MRT 형태로서 설명된 형태를 포함한다. MET 형태는 보다 간단한 형태이다. MET 경우에는, 일반적으로 칼라 요소와 관련된 중간 4개의 컴포넌트 출력들이 삽입된 형태의 단일 표면에 기입된다. MRT 경우에는, 개별적인 칼라 요소들이 각각의 표면들에 분리되어 결합될 수 있다. 이들 표면들은 픽셀 셰이더 프로그램에 의해 표현될 수 있는 기술들에 어떤 방법도 적합한 각 칼라 요소에 대한 포맷을 변화시킬 수 있다.
무제한 MET API(Non-Limiting MET API)
MET API의 목적을 위해, 종래 텍스쳐들은 어플리케이션들이 픽셀 셰이더로부터 동시에 텍스쳐의 다수 요소들에 기입되게 하는 단일 요소 텍스쳐들로 간주되기 때문에, 다음 렌더링 패스에서, 어플리케이션은 단일 요소 텍스쳐로서, 즉 픽셀 셰이더로의 입력으로서 하나 이상의 이들 요소들을 사용할 수 있다. 이들 부가적인 요소들은 어플리케이션에 의해 다음 패스에서 사용될 수 있는 중간 결과들용의 일시적인 스토어로서 간주될 수 있다.
예시적인 MET들의 무제한 사용은 도 5의 의사 코드 흐름도에 의해 도시된다. 500에서, 어플리케이션은 MET 포맷들의 이용가능성을 체킹함으로써 중간 타겟들에 대한 서포트를 발견한다. 510에서, 어플리케이션은 CreatSurface 기능에 대한 호출(call)에 의해 MET 서피스(surface)들을 생성한다. 520에서, 어플리케이션은 SetRenderTarget 기능 호출을 통해 렌더 타겟으로서 MET를 설정한다. 530에서, MET 서피스를 특정 스테이지에 설정하기 위해 SetTexture 기능이 호출된다. 다른 텍스쳐들과 같이, 동일한 서피스는 한번에 다수의 스테이지들로 설정될 수 있다. 540에서, D3DSAMP_ELEMENTINDEX 변수를 샘플러가 샘플링하는 MET 텍스쳐의 적절한 요소 넘버로 설정하기 위해 SetSampleState 기능이 호출됨으로써, 샘플러 상태의 디폴트 값이 0이고, 이는 비-MET 텍스쳐가 작동할 것임을 의미한다. ValidateDevice 기능 호출은 이 상태의 설정을 부적합한 넘버로 보고한다, 즉 MET가 단지 2요소 폭이지만 샘플러는 4번째 요소로부터 샘플링되도록 요구된다.
다음은 MET 특징을 서포트하는 무제한 API이다. 포맷의 삽입을 표현하는 이하에 도시된 것과 같은 서피스 포맷들이 있다.
//카드가 서포트할 수 있는 삽입된 서피스 포맷들
D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T'.'1'),
D3DFMT_MULTI4_ARGB8 = MAKEFOURCC('M','E','T'.'2'),
//어떤 요소가 선택되는지를 나타내기 위한 샘플러 상태
D3DSAMP_ELEMENTINDEX
//렌더 상태들
//D3DRS_COLORWRITEENABLE은 렌더 타겟(또는 요소) 제로에 적용한다.
D3DRS_COLORWRITEENABLE1
D3DRS_COLORWRITEENABLE2
D3DRS_COLORWRITEENABLE3
//선택적 디바이스 지정 캡들
D3DPMISCCAPS_INDEPENDENTWRITEMASKS//디바이스가 독립적인 라이트 마스크들을 서포트할 수 있으면 참(Ture)
무제한 다수의 렌더 타겟들(MRT) API(Non-Limiting Multiple Render Targets(MRT) API)
많은 구현들은 본 명세서에서 MRT라 명명된 MET의 덜 제한적인 형태를 서포트한다. 하나의 이러한 전환은 독립적으로 생성될 수 있는 다수의 렌더 타겟들을 갖는 능력이다. 이들 렌더는 다른 포맷들을 갖는다. 현재, 몇몇 3-D 그래픽스 API들은 이전에 존재하는 SetRenderTarget API를 통해 설정가능한 단일 렌더 타겟을 서포트한다. 본 발명에 따르면, 이 API 엔트리 포인트는 다수의 렌더 타겟들이 디바이스에 동시에 존재하게 할 수 있도록 확장되었다. 새로운 캡이 이 능력을 나타낸다.
다음 oCn 레지스터들은 이하 MET 텍스쳐의 예시적인 다른 요소들을 나타낸다: (a) oC0:칼라 0(요소 0), (b) oC1:칼라 1(요소 1), (c) oC2:칼라 2(요소 2), (d) oC3:칼라 3(요소 3) 및 (e) oDepth: 깊이-스텐실 버퍼에 대한 깊이 테스트를 위한 새로운 깊이 값. oCx 레지스터들은 이동 명령을 사용하여 기입될 수 있다.
MRT API용의 예시적인 무제한 의사코드는 다음과 같다:
IDirect3DDevice9::SetRenderTarget(DWORD RenderTargetIndex, IDirect3DSurface9* pRenderTarget);
IDirect3DDevice9::GetRenderTarget(DWORD RenderTargetIndex, IDirect3DSurface9** ppRenderTarget);
//디바이스 지정 캡
D3DCAPS9.NunSimultaneousRTs//이 특징을 뒷받침할 수 있는 것을 제외한 모두에 대해서는 1, 절대 0 아님.
//이동 명령
Move:mov
Token Format: 1 opcode token - D3DSIO_MOV(instr. length field set to:2)
1 destination token
1 source token
Instruction: mov[_sat]dst[.mask],[-]src0[.swizzle]
다음은 컴포턴트 와이즈 이동을 위한 예시적인 의사코드 설명을 포함한다:
Operation: dst=src0
dst can be r#oC#/dDepth일 수 있고
src0 can be r#/c#/v#/t#
예시적인 중간 타겟들의 사용(Exemplary Use of the Intermediate Targets)
도 6은 종래의 픽셀 엔진 기술들과 달리, 본 발명의 중간 타겟들로, 정보의 버킷들을 변화시키면서, 픽셀 엔진으로부터의 출력들로서 복수의 중간 타겟들이 생성될 수 있음을 설명한다. 또한, 중간 타겟들의 데이터는 불명확하게 보존될 수 있기 때문에, 후에 재사용될 수 있다. 예를 들어, 픽셀들 P1 내지 PN은 픽셀들의 R,G 및 B 값들을 저장할 수 있고 중간 타겟 IT1에 배치될 수 있다. 픽셀들 PW 내지 PX는 조명 값들을 저장할 수 있고 중간 타겟 IT2에 배치될 수 있으며, 픽셀들 PY 내지 PZ는 다른 중간 결과를 저장할 수 있고 중간 타겟 IT3에 저장될 수 있다. 중간 타겟들 IT1, IT2 및 IT3의 각각의 데이터는 동일하거나 상이한 프로그램들, 또는 프로그램들의 부분들에 의해 재사용될 수 있기 때문에, 각종 복잡한 셰이딩 효과들을 달성할 수 있다. 하드웨어, 즉 버텍스 셰이더 및 픽셀 셰이더를 포함하는 그래픽스 칩들은 API들을 통해 개발자의 사양에 따라 중간 타겟(들)을 출력 또는 입력한다.
본 발명에 의해 달성될 수 있는 보다 복잡한 동작의 예로서, 도 7은 얼마동안 지속되고, 제1 프로그램 Pass1에 대한 입력이 되도록 요청되는 중간 타겟 MRT1을 예시하며, MRT1을 입력으로서 취하고 중간 타겟 MRT2를 출력한다. 이어서, 또는 그 이전에, 프로그램 Pass2는 MRT1을 입력으로서 취하고 중간 타겟 MRT3을 출력한다. 부가적으로, 프로그램 Pass3은 입력 없이 중간 타겟 MRT4를 출력한다. 마지막으로, 프로그램 Pass4는 MRT2, MRT3 및 MRT4를 입력으로서 취하는 일부 동작을 하드웨어에 수행한다. 수개의 MRT들은 수개의 픽셀 프로그램들을 보다 복잡한 형태의 중간 데이터를 공유하게 하는데 사용된다. 이는 MRT의 수명이 완전히 개발자의 제어에 달려 있음을 증명한다.
즉, 프로그램은 Pass1로 시작한다. 데이터는 (일부 다른 프로그램에 의해 이미 언젠가 생성되었던) MRT1로부터 판독된다. Pass1은 일부 프로그램의 알고리즘을 실행하여 MRT2를 생성한다. Pass2는 다시 MRT1을 사용하여 MRT3을 생성하기 위한 다른 알고리즘을 수행한다. Pass3은 입력 없이 알고리즘적으로 MRT4를 발생시킨다. Pass4(최종 패스)는 MRT2, MRT3 및 MRT4로부터의 데이터를 결합하여 보정 칼라 데이터를 프레임 버퍼에 마지막으로 방출함으로써, 종래 기술의 제한들을 가지는 그래픽스 하드웨어로 전보다 정교한 셰이딩 효과를 달성할 수 있다.
본 발명을 구현하기 위한 다수의 방법들이 있다. 한가지 방법은 코프로세서(들), 즉 GPU(들)이 본 발명의 기능을 수행하도록 미리 제조되고, 본 명세서에 기재된 바와 같이 다수의 중간 타겟들에 적합한 커맨드들을 수신하는 구현을 제공하는 것이다. 본 발명의 또 다른 구현은 적합한 API, 툴킷, 드라이버 코드, 오퍼레이팅 시스템, 보다 복잡한 기능을 달성하기 위해 어플리케이션들 및 서비스들이 중간 타겟들을 사용하게 하는 단독형 또는 다운로딩 가능한 소프트웨어 오브젝트를 포함한다. 본 발명은 API(또는 다른 소프트웨어 오브젝트), 그래픽스 칩 및 비디오 메모리의 관점에서 본 발명의 사용을 고려한다. 따라서, 본 명세서에 기재된 본 발명의 각종 구현들은 소프트웨어에서 뿐만 아니라 하드웨어의 전체, 하드웨어의 부분 및 소프트웨어의 부분적인 특징을 갖는다.
상기한 바와 같이, 본 발명의 예시적인 실시예들은 각종 연산 디바이스들 및 네트워크 아키텍쳐들과 관련하여 설명되었지만, 중요한 개념들은 보다 많은 사소한 방법들에서 절차적 셰이더들을 프로그래밍하는 것이 바람직한 임의의 연산 디바이스 또는 시스템에 응용될 수 있다. 따라서, 본 발명에 따른 절차적 셰이더들의 개선된 프로그램 가능성을 제공하는 기술들은 각종 어플리케이션들 및 디바이스들에 적용될 수 있다. 예를 들면, 본 발명의 알고리즘(들) 및 하드웨어 구현들은 디바이스 상의 별도의 오브젝트로서, 다른 오브젝트의 부분으로서, 서바로부터의 다운로딩 가능한 오브젝트로서, 디바이스 또는 오브젝트와 네트워크 사이의 "중간자"로서, 분산된 오브젝트로서, 하드웨어로서, 메모리에, 상기한 것중 어느 것의 조합이 제공된, 연산 디바이스의 오퍼레이팅 시스템에 응용될 수 있다. 예시적인 프로그래밍 언어들, 이름들 및 예들이 각종 선택들의 대표로서 본 명세서에서 선택되지만, 이들 언어들, 이름들 및 예들은 제한되도록 의도되지 않는다. 당업자들은 본 발명의 API에 의해 실현되는 동일, 유사 또는 등가적인 기능을 실현하는 오브젝트 코드를 제공하는 수많은 방법들이 있다는 것을 이해할 것이다.
본 명세서에 기재된 각종 기술들은 하드웨어 또는 소프트웨어, 또는 적절하다면 이들 양자의 조합에 따라 구현될 수 있다. 따라서, 본 발명의 방법들 및 장치들, 임의의 특징들 또는 그 부분들은 플로피 디스켓들, CO-ROM들, 하드 드라이브들, 또는 다른 기계-판독가능한 기억 매체와 같은 실체적인 매체에서 구현된 프로그램 코드(즉 명령들)의 형태를 취할 것이며, 여기서, 프로그램 코드가 컴퓨터와 같은 기계로 로딩되고 기계에 의해 실행되는 경우, 기계는 본 발명을 행하기 위한 장치가 된다. 프로그램 가능한 컴퓨터에서의 프로그램 코드 실행의 경우, 연산 디바이스는 일반적으로 프로세서, 프로세서에 의핸 판독가능한 저장 매체(휘발성과 불휘발성 메모리 및/또는 저장 요소들), 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함할 것이다. 예를 들어 데이터 프로세싱 API 등의 사용을 통해, 본 발명의 중간 타겟 서비스들을 이용할 수 있는 하나 이상의 프로그램들은 컴퓨터 시스템과 통신하기 위해 고급의 절차적 또는 오브젝트 지향된 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 프로그램(들)은 원한다면, 어셈블리 또는 기계언어로 구현될 수 있다. 어느 경우에서도, 언어는 컴파일링되거나 해석된 언어일 수 있고, 하드웨어 구현들과 결합될 수 있다.
본 발명의 방법들 및 장치들은 또한 섬유 광학을 통해, 또는 임의의 다른 형태의 전송을 통해, 예를 들어 전기적 와이어링(wiring) 또는 케이블링(cabling)과 같은 일부 전송 매체로 전송되는 프로그램 코드의 형태로 구체화된 통신을 통해 행해질 수 있으며, 여기서, 프로그램 코드가 EPROM, 게이트 어레이, 프로그램 가능한 로직 디바이스(PLD), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계에 의해 수 신 및 로딩 및 실행되는 경우, 상기 예시적인 실시예들에 기재된 바와 같이 신호 처리 능력을 갖는 수신 기계는 본 발명을 행하기 위한 장치가 된다. 일반적인 목적의 프로세서에서 구현되는 경우, 프로그램 코드는 본 발명의 기능을 호출하도록 동작하는 유일한 장치를 제공하기 위해 프로세서와 결합한다. 또한, 본 발명과 관련하여 사용되는 임의의 저장 기술들은 변함없이 하드웨어와 소프트웨어의 조합일 수 있다.
본 발명은 다양한 특징들의 바람직한 실시예들로 설명되었지만, 다른 유사한 실시예들이 이용될 수 있고 또는 본 발명을 벗어나지 않고 동일한 기능을 수행하는 상기 실시예들에 변경 및 부가가 행해질 수 있다. 예를 들어, 본 발명의 예시적인 네트워크 환경들은 피어 투 피어 네트워킹된 환경과 같은 네트워킹된 환경의 문맥에서 설명될 수 있고, 당업자들은, 본 발명이 이에 한정되지 않고, 본 발명에 기재된 바와 같은 방법들은, 유선이든 무선이든, 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터 등과 같은 임의의 연산 디바이스 또는 환경에 응용될 수 있고, 통신 네트워크를 통해 접속되어 네트워크를 통해 상호작용하는 임의 수의 이러한 연산 디바이스들에 응용될 수 있음을 인식할 것이다. 또한, 특히 무선 네트워킹된 디바이스들의 수가 계속해서 증가함에 따라, 핸드헬드 디바이스 오퍼레이팅 시스템들 및 다른 어플리케이션 지정 오퍼레이팅 시스템들을 포함한 각종 컴퓨터 플랫폼들이 고려된다는 것은 강조되어야 한다. 또한, 본 발명은 복수의 프로세싱 칩들 또는 디바이스들로 구현될 수 있고, 저장은 복수의 디바이스들에 걸쳐 유사하게 영향을 미칠 수 있다. 따라서, 본 발명은 임의의 단일 실시예에 한정되지 않고, 첨부된 클레임 에 따른 폭과 범위 내에서 해석되어야 한다.
본 발명은, 그래픽스 API로부터의 전문화된 프로그램들이 단일 프로그램용 절차적 셰이더들의 명령 제약들을 초과하는 알고리즘을 서포트하게 하는 비디오 메모리의 중간 메모리 버퍼들을 제공하고 이용한다. 중간 버퍼들은 또한 다른 목적의 프로그램들 사이의 데이터 공유를 가능하게 할 수 있고, 자동적으로 액세스가능하다. 버퍼의 사이즈, 즉 중간 타겟들에 저장된 데이터량은 그래픽스 데이터에 대한 해상도의 변화량에 가변적으로 설정될 수 있다. 여기서, 단일 프로그램은 중간 데이터를 발생시킨 후 사용될 수 있고, 동일한 프로그램 및/또는 임의의 수의 다른 프로그램을 원한다면 수배 연장함으로써 재사용되어, 현대 그래픽스 칩들의 속도를 유지하면서 셰이딩 프로그램들의 상당한 유연성 및 복합성을 가능하게 한다.

Claims (45)

  1. 중앙 처리 장치(CPU)를 포함하는 호스트 시스템과 그래픽 처리 장치(GPU)를 포함하는 그래픽 서브시스템을 갖는 컴퓨팅 시스템에서, 중간 메모리 타겟들(intermediate memory targets)을 제공하고 이용하는 방법으로서,
    제1 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 그래픽 하드웨어의 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 호스트 시스템으로부터 상기 적어도 하나의 컴포넌트에 프로그램 명령어들의 세트를 전송하는 단계 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 그래픽 하드웨어의 상기 적어도 하나의 컴포넌트에 입력하는 것과 (B) 데이터를 상기 그래픽 하드웨어의 상기 적어도 하나의 컴포넌트로부터 상기 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 그래픽 하드웨어의 상기 적어도 하나의 컴포넌트를 프로그래밍하기 위해 상기 적어도 하나의 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 단계 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환(re-circulating)시키는 단계 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    를 포함하는, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 중간 메모리 타겟은 비디오 메모리의 일부인, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  4. 제1항에 있어서,
    중간 메모리 타겟 내의 데이터는 존속되는, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  5. 제1항에 있어서,
    상기 중간 메모리 타겟의 해상도는 가변적으로 설정되는, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  6. 제1항에 있어서,
    상기 적어도 하나의 컴포넌트는 절차적 셰이더(procedural shader)를 포함하는, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  7. 제6항에 있어서,
    상기 절차적 셰이더는 버텍스 셰이더(vertex shader)와 픽셀 셰이더(pixel shader) 중 하나인, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  8. 제1항에 있어서,
    상기 적어도 하나의 중간 메모리 타겟은 제1 중간 메모리 타겟 및 제2 중간 메모리 타겟을 포함하고,
    상기 제1 중간 메모리 타겟 내의 데이터는 상기 제2 중간 메모리 타겟 내의 데이터와는 다른 종류 및 양의 픽셀 데이터를 나타내는, 중간 메모리 타겟들을 제공하고 이용하는 방법.
  9. 제1항의 방법을 제공하기 위한 코프로세싱(coprocessing) 디바이스.
  10. 제1항의 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 반송하는 변조된 데이터 신호를 저장하는 컴퓨터 판독가능 기록매체.
  11. 제1항의 방법을 수행하기 위한 컴퓨팅 디바이스.
  12. 중앙 처리 장치(CPU)를 포함하는 호스트 시스템과 그래픽 처리 장치(GPU)를 포함하는 그래픽 서브시스템을 갖는 컴퓨팅 시스템에서 동작가능한 애플리케이션 프로그래밍 인터페이스를 저장하는 컴퓨터 판독가능 기록매체로서,
    상기 애플리케이션 프로그래밍 인터페이스는 상기 그래픽 서브시스템 내의 적어도 하나의 하드웨어 컴포넌트를 통해 적어도 하나의 중간 메모리 타겟과 인터페이싱하기 위한 컴퓨터 실행가능 모듈들을 포함하고, 상기 모듈들은,
    제1 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 세트를 전송하는 단계 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (B) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 단계 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 하드웨어 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환시키는 단계 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    를 포함하는 방법을 수행하는 컴퓨터 판독가능 기록매체.
  13. 삭제
  14. 제12항에 있어서,
    상기 중간 메모리 타겟은 비디오 메모리의 일부인 컴퓨터 판독가능 기록매체.
  15. 제12항에 있어서,
    중간 메모리 타겟 내의 데이터는 존속하는 컴퓨터 판독가능 기록매체.
  16. 제12항에 있어서,
    중간 메모리 타겟의 해상도는 가변적으로 설정되는 컴퓨터 판독가능 기록매체.
  17. 제12항에 있어서,
    상기 적어도 하나의 하드웨어 컴포넌트는 절차적 셰이더를 포함하는 컴퓨터 판독가능 기록매체.
  18. 제17항에 있어서,
    상기 절차적 셰이더는 버텍스 셰이더와 픽셀 셰이더중 하나인 컴퓨터 판독가능 기록매체.
  19. 제12항에 있어서,
    상기 적어도 하나의 중간 메모리 타겟은 제1 중간 메모리 타겟 및 제2 중간 메모리 타겟을 포함하고,
    상기 제1 중간 메모리 타겟 내의 데이터는 상기 제2 중간 메모리 타겟 내의 데이터와는 다른 종류 및 양의 픽셀 데이터를 나타내는 컴퓨터 판독가능 기록매체.
  20. 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 포함하는 적어도 하나의 컴퓨터 실행가능 모듈을 저장한 중간 메모리 타겟들과 인터페이싱하기 위한 컴퓨터 판독가능 매체로서, 상기 방법은,
    제1 전문화된 기능을 수행하도록 그래픽 서브시스템의 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 세트를 전송하는 단계 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (B) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 단계 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 하드웨어 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환시키는 단계 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    를 포함하는 컴퓨터 판독가능 매체.
  21. 삭제
  22. 제20항에 있어서,
    상기 중간 메모리 타겟은 비디오 메모리의 일부인 컴퓨터 판독가능 매체.
  23. 제20항에 있어서,
    중간 메모리 타겟 내의 데이터는 존속하는 컴퓨터 판독가능 매체.
  24. 제20항에 있어서,
    중간 메모리 타겟의 해상도는 가변적으로 설정되는 컴퓨터 판독가능 매체.
  25. 제20항에 있어서,
    상기 적어도 하나의 하드웨어 컴포넌트는 절차적 셰이더를 포함하는 컴퓨터 판독가능 매체.
  26. 제25항에 있어서,
    상기 절차적 셰이더는 버텍스 셰이더와 픽셀 셰이더중 하나인 컴퓨터 판독가능 매체.
  27. 제20항에 있어서,
    상기 적어도 하나의 중간 메모리 타겟은 제1 중간 메모리 타겟 및 제2 중간 메모리 타겟을 포함하고,
    상기 제1 중간 메모리 타겟 내의 데이터는 상기 제2 중간 메모리 타겟 내의 데이터와는 다른 종류 및 양의 픽셀 데이터를 나타내는 컴퓨터 판독가능 매체.
  28. 제20항에 있어서,
    상기 모듈들은 애플리케이션 프로그래밍 인터페이스(API), 드라이버 코드, 운영 체제 및 애플리케이션 중 적어도 하나에 포함되는 컴퓨터 판독가능 매체.
  29. 중간 메모리 타겟들과 관련되어 사용되는 코프로세싱 디바이스로서,
    제1 전문화된 기능을 수행하도록 상기 코프로세싱 디바이스의 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 컴포넌트에 대한 프로그램 명령어들의 세트를 수신하기 위한 입력 컴포넌트 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 컴포넌트에 입력하는 것과 (B) 데이터를 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 코프로세싱 디바이스의 상기 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 컴포넌트에 대한 프로그램 명령어들의 제2 세트를 수신하기 위한 입력 컴포넌트 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    상기 제1 및 제2 전문화된 기능과는 상이한 제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터 저장되고 재순환된 데이터를 수신하기 위한 입력 컴포넌트
    를 포함하는 코프로세싱 디바이스.
  30. 삭제
  31. 제29항에 있어서,
    상기 중간 메모리 타겟은 비디오 메모리의 일부인 코프로세싱 디바이스.
  32. 제29항에 있어서,
    중간 메모리 타겟 내의 데이터는 존속하는 코프로세싱 디바이스.
  33. 제29항에 있어서,
    중간 메모리 타겟의 해상도는 가변적으로 설정되는 코프로세싱 디바이스.
  34. 제29항에 있어서,
    상기 코프로세싱 디바이스의 상기 적어도 하나의 컴포넌트는 절차적 셰이더를 포함하는 코프로세싱 디바이스.
  35. 제34항에 있어서,
    상기 절차적 셰이더는 버텍스 셰이더와 픽셀 셰이더중 하나인 코프로세싱 디바이스.
  36. 제29항에 있어서,
    상기 적어도 하나의 중간 메모리 타겟은 제1 중간 메모리 타겟 및 제2 중간 메모리 타겟을 포함하고,
    상기 제1 중간 메모리 타겟 내의 데이터는 상기 제2 중간 메모리 타겟 내의 데이터와는 다른 종류 및 양의 픽셀 데이터를 나타내는 코프로세싱 디바이스.
  37. 제29항에 있어서,
    상기 코프로세싱 디바이스는 적어도 하나의 그래픽 처리 장치(GPU)를 포함하는 코프로세싱 디바이스.
  38. 삭제
  39. 삭제
  40. 그래픽 서브시스템의 적어도 하나의 하드웨어 컴포넌트를 통해 적어도 하나의 중간 메모리 타겟과 인터페이싱하기 위한 컴퓨터 실행가능 모듈들을 포함하는 컴퓨터 판독가능 매체로서, 상기 모듈들은,
    제1 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 상기 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 세트를 전송하는 수단 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (B) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 수단 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 하드웨어 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환시키는 수단 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    을 포함하는 컴퓨터 판독가능 매체.
  41. 그래픽 서브시스템의 중간 메모리 타겟들을 이용하는 시스템에 있어서,
    제1 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 그래픽 하드웨어의 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 컴포넌트에 프로그램 명령어들의 세트를 전송하는 수단 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 그래픽 하드웨어의 상기 적어도 하나의 컴포넌트에 입력하는 수단과 (B) 데이터를 상기 그래픽 하드웨어의 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 수단 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 그래픽 하드웨어의 상기 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 수단 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 수단과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 컴포넌트에 입력하는 수단과 (C) 데이터를 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 수단 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환시키는 수단 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    을 포함하는, 중간 메모리 타겟들을 이용하는 시스템.
  42. 삭제
  43. 그래픽 서브시스템의 적어도 하나의 하드웨어 컴포넌트를 통해 적어도 하나의 중간 메모리 타겟과 인터페이싱하기 위한 컴퓨터 실행가능 모듈들을 포함하는 어플리케이션 프로그래밍 인터페이스를 저장하는 컴퓨터 판독가능 기록매체로서, 상기 모듈들은,
    제1 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 상기 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 세트를 전송하는 수단 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (B) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 그래픽 서브시스템의 상기 적어도 하나의 하드웨어 컴포넌트를 프로그래밍하기 위해, 적어도 하나의 하드웨어 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 수단 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 하드웨어 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 하드웨어 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 하드웨어 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환시키는 수단 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    을 포함하는 컴퓨터 판독가능 기록매체.
  44. 중간 메모리 타겟들과 관련되어 사용되는 코프로세싱 디바이스로서,
    제1 전문화된 기능을 수행하도록 상기 코프로세싱 디바이스의 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 컴포넌트에 프로그램 명령어들의 세트를 전송하는 수단 -상기 제1 전문화된 기능은 (A) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 컴포넌트에 입력하는 것과 (B) 데이터를 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 하나를 포함함-;
    제2 전문화된 기능을 수행하도록 상기 코프로세싱 디바이스의 상기 적어도 하나의 컴포넌트를 프로그래밍하기 위해, 상기 적어도 하나의 컴포넌트에 프로그램 명령어들의 제2 세트를 전송하는 수단 -상기 제2 전문화된 기능은 (A) 상기 적어도 하나의 컴포넌트로의 입력으로서 적어도 하나의 중간 메모리 타겟으로부터의 데이터를 재사용하는 것과 (B) 데이터를 적어도 하나의 중간 메모리 타겟으로부터 상기 적어도 하나의 컴포넌트에 입력하는 것과 (C) 데이터를 상기 적어도 하나의 컴포넌트로부터 중간 메모리 타겟에 출력하는 것 중 적어도 하나를 포함함-; 및
    제3 전문화된 기능을 수행하기 위해 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터를 저장 및 재순환시키는 수단 -상기 적어도 하나의 중간 메모리 타겟들의 집합으로부터의 데이터는 상기 제1 및 제2 전문화된 기능과는 상이한 상기 제3 전문화된 기능을 수행하기 위해 재사용됨-
    을 포함하는 코프로세싱 디바이스.
  45. 삭제
KR1020030023429A 2002-07-16 2003-04-14 그래픽스 시스템의 중간 타겟들을 제공하기 위한 시스템및 방법 KR100969448B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/196,864 2002-07-16
US10/196,864 US7564460B2 (en) 2001-07-16 2002-07-16 Systems and methods for providing intermediate targets in a graphics system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020100017849A Division KR100995157B1 (ko) 2002-07-16 2010-02-26 그래픽 서브시스템의 컴포넌트, 컴퓨터 판독가능 기록매체, 및 타겟 메모리 버퍼들을 제공하는 방법

Publications (2)

Publication Number Publication Date
KR20040007242A KR20040007242A (ko) 2004-01-24
KR100969448B1 true KR100969448B1 (ko) 2010-07-14

Family

ID=22727078

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020030023429A KR100969448B1 (ko) 2002-07-16 2003-04-14 그래픽스 시스템의 중간 타겟들을 제공하기 위한 시스템및 방법
KR1020100017849A KR100995157B1 (ko) 2002-07-16 2010-02-26 그래픽 서브시스템의 컴포넌트, 컴퓨터 판독가능 기록매체, 및 타겟 메모리 버퍼들을 제공하는 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020100017849A KR100995157B1 (ko) 2002-07-16 2010-02-26 그래픽 서브시스템의 컴포넌트, 컴퓨터 판독가능 기록매체, 및 타겟 메모리 버퍼들을 제공하는 방법

Country Status (15)

Country Link
US (3) US7564460B2 (ko)
EP (2) EP1383080B1 (ko)
JP (2) JP4583720B2 (ko)
KR (2) KR100969448B1 (ko)
CN (1) CN100507832C (ko)
AU (1) AU2003203499B2 (ko)
BR (1) BRPI0301122B1 (ko)
CA (2) CA2772030C (ko)
MX (1) MXPA03004601A (ko)
MY (1) MY142776A (ko)
NO (2) NO328438B1 (ko)
PL (1) PL360754A1 (ko)
RU (1) RU2337402C2 (ko)
TW (2) TWI340927B (ko)
ZA (1) ZA200302809B (ko)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6828975B2 (en) 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US6809732B2 (en) * 2002-07-18 2004-10-26 Nvidia Corporation Method and apparatus for generation of programmable shader configuration information from state-based control information and program instructions
US6975321B1 (en) * 2003-05-05 2005-12-13 Nvidia Corporation System and method for generating multiple outputs in a single shader processing pass in a hardware graphics pipeline
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US8274517B2 (en) * 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US7248265B2 (en) 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7231632B2 (en) 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7636489B2 (en) 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US7847800B2 (en) 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US7978205B1 (en) 2004-05-03 2011-07-12 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8130237B2 (en) 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US7397964B2 (en) 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8068103B2 (en) 2004-06-24 2011-11-29 Apple Inc. User-interface design
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US7652678B2 (en) 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US8044951B1 (en) 2004-07-02 2011-10-25 Nvidia Corporation Integer-based functionality in a graphics shading language
US7958498B1 (en) 2004-07-02 2011-06-07 Nvidia Corporation Methods and systems for processing a geometry shader program developed in a high-level shading language
US7746347B1 (en) * 2004-07-02 2010-06-29 Nvidia Corporation Methods and systems for processing a geometry shader program developed in a high-level shading language
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
DE102004051567A1 (de) * 2004-10-22 2006-05-04 Siemens Ag Verfahren zur schnellen Bildverarbeitung zweidimensionaler Bilder
US8736623B1 (en) 2004-11-15 2014-05-27 Nvidia Corporation Programmable DMA engine for implementing memory transfers and video processing for a video processor
US7227551B2 (en) 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
US8004515B1 (en) * 2005-03-15 2011-08-23 Nvidia Corporation Stereoscopic vertex shader override
US7852353B1 (en) 2005-03-31 2010-12-14 Apple Inc. Encoding a transparency (alpha) channel in a video bitstream
GB2425030A (en) * 2005-04-09 2006-10-11 Tenomichi Ltd Managed network render targets for routing graphical information
US8452090B1 (en) 2005-04-25 2013-05-28 Apple Inc. Bayer reconstruction of images using a GPU
US7289127B1 (en) 2005-04-25 2007-10-30 Apple, Inc. Multi-conic gradient generation
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
DE102005031642B4 (de) * 2005-07-06 2008-05-29 Siemens Ag Mobiler Defibrillator
US8793576B2 (en) 2005-10-14 2014-07-29 Apple Inc. System and method for computing a desktop picture
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7793169B2 (en) * 2005-10-19 2010-09-07 Telefonaktiebolaget Lm Ericsson (Publ) Intelligent table-driven interleaving
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7483037B2 (en) 2005-10-27 2009-01-27 Apple, Inc. Resampling chroma video using a programmable graphics processing unit to provide improved color rendering
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
KR100696198B1 (ko) * 2005-12-23 2007-03-20 엠텍비젼 주식회사 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는임베디드 시스템
CN100395778C (zh) * 2006-03-15 2008-06-18 威盛电子股份有限公司 绘图系统以及绘图控制方法
US20070268298A1 (en) * 2006-05-22 2007-11-22 Alben Jonah M Delayed frame buffer merging with compression
TWI498850B (zh) * 2006-05-22 2015-09-01 Nvidia Corp 訊框緩衝區歸併的方法、電腦可讀取記憶體、與電腦系統
US8154554B1 (en) 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US8232991B1 (en) 2006-11-03 2012-07-31 Nvidia Corporation Z-test result reconciliation with multiple partitions
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8659601B1 (en) * 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8156467B2 (en) 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8581912B2 (en) 2008-06-27 2013-11-12 Microsoft Corporation Dynamic subroutine linkage optimizing shader performance
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US8289341B2 (en) * 2009-06-29 2012-10-16 Intel Corporation Texture sampling
US8922555B2 (en) * 2009-10-07 2014-12-30 Nvidia Corporation Pixel shader output map
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
US8340416B2 (en) * 2010-06-25 2012-12-25 Microsoft Corporation Techniques for robust color transfer
KR101926570B1 (ko) 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US10043234B2 (en) 2012-12-31 2018-08-07 Nvidia Corporation System and method for frame buffer decompression and/or compression
TWI517137B (zh) 2013-06-05 2016-01-11 晨星半導體股份有限公司 將影像寫入記憶體的方法及其裝置
CN104252414B (zh) * 2013-06-25 2018-03-27 晨星半导体股份有限公司 将影像写入存储器的方法及其装置
WO2015009294A2 (en) * 2013-07-17 2015-01-22 Spinella Ip Holdings, Inc. System and method for histogram computation using a graphics processing unit
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
EP3012737A1 (en) * 2014-10-24 2016-04-27 Thomson Licensing Devices and methods for generating elementary geometries
DE112014002477T5 (de) * 2014-11-21 2016-09-29 Intel Corporation Vorrichtung und Verfahren für eine effiziente Grafikverarbeitung in einer virtuellen Ausführungsumgebung
CN105719229B (zh) * 2014-12-19 2020-03-03 谷歌有限责任公司 一种基于指令流截取的应用程序透明化的分辨率控制
US10108321B2 (en) * 2015-08-31 2018-10-23 Microsoft Technology Licensing, Llc Interface for defining user directed partial graph execution
CN105678679B (zh) * 2015-12-31 2019-02-12 公安部第三研究所 大规模图片集合快速预览的系统及方法
JP2019204348A (ja) 2018-05-24 2019-11-28 キヤノン株式会社 情報処理装置及びその制御方法、並びにプログラム
KR20200145665A (ko) * 2019-06-19 2020-12-30 삼성전자주식회사 최적화된 픽셀 셰이더 속성 관리
US20210272347A1 (en) * 2020-02-28 2021-09-02 Advanced Micro Devices, Inc. Fully utilized hardware in a multi-tenancy graphics processing unit
CN114115873A (zh) * 2021-11-18 2022-03-01 网易(杭州)网络有限公司 着色器数据处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999052093A1 (en) * 1998-04-06 1999-10-14 Interactive Silicon, Inc. Video/graphics controller which performs pointer-based display list video refresh operations
JP2001204960A (ja) 2000-01-25 2001-07-31 Namco Ltd ゲームシステム及び情報記憶媒体
EP1182618A2 (en) 2000-08-23 2002-02-27 Nintendo Co., Limited Recirculating shade tree blender for a graphics system
EP1383080A1 (en) 2002-07-16 2004-01-21 Microsoft Corporation Intermediate buffers in a graphics system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392391A (en) * 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
TW219989B (en) 1992-05-29 1994-02-01 Ind Tech Res Inst A screen refreshing method which is independent of resolution
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
US5422657A (en) 1993-09-13 1995-06-06 Industrial Technology Research Institute Graphics memory architecture for multimode display system
TW299406B (en) 1993-10-29 1997-03-01 Ind Tech Res Inst Display memory structure of multi-mode display system
WO1996031844A1 (fr) * 1995-04-05 1996-10-10 Hitachi, Ltd. Systeme graphique
US5793374A (en) * 1995-07-28 1998-08-11 Microsoft Corporation Specialized shaders for shading objects in computer generated images
US5793371A (en) 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US6496190B1 (en) * 1997-07-02 2002-12-17 Mental Images Gmbh & Co Kg. System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
US5969728A (en) * 1997-07-14 1999-10-19 Cirrus Logic, Inc. System and method of synchronizing multiple buffers for display
US6353460B1 (en) * 1997-09-30 2002-03-05 Matsushita Electric Industrial Co., Ltd. Television receiver, video signal processing device, image processing device and image processing method
US6208273B1 (en) * 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US6421053B1 (en) * 1999-05-24 2002-07-16 International Business Machines Corporation Block rendering method for a graphics subsystem
TW444183B (en) 1999-06-28 2001-07-01 Integrated Technology Express Device and method for image rotation
US6819325B2 (en) * 2000-03-07 2004-11-16 Microsoft Corporation API communications for vertex and pixel shaders
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6862730B1 (en) * 2000-04-26 2005-03-01 Lucent Technologies Inc. Register allocation in code translation between processors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999052093A1 (en) * 1998-04-06 1999-10-14 Interactive Silicon, Inc. Video/graphics controller which performs pointer-based display list video refresh operations
JP2001204960A (ja) 2000-01-25 2001-07-31 Namco Ltd ゲームシステム及び情報記憶媒体
EP1182618A2 (en) 2000-08-23 2002-02-27 Nintendo Co., Limited Recirculating shade tree blender for a graphics system
EP1383080A1 (en) 2002-07-16 2004-01-21 Microsoft Corporation Intermediate buffers in a graphics system

Also Published As

Publication number Publication date
CA2772030C (en) 2014-09-16
CN1469240A (zh) 2004-01-21
KR20100029230A (ko) 2010-03-16
EP3156965A1 (en) 2017-04-19
MXPA03004601A (es) 2004-02-03
NO20031556D0 (no) 2003-04-07
EP1383080B1 (en) 2016-12-07
AU2003203499A1 (en) 2004-02-05
US20030020741A1 (en) 2003-01-30
AU2003203499B2 (en) 2009-07-30
US8063909B2 (en) 2011-11-22
US7564460B2 (en) 2009-07-21
NO20100178L (no) 2004-01-19
JP4922367B2 (ja) 2012-04-25
TWI361395B (en) 2012-04-01
JP4583720B2 (ja) 2010-11-17
JP2009277258A (ja) 2009-11-26
JP2004054891A (ja) 2004-02-19
EP1383080A1 (en) 2004-01-21
BR0301122A (pt) 2004-08-17
PL360754A1 (en) 2004-01-26
US20120113118A1 (en) 2012-05-10
CA2424650A1 (en) 2004-01-16
CN100507832C (zh) 2009-07-01
MY142776A (en) 2010-12-31
US8379035B2 (en) 2013-02-19
CA2424650C (en) 2013-02-19
CA2772030A1 (en) 2004-01-16
KR20040007242A (ko) 2004-01-24
NO331263B1 (no) 2011-11-14
RU2337402C2 (ru) 2008-10-27
TWI340927B (en) 2011-04-21
ZA200302809B (en) 2003-10-14
US20090256849A1 (en) 2009-10-15
NO328438B1 (no) 2010-02-22
TW200405219A (en) 2004-04-01
TW201112162A (en) 2011-04-01
KR100995157B1 (ko) 2010-11-17
BRPI0301122B1 (pt) 2015-12-01

Similar Documents

Publication Publication Date Title
KR100969448B1 (ko) 그래픽스 시스템의 중간 타겟들을 제공하기 위한 시스템및 방법
US7671862B1 (en) Systems and methods for providing an enhanced graphics pipeline
US7570267B2 (en) Systems and methods for providing an enhanced graphics pipeline
EP2033085B1 (en) Fast reconfiguration of graphics pipeline state
RU2324978C2 (ru) Системы и способы для обеспечения управляемой дискретизации текстуры
US20130120418A1 (en) Web-Based Graphics Rendering System
US20040169671A1 (en) Effects framework pipeline integration with programmable shader

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 10