(57)【要約】【課題】画像処理装置によってソースおよび出力先プリミティブの色を混合すること。【解決手段】画像処理装置によってソースおよび出力先プリミティブの色を混合することが開示される。画像処理装置は、前記プリミティブを混合するブレンディング・プログラムを実行する。画像処理装置は、中央処理装置または画像アプリケーション・プログラムからブレンディング・プログラムを受ける。例えば、画像処理装置は、ソース・テキスチャ・マップ内にソース・プリミティブを出力先テキスチャマップ内に出力先プリミティブを描く。ブレンディング・プログラム（例えば、画素シェイダ）がプリミティブに適用されるために設定され、画像処理装置は、プリミティブの各画素にブレンド・モードを適用して出力先レンダー対象内に複合プリミティブを形成する。【選択図】図３
2006238429.tif 000002
【特許請求の範囲】
【請求項１】
第１の画素の色を表す第１の情報を受信するステップと、
第２の画素の色を表す第２の情報を受信するステップと、
前記第１の画素の色と前記第２の画素の色とを混合する公式を表す情報を受信ステップと、
前記公式を適用して、前記第１の情報および前記第２の情報に適用して第３の画素の色を表す第３の情報を形成するステップとを有し、前記公式を適用するステップは、第２の処理装置によって実行されることを特徴とする第１の処理装置上で実行するアプリケーション・プログラムに代わってブレンド・モードの作業を実行することを特徴とする方法。
【請求項２】
前記公式を表す情報を受信するステップは、前記第１の処理装置から前記公式を表す情報を受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記公式を表す情報を受信するステップは、前記第２の処理装置上で実行されるとき、前記第２の処理装置に前記第１の画素の色と前記第２の画素の色を混合するための公式を適用させるプログラム・コードを受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記プログラム・コードは、画素シェイダの少なくとも一部を含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記第１の画素はソース・プリミティブの一部であり、前記第２の画素は出力先プリミティブの一部であり、
前記第２の処理装置で前記出力先プリミティブを受信するステップと、
前記第２の処理装置で前記ソース・プリミティブを受信するステップと、
前記プログラム・コードを設定してソースおよび出力先プリミティブを使用するステップと、
前記プログラム・コードを実行するステップと、
前記第３の画素を出力先レンダー対象に描くステップと
をさらに有することを特徴とする請求項３に記載の方法。
【請求項６】
前記第２の処理装置は、
前記出力先レンダー対象からの出力先プリミティブをコピーして、前記出力先プリミティブを提供し、および
前記出力先プリミティブのコピーを出力先テキスチャマップ内に配置する
ことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１の処理装置は、コンピュータ上に配置され、前記第２の処理装置は、前記コンピュータ上に配置されることを特徴とする請求項１に記載の方法。
【請求項８】
前記第１の処理装置は、第１のコンピュータ上に配置され、前記第２の処理装置は、第２のコンピュータ上に配置されることを特徴とする請求項１に記載の方法。
【請求項９】
前記第１のコンピュータは、サーバ・コンピュータであり、前記第２のコンピュータは、前記サーバ・コンピュータのクライアントである請求項８に記載の方法。
【請求項１０】
前記第１の情報は、一組の値Ｒ，Ｇ，Ｂを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記公式は、ブレンド・モードであることを特徴とする請求項１に記載の方法。
【請求項１２】
第１の画素の色と第２の画素の色とを混合して第３の画素の色を形成するための公式を表す第２の処理装置情報を送るステップと、
第２の処理装置に、第１の画素の色を表す第１の情報および第２の画素の色を表す第２の情報に公式を適用して第３の画素の色を表す第３の情報を形成させるステップと
を有することを特徴とする第１の処理装置上で実行するアプリケーション・プログラムに代わってブレンド・モード作業を実行する方法。
【請求項１３】
前記第２の処理装置に前記公式を表す情報を送るステップは、前記第２の処理装置上で実行されるとき、前記第２の処理装置に前記第１の画素の色と前記第２の画素の色とを混合するための公式を適用させるプログラム・コードを送るステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記プログラム・コードは、画素シェイダの少なくとも一部を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第２の処理装置に前記公式を表す情報を送るステップは、前記第１の処理装置から前記公式を表す情報を送るステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記第２の処理装置に前記公式を表す情報を送るステップは、前記第２の処理装置に関連するドライバから前記公式を表す情報を送るステップを含むことを特徴とする請求項１２に記載の方法。
【請求項１７】
前記第１の処理装置は、第１のコンピュータ上に配置され、前記第２の処理装置は、第２のコンピュータ上に配置されることを特徴とする請求項１２に記載の方法。
【請求項１８】
第１の画素の色を表す第１の情報を受信するステップと、
第２の画素の色を表す第２の情報を受信するステップと、
前記第１の画素の色と前記第２の画素の色とを混合する公式を表す情報を受信するステップと、
前記公式を前記第１の情報および前記第２の情報に適用して第３の画素の色を表す第３の情報を形成するステップであって、前記公式を適用するステップは、第１の処理装置上で実行されるアプリケーション・プログラムに代わって第２の処理装置によって実行される形成するステップと
を有する方法を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能な媒体。
【請求項１９】
前記第２の処理装置で出力先プリミティブを受信するステップと、
前記第２の処理装置でソース・プリミティブを受信するステップと、
前記公式を適用するためのプログラム・コードを前記第１の情報および前記第２の情報に設定して、ソースおよび出力先プリミティブを使用するステップと、
前記プログラム・コードを実行するステップと、
前記第３の画素を出力先レンダー対象に描くステップと
を実行するためのコンピュータ実行可能な命令を有する請求項１８に記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記出力先レンダー対象から前記出力先プリミティブをコピーし、前記出力先プリミティブのコピーを形成するステップと、
前記出力先テキスチャマップ内に前記出力先プリミティブのコピーを配置するステップと
を実行するためのコンピュータ実行可能な命令を有することを特徴とする請求項１９に記載のコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ画像の分野に関し、特に画像情報を処理するコンピュータハードウエアに関する。
【背景技術】
【０００２】
ソース・プリミティブの色と出力先（ｄｅｓｔｉｎａｔｉｏｎ）プリミティブの色を組み合わせてレンダード（ｒｅｎｄｅｒｅｄ）・プリミティブに新しい色を形成するために使用されるのがブレンド・モードである。プリミティブは、典型的な画像処理（ｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ）装置が描く最も単純なオブジェクトである。さらに、確固たる画像、形状、背景等を形成するため、プリミティブを組み合わすことができる。ソース・プリミティブは、既存のプリミティブの上にレンダリングされるプリミティブである。出力先プリミティブは、既存のプリミティブである。ソース・プリミティブを出力先プリミティブにするために特定のブレンド・モードを使用するとき、ブレンド・モードは、ソースおよび出力先プリミティブの各画素に適用される。この方法において、ブレンド・モードは、ソースの各画素および出力先プリミティブに適用されて、レンダリングされるプリミティブの各画素のための新しい色を計算する。
【０００３】
画素の色は、４つの成分の組み合わせによって説明される。３つの成分は、色における赤Ｒ、緑Ｇおよび青Ｂの量を表す。これらの成分は、Ｒ，Ｇ，Ｂと称され、これらの各々は、０から１の範囲での浮動小数である。４番目の成分は、アルファＡ値であり、画素の不透明性を表す。０のアルファＡ値は、透明な画素を表し、１のアルファＡ値は、不透明な画素を表し、分数のアルファＡは、画素の半透明の度合いを表す。Ｒ、Ｇ、ＢおよびＡの４つの値は、画素の色および透明度を表す。
【０００４】
ブレンド・モードの公式は、様々な方法において記述される。画像処理装置は、ソースの色Ｓおよび出力先の色Ｄの成分から新しい色Ｎの成分を計算する公式のためのビルトイン・サポートを提供する。公式は、パラメータＰおよびＱを含み、これらは、ブレンド・モードがどのように行動するかを決定する。「ソースブレンド・ファクター」と称されるパラメータＰは、｛０，１，ＤＡ，１−ＤＡ，ＤＣ，１−ＤＣ｝の組から選択される。同様に、「出力先ブレンド・ファクター」と称されるパラメータＱは、｛０，１、ＳＡ、１−ＳＡ、ＳＣ、１−ＳＣ｝の組から選択される。各画素についての新しい色または透明度Ｎを形成する画像処理装置内に形成されるブレンド・モードは、
ＮＲ＝Ｐ・ＳＲ＋Ｑ・ＤＲ
ＮＧ＝Ｐ・ＳＧ＋Ｑ・ＤＧ
ＮＢ＝Ｐ・ＳＢ＋Ｑ・ＤＢ
ＮＡ＝Ｐ・ＳＡ＋Ｑ・ＤＡ 
を含む。
【０００５】
ブレンド・モードは、以下の表にあげられるようなＰおよびＱのパラメータを使用して達成される。
【０００６】
【表１】
2006238429.tif 000003
【０００７】
ＰおよびＱに加えて、パラメータを、ブレンド・モードの追加の変形例を提供するためにブレンド・モードに加えてもよい。例えば、パラメータX、Y、Zが使用され、０または１の値を有する定数である。透明なソース・プリミティブと透明な出力先プリミティブとを構成するとき、Xは、ソースと出力先プリミティブの交点が複合プリミティブ内に現れるか否かを決定し、Yは、出力先プリミティブの外側のソース・プリミティブの一部が現れるか否かを決定し、Zは、ソース・プリミティブの外側の出力先プリミティブの一部が現れるか否かを決定する。機能ｆは、ソースと出力先からの関数である。次の等式は、ブレンド・モードのさらに一般的な公式を提供し、各画素毎に所定のソース色Sおよび出力先色Ｄから新しい色または透明度Nを計算する。
【０００８】
ＮＲ  ＝  ｆ（ＳＲ，ＳＡ，ＤＲ，ＤＡ）＋Ｙ・ＳＲ・（１−ＤＡ）＋Ｚ・ＤＲ・（１−ＳＡ）
ＮＧ  ＝  ｆ（ＳＧ，ＳＡ，ＤＧ，ＤＡ）＋Ｙ・ＳＧ・（１−ＤＡ）＋Ｚ・ＤＧ・（１−ＳＡ）
ＮＢ  ＝  ｆ（ＳＢ，ＳＡ，ＤＢ，ＤＡ）＋Ｙ・ＳＢ・（１−ＤＡ）＋Ｚ・ＤＢ・（１−ＳＡ）
ＮＡ  ＝  Ｘ・ＳＡ・ＤＡ＋Ｙ・ＳＡ・（１−ＤＡ）＋Ｚ・ＤＡ・（１−ＳＡ）
いくつかのブレンド・モードは、例えば、画像処理装置用のドライバに含まれ、他のブレンド・モードは、画像アプリケーション・プログラムによって供給される。このようなブレンド・モードについての例示のパラメータ値を次の表に示す。
【０００９】
【表２】
2006238429.tif 000004
【００１０】
典型的には、画像処理装置が、少数のブレンド・モードを適用する。さらに複雑なまたは変化したブレンド・モードの場合、画像適用プログラムは、中央処理装置におけるソフトウエアを通してそれらのレンダリング計算の一部または全てを実行してもよい。すなわち、中央処理装置は、２つのプリミティブのブレンディングを実行し、レンダリングのためにビットマップを画像処理装置に送る。したがって、画像アプリケーション・プログラムの実行速度は、中央処理装置が複合プリミティブの画素を処理するレンダリング速度によって制限される。中央処理装置のレンダリング速度は、画像処理装置のレンダリング速度よりおそい。
【００１１】
例えば、画像アプリケーション・プログラムは、他のプリミティブ上に描かれるとき、特定のプリミティブが他のプリミティブの色を暗くしなければならないことを指定する。現在のプリミティブに適用されるダークニングの量は、ブレンド・モードによって新しく描かれるプリミティブの輝度によって制御される。典型的には、ブレンド・モードは、複合レンダリング内の新しいプリミティブの及ぶ範囲における各画素に、中央処理装置によって適用される。
【００１２】
中央処理装置を使用して、画素によってブレンド・モード画素を適用することによって、レンダリング処理が完了したときにアプリケーションの実行が遅くなる場合がある。さらに、中央処理装置は、他の作業を中断してブレンド・モードの適用を行うので、タスクのパフォーマンスを悪化させる場合がある。クライアントサーバシナリオにおいて、サーバ中央処理装置は、ブレンド・モードを適用し、次に、サーバからクライアントに複合プリミティブの全ての画素を伝達し、貴重なバンド幅を消費する。
【００１３】
したがって、画像処理装置の速度を有すると同時に、より効率的なレンダリングブレンド・モードの方法および装置が必要とされている。さらに、この方法および装置は、中央処理装置に必要な計算量およびレンダリング処理に必要なバンド幅を最小にする。
【００１４】
本発明は、中央処理装置上よりもむしろ画像処理装置上で画像アプリケーション・プログラムブレンド・モードを計算することを可能にする。本発明は、現在のグラフィクスハードウエアの接続された並列性の利点を生かし、中央処理装置を自由にして他の機能を実行し、サーバからクライアントへ複合プリミティブの画素の伝達を低減させる。２つまたはそれ以上のプリミティブのブレンディングを呼び出す画像アプリケーション・プログラム・コードは、実行時に、ブレンディングのブレンド・モードを適用するプログラムを中央処理装置に送ることができる。中央処理装置は、実行するためにプログラムを画像処理装置に送ることができる。
【００１５】
画像処理装置は、プログラムを実行し、例えば、ソース・テキスチャ・マップにソース・プリミティブを描き、出力先テキスチャマップに出力先プリミティブを描く。ブレンド・モードをプリミティブに適用するためのプログラムは、ソースおよび出力先テキスチャマップに適用されるように設定される。画像処理装置は、プリミティブの各画素にブレンド・モードを適用することができ、出力先レンダー対象内で複合プリミティブをレンダリングする。
【発明を実施するための最良の形態】
【００１６】
図１および次の説明は、本発明の例示的な実施形態を実施するのに適当なコンピューティング環境１００を概略的に説明することを意図している。この明細書で使用される用語「計算システム」「コンピュータシステム」は、プログラム・コードおよび／またはデータを実行するか、または処理することができるプロセッサを含む機械、システムまたは装置を言う。計算システムの例は、限定するものではないが、パーソナルコンピュータ、ミニコンピュータ、メインフレームコンピュータ、シンクライアント、ネットワークＰＣ、サーバ、ワークステーション、ラップトップコンピュータ、携帯用コンピュータ、プログラム可能な・コンシューマ電子機器、マルチメディアコンソール、ゲームコンソール、衛星用受信機、セットトップボックス、自動テラーマシン、アーケードゲーム、携帯電話、パーソナルデジタルアシスタンス（ＰＤＡ）、および他のプロセッサベースシステムまたは機械を含む。この明細書で使用する「プログラム・コード」および「コード」は、プロセッサによって実行されるか、または処理される命令の集合を言う。汎用コンピュータを説明するが、これは一例である。また、本発明は、ネットワークサーバー・インターオペラビリティおよびインターアクションを有するシンクライアント上で動作可能である。したがって、本発明の一例としての実施形態は、非常に小さいまたは最小限のクライアントが関係しているネットワークホストサービス環境、例えば、クライアント装置がワールド・ワイド・ウエブへのブラウザまたはインタフェイスとして単に作用するネットワーク環境において実施される。
【００１７】
必ずしも必要とはされないが、本発明は、アプリケーション・プログラミング・インターフェイス（ＡＰＩ）を介して実施されることができ、デベロッパまたはテスタによって使用される場合、１つまたは複数のコンピュータ（例えば、クライアントワークステーション、サーバ、または他の装置）によって実行されるプログラムモジュールのような、コンピュータ実行可能命令の一般的な文脈において説明されるネットワークブラウジングソフトウエアに含まれる。一般に、プログラムモジュールは、特定の課題を実行するか、または特定の抽象データ型を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造を含む。典型的には、プログラムモジュールの機能性は、種々の実施形態内で望まれるように組み合わせられるか、分散される。また本発明の１つの実施形態は、課題が、通信ネットワークまたは他のデータ伝送媒体を通して連結されたリモート処理装置によって実行される分散コンピューティング環境で実行されることができる。分散コンピューティング環境においては、プログラムモジュールを、メモリ機構装置を含むローカルおよびリモート・コンピュータ記憶媒体の双方に配置することができる。
【００１８】
図１は、本発明を実行するのに適したコンピュータシステム環境１００の一例を示し、上述したように、コンピュータシステム環境１００は、適当なコンピュータ環境の一例に過ぎず、本発明の使用または機能の範囲に関する制限を示唆することは意図していない。コンピュータ環境１００は、一例としての作動環境１００内に示された１つのコンポーネントまたは組み合わせに関する依存性または要求を有すると解釈される。
【００１９】
図１を参照すると、本発明を実施するための一例としてのシステムは、コンピュータ１１０の形態をとる汎用コンピュータシステムを含む。コンピュータ１１０のコンポーネントは、限定ではないが、中央処理装置１２０、画像処理装置１２５、システムメモリ１３０、およびシステムメモリを含む種々のシステムコンポーネントを処理装置１２０に接続するシステムバス１２１を含む。システムバス１２１は、メモリバス、メモリコントローラ、周辺バス、および種々のバスアーキテクチャを使用するローカルバスを含むいくつかの種類のバス構造である。一例として限定ではないが、このようなアーキテクチャは、ISA（Industry Standard Architecture）バス、MCA (Micro Channel Architecture) バス, EISA (Enhanced ISA)バス、VESA (Video Electronics Standards  Association) ローカルバス およびメザニンバスとして知られているPCI(周辺コンポーネントインターコネクト)バスを含む。コンピュータ１１０は、さらに、アクセラレーティド画像バスを含み、これを通して画像処理装置１２５およびビデオインタフェイス１９０がモニタ１９１と通信する。
【００２０】
画像処理装置１２５は、例えば、プリミティブから個別のバッファに画像点を変換し、各画素での照明を計算し、表面においてテキスチャを計算し、プリミティブをレンダリングすることによってモニタ１９１上でプリミティブ（例えば、画像、形状、背景、画像等）の組み合わせをレンダリングする。
【００２１】
コンピュータ１１０は、典型的には、種々のコンピュータ読み取り可能な媒体を含む。コンピュータ読み取り可能な媒体は、コンピュータ１１０によってアクセスすることができる利用可能な媒体であり、この媒体は、揮発性および非揮発性、取り外し可能および固定の媒体を含む。例えば、限定ではないが、コンピュータ読み取り可能な媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュールまたは他のデータのような情報の記憶用の方法または技術内で実行される揮発性および非揮発性、取り外し可能および固定の媒体の双方を含む。コンピュータ記憶媒体は、限定ではないが、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）電子的に消去可能なプログラム可能なリードオンリメモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、コンパクトディスクリードオンリメモリ（ＣＤＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）または他の光ディスク記憶装置、または所望の情報を記憶することができ、コンピュータ１１０によってアクセス可能な他の媒体を含む。通信媒体は、典型的には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュールまたは搬送波または他の搬送機構のような変調データ信号内の他のデータを含み、情報配信媒体を含む。この明細書で使用される「変調データ信号」は、１つまたは複数の特性集合を有し、信号内の情報をエンコードするような態様で変化された信号を意味する。一例として、限定ではないが、通信媒体は、有線ネットワーックまたは直接有線接続のような有線媒体、および音響、無線周波数（ＲＦ）、赤外線および他の無線媒体のような無線媒体を含む。また、上述したものの組み合わせは、コンピュータ読み取り可能な媒体の範囲内に含まれる。
【００２２】
システムメモリ１３０は、ＲＯＭ１３１およびＲＡＭ１３２のような揮発性および／または非揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時のようなコンピュータ１１０内の要素間の情報を伝達する助けとなる基本的なルーチンを含む基本的な入力／出力システム１３３（ＢＩＯＳ）は、典型的には、ＲＯＭ１３１内に記憶される。ＲＡＭ１３２は、典型的には、処理装置１２０によって現在作動されているか、すぐにアクセス可能なデータおよびまたはプログラムモジュールを含む。一例として、限定ではないが、図１は、オペレーティングシステム１３４、アプリケーション・プログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７を示す。ＲＡＭ１３２は、他のデータおよび／またはプログラムモジュールを含む。
【００２３】
また、コンピュータ１１０は、他の取り外し可能／固定の、揮発性／非揮発性コンピュータ記憶媒体を含む。図１は、一例として、固定の非揮発性磁気媒体から読み取り、書き込むハードディスクドライブと、取り外し可能な非揮発性磁気ディスク１５２から読み取り、書き込む磁気ディスクドライブ１５１、およびＣＤＲＯＭまたは他の光媒体のような取り外し可能な非揮発性光ディスクから読み取り、または書き込む光ディスクドライブ１５５を示す。限定ではないが、例示としての動作環境において使用することができる他の取り外し可能／固定の、揮発性／非揮発性コンピュータ記憶媒体は、磁気テープカセット、フラシュメモリカード、デジタル揮発性ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等を含む。ハードディスクドライブ１４１は、インタフェイス１４１のような固定のメモリインタフェイスを通してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、典型的には、インタフェイス１５０のような取り外し可能なメモリインタフェイスによってシステムバス１２１に接続される。
【００２４】
図１に示し、上述したドライブおよびそれらの関連したコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュールおよびコンピュータ１１０の他のデータの記憶装置を提供する。図１において、例えば、ハードディスクドライブ１４１は、記憶オペレーティングシステム１４４、アプリケーション・プログラム１４５、他のプログラムモジュール１４６、および他のプログラムデータ１４７として示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーション・プログラム１３５、他のプログラムモジュール１３６およびプログラムデータ１３７と同じかまたは異なっていてもよい。オペレーティングシステム１４４、アプリケーション・プログラム１４５、他のプログラムモジュール１４６およびプログラムデータ１４７は、最低限、それらが異なるコピーであることを示すために異なる符号が付与されている。ユーザは、通常、マウス、トラックボールまたはタッチパッドと称されるキーボード１６２およびポインティングデバイス１６１のような入力装置を介してコンピュータ１１０に命令および情報を入力する。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星用アンテナ、スキャナ等を含んでいる。これらおよび他の入力装置（図示せず）は、ユーザ入力インタフェイス１６０を介して処理装置に接続され、入力インタフェイス１６０は、システムバス１２１に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＢＳ）のような他のインタフェイスおよびバス構造によって接続することもできる。  
また、モニタ１９１または他の種類のディスプレイは、ビデオインタフェイス１９０のようなインタフェイスを介してシステムバス１２１に接続されている。モニタ１９１に加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のような他の周辺出力装置を含み、これらは、出力周辺インタフェイス１９５を通して接続されることができる。
【００２５】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つまたは複数のコンピュータへの論理接続を使用するネットワーク環境で動作する。リモート・コンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置または他の共通のネットワークノードであり、典型的には、コンピュータ１１０に関して上述した多数または全部の要素を含むが、メモリ記憶装置１８１は、図１に示されている。図１に示されている論理接続は、ローカルエリア・ネットワーク（ＬＡＮ）１７１およびワイドエリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて共通である。
【００２６】
ＬＡＮネットワーキング環境において使用されるとき、コンピュータ１１０は、ネットワーク・インタフェイスまたはアダプタ１７０を介してＬＡＮに接続されている。コンピュータ１１０は、ＷＡＮネットワーク環境で使用されるとき、インターネットのようなＷＡＮ１７３上で通信を確立するためのモデム１７２または他の手段を含む。内蔵または外付けのモデム１７２は、ユーザ入力インタフェイス１６０または他の適当な機構を介してシステムバス１２１に接続されてもよい。ネットワーク環境において、コンピュータ１１０に関して示されたプログラムモジュールまたはその一部は、リモートメモリ記憶装置に記憶されている。一例として、限定ではないが、図１は、メモリ装置１８１にあるようなリモート・アプリケーション・プログラム１８５を示している。図示したネットワーク接続は例示であり、コンピュータ間の通信を確立するための他の手段も使用することができることは理解できよう。
【００２７】
コンピュータ１１０または他のクライアント装置は、コンピュータネットワークの一部として用いられることができる。この観点において、本発明は、どのような数を有するメモリまたは記憶装置を有するコンピュータシステム、およびどのような数のアプリケーションおよび記憶装置の数または容量にわたって生じるプロセスに関する。本発明の実施形態は、リモートまたはローカル記憶装置を有するネットワーク環境で使用されるサーバ・コンピュータおよびクライアントコンピュータを有する環境に適用される。また本発明は、プログラミング言語機能、インタプリテーションおよび実行性能を有するスタンドアロンコンピュータ装置に適用される。
【００２８】
（例示的な実施形態）
図２は、本発明によるハードウエア・アクセレートブレンド・モードを提供するための例示的なシステム２００のブロック図である。システム２００は、サーバ・コンピュータ２５０と通信するクライアントコンピュータ２１０を含む。本発明の実施形態は、クライアントコンピュータ２１０またはサーバ・コンピュータ２５０単独で実行されることができる。システム２００は、本発明の多数の例示的な実施形態の内の一例を示す。
【００２９】
クライアントコンピュータ２１０およびサーバ・コンピュータ２５０の各々は、図１において示すコンピュータ１１０である。クライアントコンピュータ２１０は、中央処理装置２２０、画像アプリケーション・プログラム２３５、およびプログム可能な処理装置２２５を含み、ディスプレイとしてモニタ２９１が接続されている。サーバ・コンピュータ２５０は、中央処理装置２６０および画像アプリケーション・プログラム２６５を含む。もちろん、クライアントコンピュータ２１０およびサーバ・コンピュータ２５０は、他のコンポーネントを含み、図１に関して説明したような他の装置と通信することができる。
【００３０】
プログラム可能な画像処理装置２２５は、モニタ２９１においてプリミティブおよびプリミティブの組み合わせ（画像、形状、背景、画像等）をレンダリングするハードウエア装置である。プログラム可能な画像処理装置２２５は、例えば、プリミティブから各バッファに画像点を変換し、各画素で照明を計算し、表面等の上でテキスチャを計算し、モニタ２９１においてプリミティブをレンダリングすることによってプリミティブをレンダリングすることができる。プログラム可能な画像処理装置２２５は、クライアントコンピュータ２１０の中央処理装置２２０と通信している。代替案として、または、さらに、プログラム可能な画像処理装置２２５は、クライアントコンピュータ２１０を通してサーバ・コンピュータ２５０の中央処理装置２６０と通信する。
【００３１】
画像アプリケーション・プログラム２３５、２６５の各々は、プリミティブのような画像情報をレンダリングするアプリケケーションである。このようなプリミティブは、バッファまたはモニタ上のディスプレイで処理される。プリミティブは、組み合わせられ、例えば、写真、ビデオ、イメージ、テキスト、図形または形状として処理される。画像アプリケーション・プログラム２３５，２６５は、画像処理装置を通して、出力先プリミティブとソース・プリミティブをブレンドするためにブレンド・モードを実施することができる。ブレンド・モードは、通常、画素シェイダと称される分離機能、プログラム、モジュール等の実行を介してプリミティブに実行され、または適用される。この明細書で使用される用語の画像シェイダは、ブレンド・モードに適用されるプログラム・コードである。画像アプリケーション・プログラム２３５，２６５は、画素シェイダのブレンド・モードのアプリケーションを提供する。各画素シェイダは、ブレンド・モードを実行するための機能またはプログラムである。
【００３２】
画像アプリケーション・プログラム２３５，２６５は、各中央処理装置２２０、２６０と通信するか、それらによって実行される。画像アプリケーション・プログラム２３５の実行中、ソース・プリミティブは、呼出されてブレンド・モードによって出力先プリミティブとブレンドされる。画像アプリケーション・プログラム２３５は、中央処理装置２２０に画素シェイダを送ることができる。本発明によって、画像アプリケーション・プログラム２３５は、中央処理装置上で画素シェイダを実行する代わりに、中央処理装置２２０に画素シェイダをプログラム可能な画像処理装置２２５に送らせるようにする。中央処理装置２２０は、プログラム可能な画像処理装置２２５に画素シェイダを実行するよう指示することができる。画素シェイダは、ソースおよび出力先プリミティブの各画素にブレンド・モードを適用することを容易にし、複合プリミティブをレンダリングする。すなわち、プログラム可能な画像処理装置２２５は、ブレンド・モードに従い、ソースおよび出力先プリミティブをブレンドするように指示することができる。プログラム可能な画像処理装置２２５は、画素シェイダを実行して、ブレンド・モードをソースおよび出力先プリミティブの各画素に適用するようにし、例えば、モニタ２９１上に複合プリミティブをレンダリングする。代替案として、画像アプリケーション・プログラム２３５は、画像アプリケーション・プログラム２３５と画像処理装置２２５との間を媒介するものとして作用するアプリケーションと通信する。このような媒介アプリケーションは、画像処理装置ドライバまたは画素シェイダを含む画像ライブラリである。画像アプリケーション・プログラム２３５は、媒介アプリケーションにブレンド操作のためにプログラム可能な画像処理装置２２５に適当な画素シェイダを提供するように指示することができる。媒介アプリケーションは、適当な画素シェイダを選択して適当なブレンディングを提供し、実行するために画素シェイダを画像処理装置に送ることができる。
【００３３】
他の実施例において、サーバ・コンピュータ２５０で作動している画像アプリケーション・プログラム２６５は、画素シェイダを中央処理装置２６０に送り、中央処理装置２６０にプログラム可能な画像処理装置２２５で実行するためにそれをクライアントコンピュータ２１０に送るように指示することができる。中央処理装置２６０は、プログラム可能な画像処理装置２２５に画素シェイダを実行し、複合プリミティブをレンダリングするように指示することができる。
【００３４】
図３は、本発明によるハードウエアアクセレーテドブレンド・モードを提供するための例示的な方法３００のフローチャートである。方法は、ステップ３１０で開始し、画像アプリケーション・プログラム（例えば、ディスプレイ上で形成されるべきプリミティブのために呼び出されるアプリケーション）がコンピュータ上で実行される。コンピュータは、クライアントコンピュータ２１０または図２のサーバ・コンピュータ２５０である。ステップ３２０において、画像アプリケーション・プログラムは、バッファ（例えばディスプレイ）内でレンダリングされる出力先プリミティブとブレンドされるべきソース・プリミティブを提供する、または必要とする。画像アプリケーション・プログラムは、ステップ３３０で、中央処理装置にプログラム・コードを送り、このコードは、実行されるとき、ブレンド・モードを適用する。このようなプログラム・コードは、画素シェイダを含む。
【００３５】
ステップ３４０において、中央処理装置は、実行のためにプログラム・コードをプログラム可能な画像処理装置に送ることができる。プログラム可能な画像処理装置は、ステップ３５０において、プログラム・コードを実行し、ブレンド・モードをソースおよび出力先プリミティブの各画素に適用することができる。複合プリミティブは、ステップ３６０でディスプレイバッファ上にレンダリングされる。
【００３６】
図４は、本発明によってハードウエアアクセラレーティドブレンド・モードを提供するための他の例示的な方法４００のフローチャートである。方法は、ステップ４１０で開始され、プログラム可能な画像処理装置は、例えば、供給された画素シェイダを使用してソース・プリミティブと出力先プリミティブとを混合するように指示することができる。画素シェイダは、例えば、画像アプリケーション・プログラム、ドライバ、画像ライブラリ、またはオペレーティングシステムによって供給される。ステップ４２０において、ソース・プリミティブは、一時的なテキスチャマップに受信され、およびレンダリングされ、一時テキスチャマップは、以降ソース・テキスチャ・マップと称される。ソース・プリミティブは、画像アプリケーション・プログラムからそれを受ける中央処理装置から受信される。
【００３７】
レンダー対象から出力先プリミティブのコピーが形成され、ステップ４３０で一時的なテキスチャマップに配置される。この一時的なテキスチャマップは、以降、出力先テキスチャマップと称される。使用されるプログラム可能な画像処理装置が画素シェイダに提供されないで出力先レンダー対象から画素の色を読まない場合、ステップ４３０が実行されることは理解できよう。プログラム可能な画像処理装置のためのアーキテクチャが同じレンダー対象へ読み書きすることができる、または許される場合、ステップ４３０は、方法４００から省略することができる。
【００３８】
ステップ４４０において、画素シェイダは、その実行中にソースおよび出力先テキスチャマップを使用するために設定することができる。プログラム可能な画像処理装置は、ステップ４５０で画素シェイダを実行し、ソースおよび出力先テキスチャマップの各画素にブレンド・モードを適用し、出力先レンダー対象に塗りつぶされた矩形を描く。すなわち、プログラム可能な画像処理装置は、ソース画素色と出力先画素色とを組み合わせて、各画素のための出力先レンダー対象内に配置される最終的な色をつくる。画素シェイダは、例えば、ここで説明したようなものおよび例えば、画素シェイダアセンブリ言語または高級シェイディング言語を使用した他のもののようなブレンド・モードを処理するために開発されたことを理解すべきである。ステップ４５０において、さらにプリミティブがレンダリングされる場合、方法は、ステップ４２０から繰り返される。ステップ４５０において、プリミティブがそれ以上レンダリングされない場合、出力先レンダー対象が表示される。
【００３９】
ここに説明した種々の技術は、ハードウエアまたはソフトウエア、場合によっては双方の組み合わせと関連して実行される。したがって、本発明の方法および装置またはそのある観点およびその要素は、フロピィディスク、ＣＤ−ＲＯＭ、ハードドライブまたは他の機械で読み取り可能な記憶媒体のような具体的な媒体に記憶されたプログラム・コード（すなわち、命令）の形態をとり、この場合、プログラム・コードは、コンピュータのような機械に記憶され、実行されるとき、機械は、本発明を実行するための装置になる。プログラム可能なコンピュータで実行されるプログラム・コードの場合、コンピュータ装置は、一般にプロセッサ、揮発性および非揮発性および／または記憶装置を含むプロセッサによって読み取り可能な記憶媒体、少なくとも１つの入力装置、少なくとも１つの出力装置を含む。コンピュータシステムと通信するために１つまたは複数のプログラムが高級手順またはオブジェクト指向プログラミング言語で実行されることが好ましい。しかしながら、プログラムは、所望ならば、アセンブリまたは機械言語で実施することができる。どの場合においても、言語は、編集または解釈された言語であるか、ハードウエアの実行と組み合わせられることができる。
【００４０】
本発明を種々の図面と関連した特定の例と関連して説明したが、本発明から逸脱することなく、他の実施例を使用するか、本発明と同じ機能を実行するために説明した実施例に対して変形例および追加例を実施することができる。本発明の説明において例が提供されたが、特許請求の範囲内で定義されたような本発明の態様を限定する意図はない。要するに、提供され説明された例は、本発明を限定するものではない。したがって、本発明は、単一の実施形態に限定されるべきではなく、添付した特許請求の範囲における観点によって解釈すべきである。
【００４１】
添付した図面と関連して読むとき、本発明の前述した要約および次の詳細な説明をさらによく理解できる。本発明の実施例を図面に示すが、本発明は、特定の方法およびそこに示された実施例には制限されない。
【図面の簡単な説明】
【００４２】
【図１】本発明の観点を実施するコンピュータ環境の一例を示すブロック図である。
【図２】本発明によるハードウエア・アクセレート・ブレンド・モードを提供するための例示的なシステムのブロック図である。
【図３】本発明によるハードウエア・アクセレート・ブレンド・モードを提供するための例示的な方法のフローチャートである。
【図４】本発明によるハードウエア・アクセレート・ブレンド・モードを提供するための例示的な他の方法のフローチャートである。
【図１】
2006238429.tif 000005
【図２】
2006238429.tif 000006
【図３】
2006238429.tif 000007
【図４】
2006238429.tif 000008