説明

ハードウエア・アクセラレーティド・ブレンド・モード

【課題】画像処理装置によってソースおよび出力先プリミティブの色を混合すること。
【解決手段】画像処理装置によってソースおよび出力先プリミティブの色を混合することが開示される。画像処理装置は、前記プリミティブを混合するブレンディング・プログラムを実行する。画像処理装置は、中央処理装置または画像アプリケーション・プログラムからブレンディング・プログラムを受ける。例えば、画像処理装置は、ソース・テキスチャ・マップ内にソース・プリミティブを出力先テキスチャマップ内に出力先プリミティブを描く。ブレンディング・プログラム(例えば、画素シェイダ)がプリミティブに適用されるために設定され、画像処理装置は、プリミティブの各画素にブレンド・モードを適用して出力先レンダー対象内に複合プリミティブを形成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ画像の分野に関し、特に画像情報を処理するコンピュータハードウエアに関する。
【背景技術】
【0002】
ソース・プリミティブの色と出力先(destination)プリミティブの色を組み合わせてレンダード(rendered)・プリミティブに新しい色を形成するために使用されるのがブレンド・モードである。プリミティブは、典型的な画像処理(graphicprocessing)装置が描く最も単純なオブジェクトである。さらに、確固たる画像、形状、背景等を形成するため、プリミティブを組み合わすことができる。ソース・プリミティブは、既存のプリミティブの上にレンダリングされるプリミティブである。出力先プリミティブは、既存のプリミティブである。ソース・プリミティブを出力先プリミティブにするために特定のブレンド・モードを使用するとき、ブレンド・モードは、ソースおよび出力先プリミティブの各画素に適用される。この方法において、ブレンド・モードは、ソースの各画素および出力先プリミティブに適用されて、レンダリングされるプリミティブの各画素のための新しい色を計算する。
【0003】
画素の色は、4つの成分の組み合わせによって説明される。3つの成分は、色における赤R、緑Gおよび青Bの量を表す。これらの成分は、R,G,Bと称され、これらの各々は、0から1の範囲での浮動小数である。4番目の成分は、アルファA値であり、画素の不透明性を表す。0のアルファA値は、透明な画素を表し、1のアルファA値は、不透明な画素を表し、分数のアルファAは、画素の半透明の度合いを表す。R、G、BおよびAの4つの値は、画素の色および透明度を表す。
【0004】
ブレンド・モードの公式は、様々な方法において記述される。画像処理装置は、ソースの色Sおよび出力先の色Dの成分から新しい色Nの成分を計算する公式のためのビルトイン・サポートを提供する。公式は、パラメータPおよびQを含み、これらは、ブレンド・モードがどのように行動するかを決定する。「ソースブレンド・ファクター」と称されるパラメータPは、{0,1,DA,1−DA,DC,1−DC}の組から選択される。同様に、「出力先ブレンド・ファクター」と称されるパラメータQは、{0,1、SA、1−SA、SC、1−SC}の組から選択される。各画素についての新しい色または透明度Nを形成する画像処理装置内に形成されるブレンド・モードは、
=P・S+Q・D
=P・S+Q・D
=P・S+Q・D
=P・S+Q・D
を含む。
【0005】
ブレンド・モードは、以下の表にあげられるようなPおよびQのパラメータを使用して達成される。
【0006】
【表1】

