KR20060094850A - 하드웨어 가속 블렌드 모드 - Google Patents

하드웨어 가속 블렌드 모드 Download PDF

Info

Publication number
KR20060094850A
KR20060094850A KR1020060001658A KR20060001658A KR20060094850A KR 20060094850 A KR20060094850 A KR 20060094850A KR 1020060001658 A KR1020060001658 A KR 1020060001658A KR 20060001658 A KR20060001658 A KR 20060001658A KR 20060094850 A KR20060094850 A KR 20060094850A
Authority
KR
South Korea
Prior art keywords
processing unit
pixel
destination
color
primitive
Prior art date
Application number
KR1020060001658A
Other languages
English (en)
Other versions
KR101213872B1 (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 KR20060094850A publication Critical patent/KR20060094850A/ko
Application granted granted Critical
Publication of KR101213872B1 publication Critical patent/KR101213872B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • 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
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Image Communication Systems (AREA)

Abstract

그래픽 처리 유닛에 의한 소스 및 데스티네이션 프리미티브의 컬러의 블렌딩이 개시된다. 그래픽 처리 유닛은 프리미티브를 블렌딩하는 블렌딩 프로그램을 실행한다. 그래픽 처리 유닛은 중앙 처리 유닛 또는 그래픽 응용 프로그램으로부터 블렌딩 프로그램을 수신한다. 예를 들어, 그래픽 처리 유닛은 소스 프리미티브를 소스 텍스처 맵 내에 드로잉하고, 데스티네이션 프리미티브를 데스트네이션 텍스처 맵 내에 드로잉한다. 블렌딩 프로그램(예를 들어, 픽셀 셰이더)은 프리미티브에 적용되도록 설정되고, 그래픽 처리 유닛은 블렌드 모드를 프리미티브의 각 픽셀에 적용하여, 합성 프리미티브를 데스티네이션 렌더 타깃 내에 렌더링한다.
블렌드 모드, 픽셀 셰이더, 소스 프리미티브, 데스티네이션 프리미티브, 그래픽 처리 유닛, 그래픽 응용 프로그램

Description

하드웨어 가속 블렌드 모드{HARDWARE ACCELERATED BLEND MODES}
도 1은 본 발명의 양상이 구현될 수도 있는 예시적인 컴퓨팅 환경을 도시한 블록도.
도 2는 본 발명에 따른 하드웨어 가속 블렌드 모드를 제공하기 위한 예시적인 시스템의 블록도.
도 3은 본 발명에 따른 하드웨어 가속 블렌드 모드를 제공하기 위한 예시적인 방법의 흐름도.
도 4는 본 발명에 따른 하드웨어 가속 블렌드 모드를 제공하기 위한 대안적인 예시적인 방법의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
210 : 클라이언트 컴퓨터
220, 260 : 중앙 처리 유닛
225 : 프로그램가능 그래픽 처리 유닛
235, 265 : 그래픽 응용 프로그램
250 : 서버 컴퓨터
본 발명은 컴퓨터 그래픽에 관한 것으로서, 구체적으로는 그래픽 정보의 컴퓨터 하드웨어 렌더링에 관한 것이다.
블렌드 모드(blend mode)는, 소스 프리미티브(source primitive)의 컬러를 데스티네이션 프리미티브(destination primitive)의 컬러와 조합하여, 렌더된 프리미티브(rendered primitive)에서의 새로운 컬러를 생성할 때 이용하는 공식(formular)이다. 프리미티브는 통상적인 그래픽 처리 유닛(unit)이 그리는 가장 단순한 객체이고, 프리미티브들은 더욱 견고한 이미지, 형상, 배경, 그래픽 등을 형성하도록 조합될 수 있다. 소스 프리미티브는 현존하는 프리미티브 위에 렌더되는 프리미티브일 수 있고, 데스티네이션 프리미티브는 현존하는 프리미티브일 수 있다. 소스 프리미티브를 데스티네이션 프리미티브 내로 렌더하기 위해 특정 블렌드 모드를 사용할 때, 블렌드 모드는 소스 및 데스티네이션 프리미티브들의 각각의 픽셀에 적용될 수 있다. 이러한 방식으로, 블렌드 모드는 렌더된 프리미티브의 각각의 픽셀에 대한 새로운 컬러를 계산하기 위해 소스 및 데스티네이션 프리미티브의 각 픽셀에 적용될 수 있다.
픽셀의 컬러는 4가지 성분의 조합에 의해 설명될 수 있다. 3가지 성분은 컬러에서의 적색(R), 녹색(G) 및 청색(B)의 양을 나타낼 수 있다. 이들 성분은 R, G 및 B로 표시될 수 있는데, 이들 각각은 0에서 1까지의 범위에 있는 부동 소수점 수일 수 있다. 네 번째 성분은 알파 A 값일 수 있고, 픽셀의 불투명도를 나타낼 수 있다. 0의 알파 A 값은 투명한 픽셀을 나타내고, 1의 알파 A 값은 불투명한 픽셀 을 나타낼 수 있으며, 소수 알파 A 값은 픽셀의 반투명 정도를 나타낼 수 있다. 그러므로 R, G, B 및 A의 4개의 값은 픽셀의 컬러 및 불투명도를 정할 수 있다.
블렌드 모드의 공식은 여러 방식으로 기입될 수 있다. 그래픽 처리 유닛은 소스 컬러 S 및 데스티네이션 컬러 D의 성분으로부터 새로운 컬러 N의 성분을 계산하는 공식을 위해 내장 지원기능(built-in support)을 제공할 수 있다. 공식은 블렌드 모드가 작용하는 방법을 결정할 수 있는 파라미터 P 및 Q를 포함할 수 있다. "소스 블렌드 계수"라고 불리는 파라미터 P는 세트 {0,1,DA,1-DA,DC,1-DC}로부터 선택될 수 있다. 유사하게, "데스티네이션 블렌드 계수"라고 불리는 파라미터 Q는 세트 {0,1,SA,1-SA,SC,1-SC}로부터 선택될 수 있다. 각 픽셀에 대한 새로운 컬러 또는 불투명도 N을 생성하기 위해 그래픽 처리 유닛에 내장될 수 있는 블렌드 모드는 다음을 포함할 수 있다.
NR = P·SR + Q·DR
NG = P·SG + Q·DG
NB = P·SB + Q·DB
NA = P·SA + Q·DA
블렌드 모드는 다음의 표 1에 열거된 바와 같이, P 및 Q 파라미터를 사용하여 얻을 수 있다.
블렌드 모드 P Q
클리어(Clear) 0 0
소스(Source) 1 0
데스티네이션(Destination) 0 1
소스 오버(Source Over) 1 1-SA
데스테네이션 오버(Destination Over) 1-DA 1
소스 인(Source In) DA 0
데스티네이션 인(Destination In) 0 SA
소스 아웃(Source Out) 1-DA 0
데스티네이션 아웃(Destination Out) 0 1-SA
소스 어톱(Source Atop) DA 1-SA
데스티네이션 어톱(Destination Atop) 1-DA SA
XOR(Exclusive Or) 1-DA 1-SA
추가(Add) 1 1
스크린(Screen) 1-DC 1
P 및 Q 이외의 파라미터는 블렌드 모드에 부가적인 변화를 주기 위해 블렌드 모드에 추가될 수 있다. 예를 들어, 파라미터 X, Y 및 Z가 사용될 수 있고, 값이 0 또는 1인 상수일 수 있다. 불투명 소스 프리미티브를 불투명 데스티네이션 프리미티브와 합성할 때, X는 소스와 데스티네이션의 교차점이 합성 프리미티브 내에 나타나는지 판정할 수 있고, Y는 데스티네이션 프리미티브 외부로 소스 프리미티브의 일부가 나타나는지 판정할 수 있으며, Z는 소스 프리미티브 외부로 데스티네이션 프리미티브의 일부가 나타나는지 판정할 수 있다. 함수 f는 소스 및 데스티네이션 컬러의 함수일 수 있다. 다음 식은 또한 각 픽셀에 대해 주어진 소스 컬러 S 및 데스티네이션 컬러 D로부터 새로운 컬러 또는 불투명도 N을 계산하는 블렌드 모드의 더욱 일반적인 공식을 제공할 수 있다.
NR = f(SR,SA,DR,DA) + Y·SR·(1-DA) + Z·DR·(1-SA)
NG = f(SG,SA,DG,DA) + Y·SG·(1-DA) + Z·DG·(1-SA)
NB = f(SB,SA,DB,DA) + Y·SB·(1-DA) + Z·DB·(1-SA)
NA = X·SA·DA + Y·SA·(1-DA) + Z·DA·(1-SA)
몇몇 블렌드 모드는, 예를 들어 그래픽 처리 유닛을 위한 드라이버가 포함될 수 있고, 그외 다른 블렌드 모드는 그래픽 응용 프로그램에 의해 공급될 수 있다. 그러한 블렌드 모드의 예시적인 파라미터 값은 다음의 표 2에 열거된다.
블렌드 모드 f(SC,SA,DC,DA) X Y Z
클리어 0 0 0 0
소스 SC·DA 1 1 0
데스티네이션 DC·SA 1 0 1
소스 오버 SC·DA 1 1 1
데스티네이션 오버 DC·SA 1 1 1
소스 인 SC·DA 1 0 0
데스티네이션 인 DC·SA 1 0 0
소스 아웃 0 0 1 0
데스티네이션 아웃 0 0 0 1
소스 어톱 SC·DA 1 0 1
데스티네이션 어톱 DC·SA 1 1 0
XOR 0 0 1 1
추가 SC·DA + DC·SA 1 1 1
스크린 SC·DA + DC·SA - SC·DC 1 1 1
멀티플라이(Multiply) SC·DC 1 1 1
오버레이(Overlay) 2·DC<DA이면, 2·SC·DC; 그렇지 않으면, SC·DC - 2·(DA-DC)·(SA-SC) 1 1 1
명화(Lighten) max(SC·DA, DC·SA) 1 1 1
암화(Darken) min(SC·DA, DC·SA) 1 1 1
컬러 닷지(Color Dodge) SC·DA + DC·SA≥SA·DA이면, SA·DA; 그렇지 않으면, DC·SA/(1-SC/SA) 1 1 1
컬러 번(Color Burn) SC·DA + DC·SA≤SA·DA이면, 0; 그렇지 않으면, SA·(SC·DA + DC·SA - SA·DA)/SC 1 1 1
하드 라이트(Hard Light) 2·SC<SA이면, 2·SC·DC; 그렇지 않으면, SA·DA - 2·(DA-DC)·(SA-SC) 1 1 1
소프트 라이트(Soft Light) 2·SC<SA이면, DC·(SA-(1-DC/DA)·(2·SC-SA)); 8·DC≤DA이면, DC·(SA-(1-DC/DA)·(2·SC-SA)· (3-8·DC/DA)); 그렇지 않으면, DC·SA + (DA·(DC/DA)0.5 - DC)· (2·SC-SA) 1 1 1
디퍼런스(Difference) abs(SC·DA - DC·SA) 1 1 1
익스클루전(Exclusion) SC·DA + DC·SA - 2·SC·DC 1 1 1
통상적으로, 그래픽 처리 유닛은 몇 개의 블렌드 모드를 적용한다. 더욱 복잡하거나 변화된 블렌드 모드에 대해서는, 그래픽 응용 프로그램이 중앙 처리 유닛상의 소프트웨어를 통해 그들의 렌더링 계산의 일부 또는 전체를 수행할 수 있다. 즉, 중앙 처리 유닛은 2개의 프리미티브의 블렌딩을 수행한 다음, 렌더링을 위해 그래픽 처리 유닛에 비트맵을 보낼 수 있다. 그러므로, 그래픽 응용 프로그램의 실행 속도는 중앙 처리 유닛이 합성 프리미티브의 픽셀을 렌더할 수 있는 렌더링 속도에 의해 제한될 수 있다. 중앙 처리 유닛의 렌더링 속도는 그래픽 처리 유닛의 렌더링 속도보다 더 느려질 수 있다.
예를 들어 그래픽 응용 프로그램은, 특정 프리미티브가 다른 프리미티브의 위에서 드로잉했을 때, 다른 프리미티브의 컬러를 어둡게 해야 한다는 것을 지정할 수 있다. 현존하는 프리미티브에 적용된 어두워지는 양은 블렌드 모드에 따라 새로 드로잉된 프리미티브의 휘도에 의해 제어될 수 있다. 통상적으로, 블렌드 모드는 합성 렌더링 내의 새로운 프리미티브에 의해 커버된 각 픽셀에 대해 중앙 처리 유닛에 의해 적용될 수 있다.
하나의 픽셀씩 블렌드 모드를 적용하기 위한 중앙 처리 유닛의 사용은 렌더링 프로세스가 완료될 때 애플리케이션 실행을 느리게 할 수 있다. 추가로, 중앙 처리 유닛은, 블렌드 모드를 적용하기 위해 다른 작업을 완료하고 있는 데서 끌어당겨 사용될 수 있으므로, 다른 태스크의 성능을 느리게 할 가능성이 있다. 클라이언트-서버 시나리오에서, 서버 중앙 처리 유닛은 블렌드 모드를 적용한 다음, 합성 프리미티브의 모든 픽셀을 서버에서 클라이언트로 전송하는데, 귀중한 대역폭을 소비할 수 있다.
그러므로 그래픽 처리 유닛의 속도를 이용하면서 블렌드 모드를 더욱 효율적으로 렌더링하는 방법 및 장치가 필요하다. 추가로, 이 방법 및 장치는 중앙 처리 유닛의 요구된 계산량, 및 렌더링 프로세스에서 요구된 대역폭을 최소화해야 한다.
본 발명은 그래픽 응용 프로그램 블렌드 모드가 중앙 처리 유닛보다는 그래픽 처리 유닛상에서 계산될 수 있게 한다. 본 발명은 현재의 그래픽 하드웨어의 파이프라인 병렬성을 이용하고, 중앙 처리 유닛이 자유롭게 다른 기능을 수행하게 하며, 서버에서 클라이언트로의 합성 프리미티브의 픽셀의 전송을 줄일 수 있다. 2개 이상의 프리미티브의 블렌딩을 위해 호출하는 그래픽 응용 프로그램 코드는, 실행시에, 블렌딩을 위해 블렌드 모드를 적용할 수 있는 프로그램을 중앙 처리 유닛에 보낼 수 있다. 중앙 처리 유닛은 실행을 위해 이 프로그램을 그래픽 처리 유닛으로 보낼 수 있다.
그래픽 처리 유닛은 프로그램을 실행할 수 있고, 예를 들어, 소스 텍스처 맵 내에 소스 프리미티브를 드로잉하고, 데스티네이션 텍스처 맵 내에 데스티네이션 프리미티브를 드로잉할 수 있다. 프리미티브에 블렌드 모드를 적용하는 프로그램은 소스 및 데스티네이션 텍스처 맵에 적용되도록 설정될 수 있다. 다음으로, 그래픽 처리 유닛은, 블렌드 모드를 프리미티브의 각각의 픽셀에 적용하고, 데스티네이션 렌더 타깃 내에 합성 프리미티브를 렌더할 수 있다.
본 발명에 관한 개요 및 다음의 상세한 설명은 첨부된 도면과 함께 읽으면 더욱 잘 이해된다. 본 발명의 실시예가 도면에 도시되는데, 본 발명은 도시된 특 정 방법 및 수단에 제한되지 않는다는 것을 알 수 있을 것이다.
예시적인 컴퓨팅 환경
도 1 및 다음 설명은 본 발명의 예시적인 실시예가 구현될 수 있는 적합한 컴퓨팅 환경(100)에 관한 간단한 일반적인 설명을 제공하기 위한 것이다. 여기에서 사용되는 바와 같이, "컴퓨팅 시스템", "컴퓨터 시스템", 및 "컴퓨터"라는 용어는 프로그램 코드 및/또는 데이터를 실행하거나 달리 프로세싱할 수 있는 프로세서를 포함하는 기계, 시스템 또는 디바이스를 나타낸다. 컴퓨팅 시스템의 예는 퍼스널 컴퓨터(PC), 미니컴퓨터, 메인프레임 컴퓨터, 씬 클라이언트, 네트워크 PC, 서버, 워크스테이션, 랩탑 컴퓨터, 핸드-헬드 컴퓨터, 프로그램가능 소비자 전자제품, 멀티미디어 콘솔, 게임 콘솔, 위성 수신기, 셋탑 박스, 현금 자동 입출금기(ATM), 아케이드 게임, 이동 전화, 개인 휴대 정보 단말기(PDA) 및 임의의 다른 프로세서 기반의 시스템 또는 기계를 포함하는데, 이것에 제한되지는 않는다. "프로그램 코드" 및 "코드"라는 용어는 프로세서에 의해 실행되거나 달리 프로세싱되는 어떤 명령어 세트를 나타낸다. 범용 컴퓨터가 후술되는데, 이것은 한 예일 뿐이다. 본 발명은 또한 네트워크 서버 상호운용성 및 상호작용을 갖는 씬 클라이언트상에서 동작가능할 수 있다. 그러므로, 본 발명의 예시적인 실시예는 아주 조금의 또는 최소한도의 클라이언트 자원이 관련되는 네트워크 호스트화 서비스의 환경에서, 예를 들어, 클라이언트 디바이스가 월드 와이드 웹으로의 브라우저 또는 인터페이스로서만 사용되는 네트워크 환경에서 구현될 수 있다.
요구된 것은 아니지만, 본 발명은 개발자 또는 테스터에 의해 사용하기 위해 응용 프로그래밍 인터페이스(API)를 통해 구현될 수 있고/있거나, 하나 이상의 컴퓨터(예를 들어, 클라이언트 워크스테이션, 서버 또는 기타 디바이스)에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 설명될 네트워크 브라우징 소프트웨어 내에 포함될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 실행하거나 특정 추상 데이터형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는대로 결합되거나 분산될 수 있다. 본 발명의 실시예는 또한 통신 네트워크 또는 기타 데이터 전송 매체를 통해 링크되는 원격 프로세싱 디바이스에 의해 태스크가 실행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 내에 위치될 수 있다.
도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 도시한 것으로, 명백하게 상술하지만, 컴퓨팅 시스템 환경(100)은 단지 적합한 컴퓨팅 환경의 일 예이며, 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 도시된 컴포넌트들 중의 어느 하나 또는 조합에 관하여 어떤 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트로는, 중앙 처리 유닛(120), 그래픽 처리 유닛(125), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 중앙 처리 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이것에 제한되지는 않는다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 어떤 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 제어기를 포함하는 몇 가지 유형의 버스 구조 중의 어떤 것일 수 있다. 예로서, 그러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이것에 제한되지는 않는다. 컴퓨터(110)는 부수적으로, 그래픽 처리 유닛(125) 및 비디오 인터페이스(190)가 모니터(191)와 통신하는 가속 그래픽 버스를 포함할 수 있다.
그래픽 처리 유닛(125)은, 예를 들어 프리미티브에서 각 버퍼로의 그래픽 점들을 변환하고, 각 픽셀에서의 라이팅(lighting)을 계산하며, 표면상의 텍스처를 계산하고, 프리미티브를 렌더링함으로써, 모니터(191)상에 프리미티브 및 프리미티브 조합(예를 들어, 이미지, 형상, 배경, 그래픽 등)을 렌더할 수 있다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 어떤 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있는데, 이것에 제한되지는 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 어떤 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 기타 광학 디스크 저장 디바이스, 자기 카세트, 자기 테이프, 자기 디스크 저장 디바이스 또는 기타 자기 저장 디바이스, 또는 컴퓨터(110)에 의해 억세스될 수 있고 원하는 정보를 저장하는데 사용될 수 있는 임의의 기타 매체를 포함할 수 있는데, 이것에 제한되지는 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메커니즘과 같은 변조된 데이터 신호 내에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하는데, 이것에 제한되지는 않는다. 상술한 것들 중의 어떤 조합은 또한 컴퓨터 판독가능 매체의 범위 내에 포함된다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 처리 유닛(120)에 즉시 액세스될 수 있고/있거나 처리 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, 도 1은 운영 체계(134), 응용 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시하고 있는데, 이것에 제한되지는 않는다. RAM(132)은 기타 데이터 및/또는 프로그램 모듈을 포함할 수 있다.
컴퓨터(110)는 또한 그외 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체와 같은 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 동작 환경에서 사용될 수 있는 그외 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만, 이것에 제한되지는 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어 하드 디스크 드라이브(141)는 운영 체계(144), 응용 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터 (147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 운영 체계(134), 응용 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 운영 체계(144), 응용 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 다른 복사본임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 마우스, 트랙볼 또는 터치 패드라 불리우는 포인팅 디바이스(161) 및 키보드(162)와 같은 입력 디바이스를 통해 컴퓨터(110) 내로 커맨드 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 디바이스는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 디바이스 및 그외의 입력 디바이스는 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 종종 처리 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버셜 시리얼 버스(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다.
모니터(191) 또는 다른 유형의 표시 디바이스는 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터(191) 외에, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196)와 같은 기타 주변 출력 디바이스를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1에는 메모리 저장 디바이스(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크도 포함할 수도 있다. 그러한 네트워크 환경은 사무실, 기업 전반의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷과 같은 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 디바이스에 저장될 수 있다. 예로서, 도 1은 메모리 디바이스(181)에 상주하는 원격 응용 프로그램(185)을 도시하고 있는데, 이것에 제한되지는 않는다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다는 것을 알 수 있을 것이다.
컴퓨터(110) 또는 기타 클라이언트 디바이스는 컴퓨터 네트워크의 일부로서 배치될 수 있다. 이와 관련하여, 본 발명은 임의의 수의 메모리 또는 저장 유닛, 및 임의의 수의 저장 유닛 또는 볼륨 전반에서 발생하는 임의의 수의 애플리케이션 및 프로세스를 갖는 어떤 컴퓨터 시스템에 적합하다. 본 발명의 실시예는 원격 및 로컬 스토리지(storage)를 갖는 서버 컴퓨터 및 클라이언트 컴퓨터가 네트워크 환경 내에 배치되어 있는 환경에 적용할 수 있다. 본 발명은 또한 프로그래밍 언어 기능, 해석 및 실행 능력을 갖는 독립형 컴퓨팅 디바이스에 적용할 수 있다.
예시적인 실시예
도 2는 본 발명에 따른 하드웨어 가속 블렌드 모드를 제공하는 예시적인 시스템(200)의 블록도이다. 시스템(200)은 서버 컴퓨터(250)와 통신하는 클라이언트 컴퓨터(210)를 포함할 수 있다. 본 발명의 실시예는 클라이언트 컴퓨터(210) 또는 서버 컴퓨터(250) 단독으로 구현될 수 있고, 시스템(200)은 본 발명의 다수의 예시적인 구현예 중의 하나를 나타낸 것임을 알 수 있을 것이다.
클라이언트 컴퓨터(210) 및 서버 컴퓨터(250)는 각각 도 1과 관련하여 설명된 컴퓨터(110)일 수 있다. 클라이언트 컴퓨터(210)는 중앙 처리 유닛(220), 그래픽 응용 프로그램(235) 및 프로그램가능 그래픽 처리 유닛(225)을 포함할 수 있고, 모니터(291)에 표시를 제공할 수 있다. 서버 컴퓨터(250)는 중앙 처리 유닛(260) 및 그래픽 응용 프로그램(265)을 포함할 수 있다. 물론, 클라이언트 컴퓨터(210) 및 서버 컴퓨터(250)는 그외 다른 컴포넌트를 포함할 수 있고, 도 1과 관련하여 설명된 것과 같은 그외 다른 디바이스와 통신할 수 있다.
프로그램가능 그래픽 처리 유닛(225)은 프리미티브 및 프리미티브의 조합(예를 들어, 이미지, 형상, 배경, 그래픽 등)을 모니터(191)상에 렌더하는 하드웨어 디바이스일 수 있다. 프로그램가능 그래픽 처리 유닛(225)은, 예를 들어 프리미티브에서 각 버퍼로의 그래픽 점들을 변환하고, 각 픽셀에서의 라이팅을 계산하며, 표면상의 텍스처를 계산하여, 프리미티브를 모니터(291)상에 렌더함으로써, 프리미티브를 렌더할 수 있다. 프로그램가능 그래픽 처리 유닛(225)은 클라이언트 컴퓨터(210)의 중앙 처리 유닛(220)과 통신할 수 있다. 대안으로 또는 추가로, 프로그램가능 그래픽 처리 유닛(225)은 클라이언트 컴퓨터(210)를 통해, 서버 컴퓨터(250)의 중앙 처리 유닛(260)과 통신할 수 있다.
그래픽 응용 프로그램(235,265)은 각각 프리미티브와 같은 그래픽 정보의 렌더링을 제공하는 애플리케이션일 수 있다. 그러한 프리미티브는 버퍼 내에 렌더되거나 모니터상에 표시된 임의의 것일 수 있다. 프리미티브들은 조합되어, 예를 들어 픽처, 비디오, 이미지, 텍스트, 그래픽 또는 형상으로서 렌더될 수 있다. 그래픽 응용 프로그램(235,265)은 소스 프리미티브를 데스티네이션 프리미티브와 블렌딩하는 블렌드 모드를 그래픽 처리 유닛을 통해 구현할 수 있다. 블렌드 모드는 일반적으로 픽셀 셰이더(pixel shader)라고 불리는 분리된 함수, 프로그램, 모듈 등의 실행을 통해 프리미티브에 적용되거나 구현될 수 있다. 본 명세서에서 사용되는 바와 같이, 픽셀 셰이더라는 용어는 블렌드 모드를 적용하는 프로그램 코드를 의미한다. 그래픽 응용 프로그램(235,265)은 픽셀 셰이더 내에서의 블렌드 모드의 적용을 제공할 수 있고, 각각의 픽셀 셰이더는 블렌드 모드를 실행하는 함수 또는 프로그램일 수 있다.
그래픽 응용 프로그램(235,265)은 각각의 중앙 처리 유닛(220,260)과 통신하거나, 각각의 중앙 처리 유닛(220,260)에 의해 실행될 수 있다. 그래픽 응용 프로그램(235)의 실행 중에, 소스 프리미티브는 블렌드 모드에 따라 데스티네이션 프리 미티브와 블렌드되기 위해 호출될 수 있다. 그래픽 응용 프로그램(235)은 중앙 처리 유닛(220)에 픽셀 셰이더를 보낼 수 있다. 본 발명에 따르면, 중앙 처리 유닛상에서 픽셀 셰이더를 실행하는 대신, 그래픽 응용 프로그램(235)은 중앙 처리 유닛(220)에 픽셀 셰이더를 프로그램가능 그래픽 처리 유닛(225)으로 보내도록 명령할 수 있다. 중앙 처리 유닛(220)은 프로그램가능 그래픽 처리 유닛(225)에게 픽셀 셰이더를 실행하도록 명령할 수 있다. 그러므로, 픽셀 셰이더는 소스 및 데스티네이션 프리미티브의 각 픽셀에 블렌드 모드를 용이하게 적용하여, 합성 프리미티브를 렌더할 수 있다. 즉, 프로그램가능 그래픽 처리 유닛(225)은 소스 및 데스티네이션 프리미티브를 블렌드 모드에 따라 블렌드하도록 명령받을 수 있다. 프로그램가능 그래픽 처리 유닛(225)는 소스 및 데스티네이션 프리미티브의 각 픽셀에 블렌드 모드를 적용하여 합성 프리미티브를, 예를 들어 모니터(291)상에 렌더하기 위해, 픽셀 셰이더를 실행할 수 있다. 대안으로, 그래픽 응용 프로그램(235)은 그래픽 응용 프로그램(235)과 그래픽 처리 유닛(225) 사이의 중개자로서 작용하는 애플리케이션과 통신할 수 있다. 그러한 중개 애플리케이션은 픽셀 셰이더를 포함하는 그래픽 라이브러리 또는 그래픽 처리 유닛 드라이버일 수 있다. 그래픽 응용 프로그램(235)은 중개 애플리케이션에게 블렌딩 동작을 위해 적절한 픽셀 셰이더를 프로그램가능 그래픽 처리 유닛(225)에 제공하도록 명령할 수 있다. 다음으로, 중개 애플리케이션은, 적절한 블렌딩을 제공하기 위한 적절한 픽셀 셰이더를 선택하여, 실행을 위해 픽셀 셰이더를 그래픽 처리 유닛으로 보낼 수 있다.
대안적인 실시예에서, 서버 컴퓨터(250)에서 실행되는 그래픽 응용 프로그램 (265)은 픽셀 셰이더를 중앙 처리 유닛(260)으로 보내서, 중앙 처리 유닛(260)에게 프로그램가능 그래픽 처리 유닛(225)상에서 실행하기 위해 그것을 클라이언트 컴퓨터(210)에 보내도록 명령할 수 있다. 중앙 처리 유닛(260)은 프로그램가능 그래픽 처리 유닛(225)에게 픽셀 셰이더를 실행하여 합성 프리미티브를 렌더하도록 명령할 수 있다.
도 3은 본 발명에 따른 하드웨어 가속 블렌드 모드를 제공하는 예시적인 방법(300)의 흐름도이다. 이 방법은 단계(310)에서 시작되어, 그래픽 응용 프로그램(예를 들어, 프리미티브가 디스플레이상에 렌더되게 하기 위해 호출하는 애플리케이션)이 컴퓨터상에서 실행될 수 있다. 컴퓨터는 도 2의 클라이언트 컴퓨터(210) 또는 서버 컴퓨터(250), 또는 소정의 다른 컴퓨터일 수 있다. 단계(320)에서, 그래픽 응용 프로그램은 버퍼(예를 들어, 디스플레이) 내로 렌더하기 위해 데스티네이션 프리미티브와 블렌드될 소스 프리미티브를 제공하거나 요구할 수 있다. 그래픽 응용 프로그램은 단계(330)에서, 실행시에 블렌드 모드를 적용하는 프로그램 코드를 중앙 처리 유닛에 보낼 수 있다. 그러한 프로그램 코드는 픽셀 셰이더를 포함할 수 있다.
단계(340)에서, 중앙 처리 유닛은 프로그램 코드를 실행을 위해 프로그램가능 그래픽 처리 유닛으로 보낼 수 있다. 프로그램가능 그래픽 처리 유닛은 단계(350)에서, 소스 및 데스티네이션 프리미티브의 각 픽셀에 블렌드 모드를 적용하기 위해 프로그램 코드를 실행할 수 있다. 그 다음, 합성 프리미티브는 단계(360)에서, 디스플레이 버퍼상에 렌더될 수 있다.
도 4는 본 발명에 따른 하드웨어 가속 블렌드 모드를 제공하기 위한 대안적인 예시적인 방법(400)의 흐름도이다. 이 방법은 단계(410)에서 시작되어, 프로그램가능 그래픽 처리 유닛이, 예를 들어 공급된 픽셀 셰이더를 사용하여 소스 프리미티브를 데스티네이션 프리미티브와 블렌드하도록 명령받는다. 픽셀 셰이더는, 예를 들어 그래픽 응용 프로그램, 드라이버, 그래픽 라이브러리 또는 운영 체계에 의해 공급될 수 있다. 단계(420)에서, 소스 프리미티브는 수신되어 임시 텍스처 맵으로 렌더될 수 있는데, 임시 텍스터 맵은 이후 소스 텍스처 맵이라 부른다. 소스 프리미티브는 그것을 그래픽 응용 프로그램으로부터 수신한 중앙 처리 유닛으로부터 수신될 수 있다.
단계(430)에서, 렌더 타깃으로부터의 데스티네이션 프리미티브의 복사가 행해져서, 임시 텍스처 맵 내에 배치될 수 있다. 이 임시 텍스처 맵은 이후 데스티네이션 텍스처 맵이라 칭해진다. 단계(430)는 사용된 프로그램가능 그래픽 처리 유닛이 데스티네이션 렌더 타깃으로부터 직접 픽셀 컬러를 판독하기 위해 픽셀 셰이더를 제공하지 않는 경우에 실행될 수 있음을 알 수 있을 것이다. 프로그램가능 그래픽 처리 유닛의 아키텍처가 동일한 렌더 타깃으로부터의 판독 및 그 타깃으로의 기입을 가능하게 하거나 허용하는 경우, 단계(430)은 방법(400)으로부터 제거될 수 있다.
단계(440)에서, 픽셀 셰이더는 그 실행 동안에 소스 및 데스티네이션 텍스처 맵을 사용하도록 세팅될 수 있다. 프로그램가능 그래픽 처리 유닛은 단계(450)에서 픽셀 셰이더를 실행하여, 소스 및 데스티네이션 텍스터 맵의 각 픽셀에 블렌드 모드를 적용해서, 채워진 사각형을 데스티네이션 렌더 타깃 내로 드로잉할 수 있다. 즉, 프로그램가능 그래픽 처리 유닛은 각 픽셀에 대해 데스티네이션 렌더 타깃 내에 배치될 최종적인 컬러를 생성하기 위해 소스 필섹 컬러와 데스티네이션 픽셀 컬러를 조합할 수 있다. 픽셀 셰이더는 본 명세서에서 설명된 것 및 예를 들어 픽셀 셰이더 어셈블리어 또는 고레벨 셰이딩 언어를 사용하는 그외 다른 것과 같은 블렌드 모드를 프로세스하도록 개발될 수 있음을 알 수 있을 것이다. 단계(460)에서, 렌더될 프리미티브가 더 있으면, 프로세스는 단계(420)부터 반복될 수 있다. 단계(460)에서, 렌더될 프리미티브가 더 이상 없으면, 데스티네이션 렌더 타켓이 표시될 수 있다.
본 명세서에서 설명된 여러 가지 기법은 하드웨어 또는 소프트웨어, 또는 적절한 경우에 그 둘의 조합과 관련하여 구현될 수 있다. 그러므로, 본 발명의 방법 및 장치, 또는 소정의 실시양상 또는 그 일부는 플로피 디스켓, CD-ROM, 하드 드라이브 또는 임의의 다른 기계 판독가능 저장 매체와 같은 유형 매체에 구현된 프로그램 코드(즉, 명령어)의 형태를 가질 수 있는데, 프로그램 코드가 컴퓨터와 같은 기계 내로 로드되어 그 기계에 의해 실행될 때, 그 기계는 본 발명을 실시하는 장치가 된다. 프로그램가능한 컴퓨터상에서의 프로그램 코드 실행의 경우에, 컴퓨팅 디바이스는 일반적으로 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 엘리먼트를 포함), 최소한 하나의 입력 디바이스 및 최소한 하나의 출력 디바이스를 포함할 것이다. 하나 이상의 프로그램은 양호하게, 컴퓨터 시스템과 통신하기 위해 고레벨 절차 또는 객체 지향 프로그래밍 언 어로 구현된다. 그러나, 프로그램(들)은 원한다면 어셈블리 또는 기계어로 구현될 수 있다. 어떠한 경우든, 언어는 컴파일된 또는 해석된 언어일 수 있고, 하드웨어 구현물과 결합될 수 있다.
본 발명은 여러 도면과 함께 특정 실시예와 관련하여 설명되었지만, 본 발명의 범위를 벗어나지 않고서 본 발명의 동일한 기능을 수행하기 위해, 설명된 실시예에 변경 및 추가가 행해지거나, 그외 다른 실시예들이 사용될 수 있음을 알 수 있을 것이다. 예들은 본 발명의 설명시에 제공되었으며, 이 예들은 결코 청구범위에서 정의된 본 발명의 범위를 제한하고자 하는 것은 아니다. 요약하면, 본 발명은 결코 여기에서 제공되고 설명된 예들에 제한되지 않는다. 그러므로, 본 발명은 임의의 한 실시예에 제한되는 것이 아니라, 첨부된 청구범위에 따른 범위 내에서 해석되어야 한다.
본 발명에 따르면, 그래픽 응용 프로그램 블렌드 모드가 중앙 처리 유닛에서보다 그래픽 처리 유닛상에서 계산될 수 있게 한다. 본 발명은 현재의 그래픽 하드웨어의 파이프라인 병렬성을 이용하고, 중앙 처리 유닛이 자유롭게 다른 기능을 수행하게 하며, 서버에서 클라이언트로의 합성 프리미티브의 픽셀의 전송을 줄일 수 있다.

Claims (20)

  1. 제1 처리 유닛상에서 실행하는 애플리케이션 프로그램을 대신해서 블렌드 모드(blend mode) 동작을 수행하는 방법으로서,
    제1 픽셀의 컬러를 나타내는 제1 정보를 수신하는 단계,
    제2 픽셀의 컬러를 나타내는 제2 정보를 수신하는 단계,
    상기 제1 픽셀의 컬러를 상기 제2 픽셀의 컬러와 블렌딩하기 위한 공식(formula)을 나타내는 정보를 수신하는 단계, 및
    상기 제1 정보 및 제2 정보에 상기 공식을 적용하여 제3 픽셀의 컬러를 나타내는 제3 정보를 생성하는 단계를 포함하고,
    상기 공식을 적용하는 단계는 제2 처리 유닛이 수행하는 방법.
  2. 제1항에 있어서,
    상기 공식을 나타내는 정보를 수신하는 단계는 상기 제1 처리 유닛으로부터 상기 공식을 나타내는 정보를 수신하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 공식을 나타내는 정보를 수신하는 단계는, 제2 처리 유닛상에서 실행되는 경우, 상기 제2 처리 유닛이 상기 제1 픽셀의 컬러를 상기 제2 픽셀의 컬러와 블렌딩하기 위한 공식을 적용하게 하는 프로그램 코드를 수신하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 프로그램 코드는 픽셀 셰이더(shader)의 적어도 일부분을 포함하는 방법.
  5. 제3항에 있어서,
    상기 제1 픽셀은 소스 프리미티브의 일부분이고, 상기 제2 픽셀은 데스티네이션 프리미티브의 일부분이며,
    상기 방법은,
    상기 제2 처리 유닛에서 상기 데스티네이션 프리미티브를 수신하는 단계,
    상기 제2 처리 유닛에서 상기 소스 프리미티브를 수신하는 단계,
    상기 프로그램 코드를 설정하여 상기 소스 및 데스티네이션 프리미티브를 이용하는 단계,
    상기 프로그램 코드를 실행하는 단계, 및
    상기 제3 픽셀을 데스티네이션 렌더 타깃 내로 드로잉하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 제2 처리 유닛은,
    상기 데스티네이션 렌더 타깃으로부터 데스티네이션 프리미티브를 복사하여, 상기 데스티네이션 프리미티브의 복사본을 생성하고,
    상기 데스티네이션 프리미티브의 복사본을 데스티네이션 텍스처 맵 내에 배치하는 방법.
  7. 제1항에 있어서,
    상기 제1 처리 유닛은 컴퓨터상에 위치하고, 상기 제2 처리 유닛은 상기 컴퓨터상에 위치하는 방법.
  8. 제1항에 있어서,
    상기 제1 처리 유닛은 제1 컴퓨터상에 위치하고, 상기 제2 처리 유닛은 제2 컴퓨터상에 위치하는 방법.
  9. 제8항에 있어서,
    상기 제1 컴퓨터는 서버 컴퓨터이고, 상기 제2 컴퓨터는 상기 서버 컴퓨터의 클라이언트인 방법.
  10. 제1항에 있어서,
    상기 제1 정보는 값 R, G, B 및 A의 세트를 포함하는 방법.
  11. 제1항에 있어서,
    상기 공식은 블렌드 모드인 방법.
  12. 제1 처리 유닛상에서 실행하는 애플리케이션 프로그램을 대신해서 블렌드 모드(blend mode) 동작을 수행하는 방법으로서,
    제1 픽셀의 컬러를 제2 픽셀의 컬러와 블렌딩하여 제3 픽셀의 컬러를 생성하기 위한 공식(formula)을 나타내는 정보를 제2 처리 유닛에 송신하는 단계, 및
    상기 제2 처리 유닛에게 상기 제1 픽셀의 컬러를 나타내는 제1 정보 및 상기 제2 픽셀의 컬러를 나타내는 제2 정보에 상기 공식을 적용하도록 명령하여 상기 제3 픽셀의 컬러를 나타내는 제3 정보를 생성하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 공식을 나타내는 정보를 제2 처리 유닛에 송신하는 단계는, 상기 제2 처리 유닛상에서 실행되는 경우, 상기 제2 처리 유닛이 상기 제1 픽셀의 컬러를 상기 제2 픽셀의 컬러와 블렌딩하기 위한 공식을 적용하게 하는 프로그램 코드를 송신하는 단계를 포함하는 방법.
  14. 제13항에 있어서,
    상기 프로그램 코드는 픽셀 셰이더(shader)의 적어도 일부분을 포함하는 방 법.
  15. 제12항에 있어서,
    상기 공식을 나타내는 정보를 제2 처리 유닛에 송신하는 단계는 상기 제1 처리 유닛으로부터 상기 공식을 나타내는 정보를 송신하는 단계를 포함하는 방법.
  16. 제12항에 있어서,
    상기 공식을 나타내는 정보를 제2 처리 유닛에 송신하는 단계는 상기 제2 처리 유닛과 관련된 드라이버(driver)로부터 상기 공식을 나타내는 정보를 송신하는 단계를 포함하는 방법.
  17. 제12항에 있어서,
    상기 제1 처리 유닛은 제1 컴퓨터상에 위치하고, 상기 제2 처리 유닛는 제2 컴퓨터상에 위치하는 방법.
  18. 단계들을 수행하기 위한 컴퓨터 실행가능 명령을 포함하는 컴퓨터 판독가능 매체로서,
    제1 픽셀의 컬러를 나타내는 제1 정보를 수신하는 단계,
    제2 픽셀의 컬러를 나타내는 제2 정보를 수신하는 단계,
    상기 제1 픽셀의 컬러를 상기 제2 픽셀의 컬러와 블렌딩하기 위한 공식 (formular)을 나타내는 정보를 수신하는 단계, 및
    상기 제1 정보 및 제2 정보에 상기 공식을 적용하여 제3 픽셀의 컬러를 나타내는 제3 정보를 생성하는 단계를 포함하고,
    상기 공식을 적용하는 단계는 제1 처리 유닛상에서 실행하는 애플리케이션 프로그램을 대신하여 제2 처리 유닛이 수행하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 제2 처리 유닛에서 데스티네이션 프리미티브를 수신하는 단계,
    상기 제2 처리 유닛에서 소스 프리미티브를 수신하는 단계,
    상기 제1 정보 및 제2 정보에 상기 공식을 적용하기 위한 프로그램 코드를 설정하여 상기 소스 및 데스티네이션 프리미티브들을 이용하는 단계,
    상기 프로그램 코드를 실행하는 단계, 및
    상기 제3 픽셀을 데스티네이션 렌더 타깃 내로 드로잉하는 단계
    를 수행하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 매체.
  20. 제19항에 있어서,
    상기 데스티네이션 렌더 타깃으로부터 데스티네이션 프리미티브를 복사하여, 상기 데스티네이션 프리미티브의 복사본을 생성하는 단계, 및
    상기 데스티네이션 프리미티브의 복사본을 데스티네이션 텍스처 맵 내에 배 치하는 단계
    를 수행하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 매체.
KR1020060001658A 2005-02-25 2006-01-06 하드웨어 가속 블렌드 모드 KR101213872B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/065,854 US7312801B2 (en) 2005-02-25 2005-02-25 Hardware accelerated blend modes
US11/065,854 2005-02-25

Publications (2)

Publication Number Publication Date
KR20060094850A true KR20060094850A (ko) 2006-08-30
KR101213872B1 KR101213872B1 (ko) 2012-12-18

Family

ID=36201439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060001658A KR101213872B1 (ko) 2005-02-25 2006-01-06 하드웨어 가속 블렌드 모드

Country Status (5)

Country Link
US (1) US7312801B2 (ko)
EP (1) EP1696387A3 (ko)
JP (2) JP2006238429A (ko)
KR (1) KR101213872B1 (ko)
CN (1) CN1825353B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013345B1 (ko) * 2006-10-19 2011-02-10 퀄컴 인코포레이티드 그래픽 처리 장치에 있어서 프로그램 가능 블렌딩
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7876328B2 (en) * 2007-02-08 2011-01-25 Via Technologies, Inc. Managing multiple contexts in a decentralized graphics processing unit
US8638341B2 (en) * 2007-10-23 2014-01-28 Qualcomm Incorporated Antialiasing of two-dimensional vector images
WO2010010601A1 (en) * 2008-07-24 2010-01-28 Thomson Licensing Image processing device, method, and system
EP2306403A1 (en) * 2009-09-02 2011-04-06 Alcatel Lucent Method for drawing a composite image at a set top box STB of a telecommunication system
US20130063433A1 (en) * 2010-05-27 2013-03-14 Landmark Graphics Corporation Method and system of rendering well log values
CN102446364B (zh) 2011-09-05 2017-04-12 中兴通讯股份有限公司 一种基于透明度的图像处理方法、装置及终端
US9342322B2 (en) 2011-09-12 2016-05-17 Microsoft Technology Licensing, Llc System and method for layering using tile-based renderers
US9202308B2 (en) 2011-12-28 2015-12-01 Think Silicon Sa Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device
US9058680B2 (en) 2011-12-28 2015-06-16 Think Silicon Ltd Multi-threaded multi-format blending device for computer graphics operations
CN104952030B (zh) * 2015-06-08 2019-04-19 广东小天才科技有限公司 图像处理方法和装置
US11328457B2 (en) 2019-09-11 2022-05-10 Microsoft Technology Licensing, Llc System and method for tinting of computer-generated object(s)
US12020349B2 (en) * 2020-05-01 2024-06-25 Samsung Electronics Co., Ltd. Methods and apparatus for efficient blending in a graphics pipeline
CN111882635A (zh) * 2020-07-24 2020-11-03 上海米哈游天命科技有限公司 一种画面渲染方法、装置、设备和介质
US20240054695A1 (en) * 2022-08-15 2024-02-15 Adobe Inc. Generating Blend Objects from Objects with Pattern Fills
CN117710502A (zh) * 2023-12-12 2024-03-15 摩尔线程智能科技(北京)有限责任公司 渲染方法、装置及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5704025A (en) * 1995-06-08 1997-12-30 Hewlett-Packard Company Computer graphics system having per pixel depth cueing
FR2735253B1 (fr) * 1995-06-08 1999-10-22 Hewlett Packard Co Synchronisation de donnees entre plusieurs dispositifs de restitution asynchrones de donnees
JPH09270024A (ja) * 1996-02-02 1997-10-14 Toshiba Corp 情報処理装置
US6437781B1 (en) * 1997-05-30 2002-08-20 Hewlett-Packard Company Computer graphics system having per pixel fog blending
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
GB0109720D0 (en) * 2001-04-20 2001-06-13 Koninkl Philips Electronics Nv Display apparatus and image encoded for display by such an apparatus
US20030158886A1 (en) * 2001-10-09 2003-08-21 Walls Jeffrey J. System and method for configuring a plurality of computers that collectively render a display
US7065651B2 (en) * 2002-01-16 2006-06-20 Microsoft Corporation Secure video card methods and systems
AU2003208477A1 (en) * 2002-03-01 2003-09-16 T5 Labs Ltd Centralised interactive graphical application server
US7081892B2 (en) * 2002-04-09 2006-07-25 Sony Computer Entertainment America Inc. Image with depth of field using z-buffer image data and alpha blending
GB2392072B (en) * 2002-08-14 2005-10-19 Autodesk Canada Inc Generating Image Data
GB0220138D0 (en) * 2002-08-30 2002-10-09 Kaydara Inc Matte extraction using fragment processors
US6933947B2 (en) * 2002-12-03 2005-08-23 Microsoft Corporation Alpha correction to compensate for lack of gamma correction
US8274517B2 (en) * 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013345B1 (ko) * 2006-10-19 2011-02-10 퀄컴 인코포레이티드 그래픽 처리 장치에 있어서 프로그램 가능 블렌딩
US7973797B2 (en) 2006-10-19 2011-07-05 Qualcomm Incorporated Programmable blending in a graphics processing unit
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법

Also Published As

Publication number Publication date
US20060192788A1 (en) 2006-08-31
EP1696387A3 (en) 2011-09-07
JP2006238429A (ja) 2006-09-07
US7312801B2 (en) 2007-12-25
EP1696387A2 (en) 2006-08-30
CN1825353B (zh) 2012-07-11
JP2012198943A (ja) 2012-10-18
JP5575846B2 (ja) 2014-08-20
CN1825353A (zh) 2006-08-30
KR101213872B1 (ko) 2012-12-18

Similar Documents

Publication Publication Date Title
KR101213872B1 (ko) 하드웨어 가속 블렌드 모드
US9836810B2 (en) Optimized multi-pass rendering on tiled base architectures
CN107209923B (zh) 图形处理中的混合渲染
US7532222B2 (en) Anti-aliasing content using opacity blending
US10235799B2 (en) Variable rate deferred passes in graphics rendering
JP6884766B2 (ja) 帯域幅圧縮グラフィックスデータの記憶
US9280956B2 (en) Graphics memory load mask for graphics processing
US10504281B2 (en) Tracking pixel lineage in variable rate shading
JP2015506018A (ja) グラフィックス処理における直接レンダリングとビニングとの間の切り換え
KR20160120343A (ko) 크로스 플랫폼 렌더링 엔진
KR20080023724A (ko) 컴퓨터를 위한 확대 엔진 및 인터페이스
US8952981B2 (en) Subpixel compositing on transparent backgrounds
JP2018512644A (ja) 低品質タイルを使用してメモリ帯域幅を減らすためのシステムおよび方法
US9852539B2 (en) Single pass surface splatting
KR20180060198A (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
JP2010224535A (ja) コンピューター読み取り可能な記憶媒体、画像処理装置および画像処理方法
KR20080089560A (ko) 알파 채널 인식 환경에서 비알파 채널 영상 데이터를 이용하는 시스템 및 방법
CN105550973B (zh) 图形处理单元、图形处理系统及抗锯齿处理方法
US20130249927A1 (en) Methods and Systems for Enhanced Quality Anti-Aliasing
KR20170058113A (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
Moser et al. Interactive volume rendering on mobile devices
US20240087206A1 (en) Systems and methods of rendering effects during gameplay
US20070229520A1 (en) Buffered Paint Systems
KR20090087503A (ko) 포스트-렌더링 그래픽스 투명도
US7535480B2 (en) Compositing rendering layers

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 7