【0007】
PおよびQに加えて、パラメータを、ブレンド・モードの追加の変形例を提供するためにブレンド・モードに加えてもよい。例えば、パラメータX、Y、Zが使用され、0または1の値を有する定数である。透明なソース・プリミティブと透明な出力先プリミティブとを構成するとき、Xは、ソースと出力先プリミティブの交点が複合プリミティブ内に現れるか否かを決定し、Yは、出力先プリミティブの外側のソース・プリミティブの一部が現れるか否かを決定し、Zは、ソース・プリミティブの外側の出力先プリミティブの一部が現れるか否かを決定する。機能fは、ソースと出力先からの関数である。次の等式は、ブレンド・モードのさらに一般的な公式を提供し、各画素毎に所定のソース色Sおよび出力先色Dから新しい色または透明度Nを計算する。
【0008】
= f(S,S,D,D)+Y・S・(1−D)+Z・D・(1−S
= f(S,S,D,D)+Y・S・(1−D)+Z・D・(1−S
= f(S,S,D,D)+Y・S・(1−D)+Z・D・(1−S
= X・S・D+Y・S・(1−D)+Z・D・(1−S
いくつかのブレンド・モードは、例えば、画像処理装置用のドライバに含まれ、他のブレンド・モードは、画像アプリケーション・プログラムによって供給される。このようなブレンド・モードについての例示のパラメータ値を次の表に示す。
【0009】
【表2】

【0010】
典型的には、画像処理装置が、少数のブレンド・モードを適用する。さらに複雑なまたは変化したブレンド・モードの場合、画像適用プログラムは、中央処理装置におけるソフトウエアを通してそれらのレンダリング計算の一部または全てを実行してもよい。すなわち、中央処理装置は、2つのプリミティブのブレンディングを実行し、レンダリングのためにビットマップを画像処理装置に送る。したがって、画像アプリケーション・プログラムの実行速度は、中央処理装置が複合プリミティブの画素を処理するレンダリング速度によって制限される。中央処理装置のレンダリング速度は、画像処理装置のレンダリング速度よりおそい。
【0011】
例えば、画像アプリケーション・プログラムは、他のプリミティブ上に描かれるとき、特定のプリミティブが他のプリミティブの色を暗くしなければならないことを指定する。現在のプリミティブに適用されるダークニングの量は、ブレンド・モードによって新しく描かれるプリミティブの輝度によって制御される。典型的には、ブレンド・モードは、複合レンダリング内の新しいプリミティブの及ぶ範囲における各画素に、中央処理装置によって適用される。
【0012】
中央処理装置を使用して、画素によってブレンド・モード画素を適用することによって、レンダリング処理が完了したときにアプリケーションの実行が遅くなる場合がある。さらに、中央処理装置は、他の作業を中断してブレンド・モードの適用を行うので、タスクのパフォーマンスを悪化させる場合がある。クライアントサーバシナリオにおいて、サーバ中央処理装置は、ブレンド・モードを適用し、次に、サーバからクライアントに複合プリミティブの全ての画素を伝達し、貴重なバンド幅を消費する。
【0013】
したがって、画像処理装置の速度を有すると同時に、より効率的なレンダリングブレンド・モードの方法および装置が必要とされている。さらに、この方法および装置は、中央処理装置に必要な計算量およびレンダリング処理に必要なバンド幅を最小にする。
【0014】
本発明は、中央処理装置上よりもむしろ画像処理装置上で画像アプリケーション・プログラムブレンド・モードを計算することを可能にする。本発明は、現在のグラフィクスハードウエアの接続された並列性の利点を生かし、中央処理装置を自由にして他の機能を実行し、サーバからクライアントへ複合プリミティブの画素の伝達を低減させる。2つまたはそれ以上のプリミティブのブレンディングを呼び出す画像アプリケーション・プログラム・コードは、実行時に、ブレンディングのブレンド・モードを適用するプログラムを中央処理装置に送ることができる。中央処理装置は、実行するためにプログラムを画像処理装置に送ることができる。
【0015】
画像処理装置は、プログラムを実行し、例えば、ソース・テキスチャ・マップにソース・プリミティブを描き、出力先テキスチャマップに出力先プリミティブを描く。ブレンド・モードをプリミティブに適用するためのプログラムは、ソースおよび出力先テキスチャマップに適用されるように設定される。画像処理装置は、プリミティブの各画素にブレンド・モードを適用することができ、出力先レンダー対象内で複合プリミティブをレンダリングする。
【図面の簡単な説明】
【0016】
【図1】本発明の観点を実施するコンピュータ環境の一例を示すブロック図である。
【図2】本発明によるハードウエア・アクセレート・ブレンド・モードを提供するための例示的なシステムのブロック図である。
【図3】本発明によるハードウエア・アクセレート・ブレンド・モードを提供するための例示的な方法のフローチャートである。
【図4】本発明によるハードウエア・アクセレート・ブレンド・モードを提供するための例示的な他の方法のフローチャートである。
【発明を実施するための形態】
【0017】
図1および次の説明は、本発明の例示的な実施形態を実施するのに適当なコンピューティング環境100を概略的に説明することを意図している。この明細書で使用される用語「計算システム」「コンピュータシステム」は、プログラム・コードおよび/またはデータを実行するか、または処理することができるプロセッサを含む機械、システムまたは装置を言う。計算システムの例は、限定するものではないが、パーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、シンクライアント、ネットワークPC、サーバ、ワークステーション、ラップトップコンピュータ、携帯用コンピュータ、プログラム可能な・コンシューマ電子機器、マルチメディアコンソール、ゲームコンソール、衛星用受信機、セットトップボックス、自動テラーマシン、アーケードゲーム、携帯電話、パーソナルデジタルアシスタンス(PDA)、および他のプロセッサベースシステムまたは機械を含む。この明細書で使用する「プログラム・コード」および「コード」は、プロセッサによって実行されるか、または処理される命令の集合を言う。汎用コンピュータを説明するが、これは一例である。また、本発明は、ネットワークサーバー・インターオペラビリティおよびインターアクションを有するシンクライアント上で動作可能である。したがって、本発明の一例としての実施形態は、非常に小さいまたは最小限のクライアントが関係しているネットワークホストサービス環境、例えば、クライアント装置がワールド・ワイド・ウエブへのブラウザまたはインタフェイスとして単に作用するネットワーク環境において実施される。
【0018】
必ずしも必要とはされないが、本発明は、アプリケーション・プログラミング・インターフェイス(API)を介して実施されることができ、デベロッパまたはテスタによって使用される場合、1つまたは複数のコンピュータ(例えば、クライアントワークステーション、サーバ、または他の装置)によって実行されるプログラムモジュールのような、コンピュータ実行可能命令の一般的な文脈において説明されるネットワークブラウジングソフトウエアに含まれる。一般に、プログラムモジュールは、特定の課題を実行するか、または特定の抽象データ型を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造を含む。典型的には、プログラムモジュールの機能性は、種々の実施形態内で望まれるように組み合わせられるか、分散される。また本発明の1つの実施形態は、課題が、通信ネットワークまたは他のデータ伝送媒体を通して連結されたリモート処理装置によって実行される分散コンピューティング環境で実行されることができる。分散コンピューティング環境においては、プログラムモジュールを、メモリ機構装置を含むローカルおよびリモート・コンピュータ記憶媒体の双方に配置することができる。
【0019】
図1は、本発明を実行するのに適したコンピュータシステム環境100の一例を示し、上述したように、コンピュータシステム環境100は、適当なコンピュータ環境の一例に過ぎず、本発明の使用または機能の範囲に関する制限を示唆することは意図していない。コンピュータ環境100は、一例としての作動環境100内に示された1つのコンポーネントまたは組み合わせに関する依存性または要求を有すると解釈される。
【0020】
図1を参照すると、本発明を実施するための一例としてのシステムは、コンピュータ110の形態をとる汎用コンピュータシステムを含む。コンピュータ110のコンポーネントは、限定ではないが、中央処理装置120、画像処理装置125、システムメモリ130、およびシステムメモリを含む種々のシステムコンポーネントを処理装置120に接続するシステムバス121を含む。システムバス121は、メモリバス、メモリコントローラ、周辺バス、および種々のバスアーキテクチャを使用するローカルバスを含むいくつかの種類のバス構造である。一例として限定ではないが、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA (Micro Channel Architecture) バス, EISA (Enhanced ISA)バス、VESA (Video Electronics Standards Association) ローカルバス およびメザニンバスとして知られているPCI(周辺コンポーネントインターコネクト)バスを含む。コンピュータ110は、さらに、アクセラレーティド画像バスを含み、これを通して画像処理装置125およびビデオインタフェイス190がモニタ191と通信する。
【0021】
画像処理装置125は、例えば、プリミティブから個別のバッファに画像点を変換し、各画素での照明を計算し、表面においてテキスチャを計算し、プリミティブをレンダリングすることによってモニタ191上でプリミティブ(例えば、画像、形状、背景、画像等)の組み合わせをレンダリングする。
【0022】
コンピュータ110は、典型的には、種々のコンピュータ読み取り可能な媒体を含む。コンピュータ読み取り可能な媒体は、コンピュータ110によってアクセスすることができる利用可能な媒体であり、この媒体は、揮発性および非揮発性、取り外し可能および固定の媒体を含む。例えば、限定ではないが、コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュールまたは他のデータのような情報の記憶用の方法または技術内で実行される揮発性および非揮発性、取り外し可能および固定の媒体の双方を含む。コンピュータ記憶媒体は、限定ではないが、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)電子的に消去可能なプログラム可能なリードオンリメモリ(EEPROM)、フラッシュメモリまたは他のメモリ技術、コンパクトディスクリードオンリメモリ(CDROM)、デジタル多目的ディスク(DVD)または他の光ディスク記憶装置、または所望の情報を記憶することができ、コンピュータ110によってアクセス可能な他の媒体を含む。通信媒体は、典型的には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュールまたは搬送波または他の搬送機構のような変調データ信号内の他のデータを含み、情報配信媒体を含む。この明細書で使用される「変調データ信号」は、1つまたは複数の特性集合を有し、信号内の情報をエンコードするような態様で変化された信号を意味する。一例として、限定ではないが、通信媒体は、有線ネットワーックまたは直接有線接続のような有線媒体、および音響、無線周波数(RF)、赤外線および他の無線媒体のような無線媒体を含む。また、上述したものの組み合わせは、コンピュータ読み取り可能な媒体の範囲内に含まれる。
【0023】
システムメモリ130は、ROM131およびRAM132のような揮発性および/または非揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時のようなコンピュータ110内の要素間の情報を伝達する助けとなる基本的なルーチンを含む基本的な入力/出力システム133(BIOS)は、典型的には、ROM131内に記憶される。RAM132は、典型的には、処理装置120によって現在作動されているか、すぐにアクセス可能なデータおよびまたはプログラムモジュールを含む。一例として、限定ではないが、図1は、オペレーティングシステム134、アプリケーション・プログラム135、他のプログラムモジュール136およびプログラムデータ137を示す。RAM132は、他のデータおよび/またはプログラムモジュールを含む。
【0024】
また、コンピュータ110は、他の取り外し可能/固定の、揮発性/非揮発性コンピュータ記憶媒体を含む。図1は、一例として、固定の非揮発性磁気媒体から読み取り、書き込むハードディスクドライブと、取り外し可能な非揮発性磁気ディスク152から読み取り、書き込む磁気ディスクドライブ151、およびCDROMまたは他の光媒体のような取り外し可能な非揮発性光ディスクから読み取り、または書き込む光ディスクドライブ155を示す。限定ではないが、例示としての動作環境において使用することができる他の取り外し可能/固定の、揮発性/非揮発性コンピュータ記憶媒体は、磁気テープカセット、フラシュメモリカード、デジタル揮発性ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM等を含む。ハードディスクドライブ141は、インタフェイス141のような固定のメモリインタフェイスを通してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、典型的には、インタフェイス150のような取り外し可能なメモリインタフェイスによってシステムバス121に接続される。
【0025】
図1に示し、上述したドライブおよびそれらの関連したコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュールおよびコンピュータ110の他のデータの記憶装置を提供する。図1において、例えば、ハードディスクドライブ141は、記憶オペレーティングシステム144、アプリケーション・プログラム145、他のプログラムモジュール146、および他のプログラムデータ147として示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーション・プログラム135、他のプログラムモジュール136およびプログラムデータ137と同じかまたは異なっていてもよい。オペレーティングシステム144、アプリケーション・プログラム145、他のプログラムモジュール146およびプログラムデータ147は、最低限、それらが異なるコピーであることを示すために異なる符号が付与されている。ユーザは、通常、マウス、トラックボールまたはタッチパッドと称されるキーボード162およびポインティングデバイス161のような入力装置を介してコンピュータ110に命令および情報を入力する。他の入力装置(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星用アンテナ、スキャナ等を含んでいる。これらおよび他の入力装置(図示せず)は、ユーザ入力インタフェイス160を介して処理装置に接続され、入力インタフェイス160は、システムバス121に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(UBS)のような他のインタフェイスおよびバス構造によって接続することもできる。
また、モニタ191または他の種類のディスプレイは、ビデオインタフェイス190のようなインタフェイスを介してシステムバス121に接続されている。モニタ191に加えて、コンピュータは、スピーカ197およびプリンタ196のような他の周辺出力装置を含み、これらは、出力周辺インタフェイス195を通して接続されることができる。
【0026】
コンピュータ110は、リモート・コンピュータ180のような1つまたは複数のコンピュータへの論理接続を使用するネットワーク環境で動作する。リモート・コンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置または他の共通のネットワークノードであり、典型的には、コンピュータ110に関して上述した多数または全部の要素を含むが、メモリ記憶装置181は、図1に示されている。図1に示されている論理接続は、ローカルエリア・ネットワーク(LAN)171およびワイドエリア・ネットワーク(WAN)173を含むが、他のネットワークを含んでいてもよい。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて共通である。
【0027】
LANネットワーキング環境において使用されるとき、コンピュータ110は、ネットワーク・インタフェイスまたはアダプタ170を介してLANに接続されている。コンピュータ110は、WANネットワーク環境で使用されるとき、インターネットのようなWAN173上で通信を確立するためのモデム172または他の手段を含む。内蔵または外付けのモデム172は、ユーザ入力インタフェイス160または他の適当な機構を介してシステムバス121に接続されてもよい。ネットワーク環境において、コンピュータ110に関して示されたプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶されている。一例として、限定ではないが、図1は、メモリ装置181にあるようなリモート・アプリケーション・プログラム185を示している。図示したネットワーク接続は例示であり、コンピュータ間の通信を確立するための他の手段も使用することができることは理解できよう。
【0028】
コンピュータ110または他のクライアント装置は、コンピュータネットワークの一部として用いられることができる。この観点において、本発明は、どのような数を有するメモリまたは記憶装置を有するコンピュータシステム、およびどのような数のアプリケーションおよび記憶装置の数または容量にわたって生じるプロセスに関する。本発明の実施形態は、リモートまたはローカル記憶装置を有するネットワーク環境で使用されるサーバ・コンピュータおよびクライアントコンピュータを有する環境に適用される。また本発明は、プログラミング言語機能、インタプリテーションおよび実行性能を有するスタンドアロンコンピュータ装置に適用される。
【0029】
(例示的な実施形態)
図2は、本発明によるハードウエア・アクセレートブレンド・モードを提供するための例示的なシステム200のブロック図である。システム200は、サーバ・コンピュータ250と通信するクライアントコンピュータ210を含む。本発明の実施形態は、クライアントコンピュータ210またはサーバ・コンピュータ250単独で実行されることができる。システム200は、本発明の多数の例示的な実施形態の内の一例を示す。
【0030】
クライアントコンピュータ210およびサーバ・コンピュータ250の各々は、図1において示すコンピュータ110である。クライアントコンピュータ210は、中央処理装置220、画像アプリケーション・プログラム235、およびプログム可能な処理装置225を含み、ディスプレイとしてモニタ291が接続されている。サーバ・コンピュータ250は、中央処理装置260および画像アプリケーション・プログラム265を含む。もちろん、クライアントコンピュータ210およびサーバ・コンピュータ250は、他のコンポーネントを含み、図1に関して説明したような他の装置と通信することができる。
【0031】
プログラム可能な画像処理装置225は、モニタ291においてプリミティブおよびプリミティブの組み合わせ(画像、形状、背景、画像等)をレンダリングするハードウエア装置である。プログラム可能な画像処理装置225は、例えば、プリミティブから各バッファに画像点を変換し、各画素で照明を計算し、表面等の上でテキスチャを計算し、モニタ291においてプリミティブをレンダリングすることによってプリミティブをレンダリングすることができる。プログラム可能な画像処理装置225は、クライアントコンピュータ210の中央処理装置220と通信している。代替案として、または、さらに、プログラム可能な画像処理装置225は、クライアントコンピュータ210を通してサーバ・コンピュータ250の中央処理装置260と通信する。
【0032】
画像アプリケーション・プログラム235、265の各々は、プリミティブのような画像情報をレンダリングするアプリケケーションである。このようなプリミティブは、バッファまたはモニタ上のディスプレイで処理される。プリミティブは、組み合わせられ、例えば、写真、ビデオ、イメージ、テキスト、図形または形状として処理される。画像アプリケーション・プログラム235,265は、画像処理装置を通して、出力先プリミティブとソース・プリミティブをブレンドするためにブレンド・モードを実施することができる。ブレンド・モードは、通常、画素シェイダと称される分離機能、プログラム、モジュール等の実行を介してプリミティブに実行され、または適用される。この明細書で使用される用語の画像シェイダは、ブレンド・モードに適用されるプログラム・コードである。画像アプリケーション・プログラム235,265は、画素シェイダのブレンド・モードのアプリケーションを提供する。各画素シェイダは、ブレンド・モードを実行するための機能またはプログラムである。
【0033】
画像アプリケーション・プログラム235,265は、各中央処理装置220、260と通信するか、それらによって実行される。画像アプリケーション・プログラム235の実行中、ソース・プリミティブは、呼出されてブレンド・モードによって出力先プリミティブとブレンドされる。画像アプリケーション・プログラム235は、中央処理装置220に画素シェイダを送ることができる。本発明によって、画像アプリケーション・プログラム235は、中央処理装置上で画素シェイダを実行する代わりに、中央処理装置220に画素シェイダをプログラム可能な画像処理装置225に送らせるようにする。中央処理装置220は、プログラム可能な画像処理装置225に画素シェイダを実行するよう指示することができる。画素シェイダは、ソースおよび出力先プリミティブの各画素にブレンド・モードを適用することを容易にし、複合プリミティブをレンダリングする。すなわち、プログラム可能な画像処理装置225は、ブレンド・モードに従い、ソースおよび出力先プリミティブをブレンドするように指示することができる。プログラム可能な画像処理装置225は、画素シェイダを実行して、ブレンド・モードをソースおよび出力先プリミティブの各画素に適用するようにし、例えば、モニタ291上に複合プリミティブをレンダリングする。代替案として、画像アプリケーション・プログラム235は、画像アプリケーション・プログラム235と画像処理装置225との間を媒介するものとして作用するアプリケーションと通信する。このような媒介アプリケーションは、画像処理装置ドライバまたは画素シェイダを含む画像ライブラリである。画像アプリケーション・プログラム235は、媒介アプリケーションにブレンド操作のためにプログラム可能な画像処理装置225に適当な画素シェイダを提供するように指示することができる。媒介アプリケーションは、適当な画素シェイダを選択して適当なブレンディングを提供し、実行するために画素シェイダを画像処理装置に送ることができる。
【0034】
他の実施例において、サーバ・コンピュータ250で作動している画像アプリケーション・プログラム265は、画素シェイダを中央処理装置260に送り、中央処理装置260にプログラム可能な画像処理装置225で実行するためにそれをクライアントコンピュータ210に送るように指示することができる。中央処理装置260は、プログラム可能な画像処理装置225に画素シェイダを実行し、複合プリミティブをレンダリングするように指示することができる。
【0035】
図3は、本発明によるハードウエアアクセレーテドブレンド・モードを提供するための例示的な方法300のフローチャートである。方法は、ステップ310で開始し、画像アプリケーション・プログラム(例えば、ディスプレイ上で形成されるべきプリミティブのために呼び出されるアプリケーション)がコンピュータ上で実行される。コンピュータは、クライアントコンピュータ210または図2のサーバ・コンピュータ250である。ステップ320において、画像アプリケーション・プログラムは、バッファ(例えばディスプレイ)内でレンダリングされる出力先プリミティブとブレンドされるべきソース・プリミティブを提供する、または必要とする。画像アプリケーション・プログラムは、ステップ330で、中央処理装置にプログラム・コードを送り、このコードは、実行されるとき、ブレンド・モードを適用する。このようなプログラム・コードは、画素シェイダを含む。
【0036】
ステップ340において、中央処理装置は、実行のためにプログラム・コードをプログラム可能な画像処理装置に送ることができる。プログラム可能な画像処理装置は、ステップ350において、プログラム・コードを実行し、ブレンド・モードをソースおよび出力先プリミティブの各画素に適用することができる。複合プリミティブは、ステップ360でディスプレイバッファ上にレンダリングされる。
【0037】
図4は、本発明によってハードウエアアクセラレーティドブレンド・モードを提供するための他の例示的な方法400のフローチャートである。方法は、ステップ410で開始され、プログラム可能な画像処理装置は、例えば、供給された画素シェイダを使用してソース・プリミティブと出力先プリミティブとを混合するように指示することができる。画素シェイダは、例えば、画像アプリケーション・プログラム、ドライバ、画像ライブラリ、またはオペレーティングシステムによって供給される。ステップ420において、ソース・プリミティブは、一時的なテキスチャマップに受信され、およびレンダリングされ、一時テキスチャマップは、以降ソース・テキスチャ・マップと称される。ソース・プリミティブは、画像アプリケーション・プログラムからそれを受ける中央処理装置から受信される。
【0038】
レンダー対象から出力先プリミティブのコピーが形成され、ステップ430で一時的なテキスチャマップに配置される。この一時的なテキスチャマップは、以降、出力先テキスチャマップと称される。使用されるプログラム可能な画像処理装置が画素シェイダに提供されないで出力先レンダー対象から画素の色を読まない場合、ステップ430が実行されることは理解できよう。プログラム可能な画像処理装置のためのアーキテクチャが同じレンダー対象へ読み書きすることができる、または許される場合、ステップ430は、方法400から省略することができる。
【0039】
ステップ440において、画素シェイダは、その実行中にソースおよび出力先テキスチャマップを使用するために設定することができる。プログラム可能な画像処理装置は、ステップ450で画素シェイダを実行し、ソースおよび出力先テキスチャマップの各画素にブレンド・モードを適用し、出力先レンダー対象に塗りつぶされた矩形を描く。すなわち、プログラム可能な画像処理装置は、ソース画素色と出力先画素色とを組み合わせて、各画素のための出力先レンダー対象内に配置される最終的な色をつくる。画素シェイダは、例えば、ここで説明したようなものおよび例えば、画素シェイダアセンブリ言語または高級シェイディング言語を使用した他のもののようなブレンド・モードを処理するために開発されたことを理解すべきである。ステップ450において、さらにプリミティブがレンダリングされる場合、方法は、ステップ420から繰り返される。ステップ450において、プリミティブがそれ以上レンダリングされない場合、出力先レンダー対象が表示される。
【0040】
ここに説明した種々の技術は、ハードウエアまたはソフトウエア、場合によっては双方の組み合わせと関連して実行される。したがって、本発明の方法および装置またはそのある観点およびその要素は、フロピィディスク、CD−ROM、ハードドライブまたは他の機械で読み取り可能な記憶媒体のような具体的な媒体に記憶されたプログラム・コード(すなわち、命令)の形態をとり、この場合、プログラム・コードは、コンピュータのような機械に記憶され、実行されるとき、機械は、本発明を実行するための装置になる。プログラム可能なコンピュータで実行されるプログラム・コードの場合、コンピュータ装置は、一般にプロセッサ、揮発性および非揮発性および/または記憶装置を含むプロセッサによって読み取り可能な記憶媒体、少なくとも1つの入力装置、少なくとも1つの出力装置を含む。コンピュータシステムと通信するために1つまたは複数のプログラムが高級手順またはオブジェクト指向プログラミング言語で実行されることが好ましい。しかしながら、プログラムは、所望ならば、アセンブリまたは機械言語で実施することができる。どの場合においても、言語は、編集または解釈された言語であるか、ハードウエアの実行と組み合わせられることができる。
【0041】
本発明を種々の図面と関連した特定の例と関連して説明したが、本発明から逸脱することなく、他の実施例を使用するか、本発明と同じ機能を実行するために説明した実施例に対して変形例および追加例を実施することができる。本発明の説明において例が提供されたが、特許請求の範囲内で定義されたような本発明の態様を限定する意図はない。要するに、提供され説明された例は、本発明を限定するものではない。したがって、本発明は、単一の実施形態に限定されるべきではなく、添付した特許請求の範囲における観点によって解釈すべきである。
【0042】
添付した図面と関連して読むとき、本発明の前述した要約および次の詳細な説明をさらによく理解できる。本発明の実施例を図面に示すが、本発明は、特定の方法およびそこに示された実施例には制限されない。

【特許請求の範囲】
【請求項1】
第1の画素の色を表す第1の情報を受信するステップと、
第2の画素の色を表す第2の情報を受信するステップと、
前記第1の画素の色と前記第2の画素の色とを混合する公式を表す情報を受信ステップと、
前記公式を適用して、前記第1の情報および前記第2の情報に適用して第3の画素の色を表す第3の情報を形成するステップとを有し、前記公式を適用するステップは、第2の処理装置によって実行されることを特徴とする第1の処理装置上で実行するアプリケーション・プログラムに代わってブレンド・モードの作業を実行することを特徴とする方法。
【請求項2】
前記公式を表す情報を受信するステップは、前記第1の処理装置から前記公式を表す情報を受信するステップを含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記公式を表す情報を受信するステップは、前記第2の処理装置上で実行されるとき、前記第2の処理装置に前記第1の画素の色と前記第2の画素の色を混合するための公式を適用させるプログラム・コードを受信するステップを含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記プログラム・コードは、画素シェイダの少なくとも一部を含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記第1の画素はソース・プリミティブの一部であり、前記第2の画素は出力先プリミティブの一部であり、
前記第2の処理装置で前記出力先プリミティブを受信するステップと、
前記第2の処理装置で前記ソース・プリミティブを受信するステップと、
前記プログラム・コードを設定してソースおよび出力先プリミティブを使用するステップと、
前記プログラム・コードを実行するステップと、
前記第3の画素を出力先レンダー対象に描くステップと
をさらに有することを特徴とする請求項3に記載の方法。
【請求項6】
前記第2の処理装置は、
前記出力先レンダー対象からの出力先プリミティブをコピーして、前記出力先プリミティブを提供し、および
前記出力先プリミティブのコピーを出力先テキスチャマップ内に配置する
ことを特徴とする請求項5に記載の方法。
【請求項7】
前記第1の処理装置は、コンピュータ上に配置され、前記第2の処理装置は、前記コンピュータ上に配置されることを特徴とする請求項1に記載の方法。
【請求項8】
前記第1の処理装置は、第1のコンピュータ上に配置され、前記第2の処理装置は、第2のコンピュータ上に配置されることを特徴とする請求項1に記載の方法。
【請求項9】
前記第1のコンピュータは、サーバ・コンピュータであり、前記第2のコンピュータは、前記サーバ・コンピュータのクライアントである請求項8に記載の方法。
【請求項10】
前記第1の情報は、一組の値R,G,Bを含むことを特徴とする請求項1に記載の方法。
【請求項11】
前記公式は、ブレンド・モードであることを特徴とする請求項1に記載の方法。
【請求項12】
第1の画素の色と第2の画素の色とを混合して第3の画素の色を形成するための公式を表す第2の処理装置情報を送るステップと、
第2の処理装置に、第1の画素の色を表す第1の情報および第2の画素の色を表す第2の情報に公式を適用して第3の画素の色を表す第3の情報を形成させるステップと
を有することを特徴とする第1の処理装置上で実行するアプリケーション・プログラムに代わってブレンド・モード作業を実行する方法。
【請求項13】
前記第2の処理装置に前記公式を表す情報を送るステップは、前記第2の処理装置上で実行されるとき、前記第2の処理装置に前記第1の画素の色と前記第2の画素の色とを混合するための公式を適用させるプログラム・コードを送るステップを含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記プログラム・コードは、画素シェイダの少なくとも一部を含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記第2の処理装置に前記公式を表す情報を送るステップは、前記第1の処理装置から前記公式を表す情報を送るステップを含むことを特徴とする請求項12に記載の方法。
【請求項16】
前記第2の処理装置に前記公式を表す情報を送るステップは、前記第2の処理装置に関連するドライバから前記公式を表す情報を送るステップを含むことを特徴とする請求項12に記載の方法。
【請求項17】
前記第1の処理装置は、第1のコンピュータ上に配置され、前記第2の処理装置は、第2のコンピュータ上に配置されることを特徴とする請求項12に記載の方法。
【請求項18】
第1の画素の色を表す第1の情報を受信するステップと、
第2の画素の色を表す第2の情報を受信するステップと、
前記第1の画素の色と前記第2の画素の色とを混合する公式を表す情報を受信するステップと、
前記公式を前記第1の情報および前記第2の情報に適用して第3の画素の色を表す第3の情報を形成するステップであって、前記公式を適用するステップは、第1の処理装置上で実行されるアプリケーション・プログラムに代わって第2の処理装置によって実行される形成するステップと
を有する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な媒体。
【請求項19】
前記第2の処理装置で出力先プリミティブを受信するステップと、
前記第2の処理装置でソース・プリミティブを受信するステップと、
前記公式を適用するためのプログラム・コードを前記第1の情報および前記第2の情報に設定して、ソースおよび出力先プリミティブを使用するステップと、
前記プログラム・コードを実行するステップと、
前記第3の画素を出力先レンダー対象に描くステップと
を実行するためのコンピュータ実行可能な命令を有する請求項18に記載のコンピュータ読み取り可能な媒体。
【請求項20】
前記出力先レンダー対象から前記出力先プリミティブをコピーし、前記出力先プリミティブのコピーを形成するステップと、
前記出力先テキスチャマップ内に前記出力先プリミティブのコピーを配置するステップと
を実行するためのコンピュータ実行可能な命令を有することを特徴とする請求項19に記載のコンピュータ読み取り可能な媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−198943(P2012−198943A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2012−163459(P2012−163459)
【出願日】平成24年7月24日(2012.7.24)
【分割の表示】特願2006−16559(P2006−16559)の分割
【原出願日】平成18年1月25日(2006.1.25)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】