JP5281660B2 - 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張 - Google Patents

宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張 Download PDF

Info

Publication number
JP5281660B2
JP5281660B2 JP2010549691A JP2010549691A JP5281660B2 JP 5281660 B2 JP5281660 B2 JP 5281660B2 JP 2010549691 A JP2010549691 A JP 2010549691A JP 2010549691 A JP2010549691 A JP 2010549691A JP 5281660 B2 JP5281660 B2 JP 5281660B2
Authority
JP
Japan
Prior art keywords
shader
declarative
effects
input
programming model
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2010549691A
Other languages
English (en)
Other versions
JP2011517803A5 (ja
JP2011517803A (ja
Inventor
シェヒター,グレッグ・ディー
シュナイダー,ゲルハルト
ミハイル,アシュラフ・エイ
クラーク,ブレンダン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011517803A publication Critical patent/JP2011517803A/ja
Publication of JP2011517803A5 publication Critical patent/JP2011517803A5/ja
Application granted granted Critical
Publication of JP5281660B2 publication Critical patent/JP5281660B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

本発明は、宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張に関する。
[0001]グラフィック処理装置(GPU)はコンピューターのための専用のグラフィック・レンダリング装置である。今日のGPUはコンピューター・グラフィックの操作及び表示において効率的であり、それらの並列構造は、一連の複雑なアルゴリズムのための最も汎用の中央処理装置よりもそれらを有効なものにする。CPUはまた複数のプロセッサー・コアを有してもよい。GPUのように、マルチコアCPUは、複数の動作を並行して実行することができる。
[0002]今日、ソフトウェアを書くソフトウェア開発者は、自身が書くソフトウェア・アプリケーションにおいてこの処理能力を利用したいと考えている。例えば、多くのグラフィック効果又はマルチメディアを利用するデスクトップベース又はウェブベースのアプリケーションなどの、大量の処理リソースを必要とするアプリケーションにおいて、コンピューター中に存在するGPU又はマルチコア・プロセッサーの能力を利用することは有用である。しかし、多くのプラットフォームはGPU又はマルチコア・プロセッサーのリソースを利用し得るが、末端の開発者は、通常、今日多くのコンピューターに含まれる余分な処理能力を利用することができるプラットフォーム上で動作するアプリケーションを容易に構築することができない。
[0003]シェーダーを宣言的に制御するための様々な技術及び技法が開示される。宣言型のプログラミング・モデルは、宣言型プレゼンテーション・フレームワークにおけるシェーダーのインスタンス化を制御する宣言文(declarative statements)を使用することを可能にする。宣言的に指定されたシェーダーは、ソフトウェア・アプリケーションのためにグラフィック効果をレンダリングする(ソフトウェア・アプリケーションにグラフィック効果を与える)ためのプレゼンテーション・フレームワークによって後にインスタンス化される(インスタンスを作成される、instantiated)。1つの実施例において、宣言型のプログラミング・モデルは、単一パス動作(single pass operation)中に実行されるべきシェーダーを制御しカプセル化する単一パスシェーダーとして使用することができる。別の実施例において、複数パス動作(multiple pass operation)中に実行されるべき1組のシェーダーを制御しカプセル化する複数パス効果として宣言型のプログラミング・モデルを利用するための方法が記載される。カスタム方法(カスタム・メソッド、custom method)が複数パス効果について呼び出される。カスタム方法は複数パス効果クラスから導かれたものである。カスタム方法は、カスタム方法が複数パス効果の動作を制御することを可能にするためのシェーダー・コンテキスト及び制御情報にカスタム方法がアクセスすることを可能にする、コンテキストを備えている。
[0004]この概要は詳細な説明においてさらに以下に述べる概念の選択を単純化された形式で紹介するために提供された。この概要は、特許請求される主題の主な特徴又は本質的な特徴を識別するようには意図されず、特許請求される主題の範囲を決定する際に助けとして使用されるようにも意図されない。
[0005]画素シェーダーの動作を制御するためのシステムの線図である。 [0006]宣言型プレゼンテーション・フレームワークにおけるシェーダーのインスタンス化及び動作を制御する宣言文が使用されることを可能にする、1つの実施例についての宣言型のプログラミング・モデルの線図である。 [0007]宣言型のプログラミング・モデルを使用してシェーダーベースの効果を定義することに関与する段階を示す1つの実施例についての処理フロー図である。 [0008]シェーダーへの入力として使用されているブラシ(brush)を示す1つの実施例についての線図である。 [0009]シェーダーへの二次的な入力及びシェーダーへの潜在的な(implicit)入力としてブラシの使用を示す1つの実施例についてのある例示的なソース・コードである。 [0010]シェーダー入力に対する特性の結合(binding)を示す1つの実施例についての線図である。 [0011]シェーダー入力に対する特性の結合を示す1つの実施例についての例示的なソース・コードである。 [0012]効果ブラシ(effect brush)を定義する際のシェーダーの使用を示す1つの実施例についての線図である。 [0013]効果ブラシを定義する際のシェーダーの使用を示す1つの実施例についての例示的なソース・コードである。 [0014]シェーダーによる一般的な変換の使用による及び/又は画素自体の上でシェーダーを実行することによるヒット・テスト(hit testing)を示す1つの実施例についての線図である。 [0015]シェーダーによる一般的な変換の使用によるヒット・テストを示す1つの実施例についての例示的なソース・コードである。 [0016]複数パス動作中に実行されるべき1組のシェーダーを制御しカプセル化する複数パス効果を示す1つの実施例についての処理フロー図である。 [0017]ユーザー・インターフェース・スレッドから構成スレッドへの制御の流れを示す1つの実施例についての線図である。 [0018]1つの実施例のコンピューター・システムの線図である。
[0019]本明細書において技術及び技法は宣言型のプログラミング・モデルを備えたシェーダーを使用するための技術及び技法として一般的なコンテキストにおいて述べられてもよいが、技術及び技法はまた、これらに加えて他の目的に役立つ。1つの実施例において、本明細書に記載される1つ以上の技術は、MICROSOFT(登録商標).NETフレームワークなどのソフトウェア開発プラットフォーム内の機能、又は開発者がソフトウェア・アプリケーションを開発し及び/又はカスタマイズすることを可能にするためのプラットフォームを提供する他の種類のプログラム又はサービスからの機能として実施することができる。
[0020]、宣言型プレゼンテーション・フレームワーク上で実行される宣言型のプログラミング・モデル108を使用してシェーダー106の動作を制御するためのシステム100の線図が図1に示される。本明細書において使用される「宣言文」なる語及び「宣言的に」なる語は、関連する宣言型のフレームワークの基本的な実施に対してその実行を委ねる、テキストベースのマークアップ又は命令コード(imperative code)を含むことを意図する。宣言型言語の例は、少数の限定的でない例を挙げると、XAML及びXMLを含む。本明細書において使用される「宣言型のプログラミング・モデル」なる語は、関連する宣言型のフレームワークによって処理されるべき効果をインスタンス化し使用するために、開発者、別のユーザー又はプログラムが当該プログラミング・モデルによって宣言文を設定する、プログラミング・モデルを含むことを意図する。本明細書において使用される「宣言型プレゼンテーション・フレームワーク」なる語は、宣言型のプログラミング・モデルを使用して宣言文によって開発者、別のユーザー又はプログラムによって提供される、より抽象的な記述とのインタラクションを表示し可能にするシステムを含むことを意図する。宣言型プレゼンテーション・フレームワークの制限的でない1つの例は、MICROSOFT Windows(登録商標) Presentation Foundation(すなわち、WPF)であり、これは、(バージョン3.0で始まる)MICROSOFT.NETフレームワークのグラフィカルなサブシステム機能である。WPFは、アプリケーションを構築するための一貫したプログラミング・モデルを提供し、ユーザー・インターフェース・ロジックとビジネスロジックとの間の明確な分離を提供する。宣言型プレゼンテーション・フレームワークの制限的でない別の例はMICROSOFT Silverlightである。
[0021]本明細書において使用される「シェーダー(shader)」なる語は、主としてグラフィカルなレンダリング効果を行うためにグラフィックのリソースによって使用される1組のコンピューター命令を含むことを意図する。システム100に利用することができる、画素シェーダー、頂点(vertex)シェーダー及び/又は形状(配置、幾何学、geometry)シェーダーなどの異なる種類のシェーダーが存在する。頂点シェーダーは一連の頂点に影響を及ぼし、したがって、位置、色及びテクスチャ座標のような頂点特性を変更することができる。頂点シェーダーによって計算された頂点は、通常、形状シェーダーに渡される。形状シェーダーは、メッシュから頂点を追加及び削除することができる。形状シェーダーは、手続きに従って形状(配置)を生成するため又は既存のメッシュに容積測定の(volumetric)詳細を加えるために使用することができ、これは、通常は、演算処理装置上で処理するにはコストがかかりすぎる。画素シェーダーはフラグメントシェーダーとしてより一般に知られており、頂点シェーダー及び形状シェーダーによって生成された多角形がラスターライズされる場合、個々の画素の明度(color value)を計算する。画素シェーダーは、通常、シーン照明(scene lighting)、並びにバンプ・マッピング及び色調整などの関連する効果のために使用される。
[0022]1つ以上の演算処理装置104上でシェーダー106が実行される。演算処理装置104の少数の制限的でない例はグラフィック処理装置(GPU)又はマルチコア・プロセッサーを含み得る。シェーダー106が1つ以上の演算処理装置104上で実行される場合、「シェーダー・プロセッサー」なる語は演算処理装置104上でのシェーダーの実行を指すのに使用される。以前に述べたように、シェーダー106は所与のソフトウェア・アプリケーションに対して効果を与える(レンダリングする)責務を有する。宣言型のプログラミング・モデル108は、開発者又は他のユーザーがユーザー宣言型の(user-declared)シェーダー・カスタマイゼーション110を提供することを可能にする。図2−13のフロー及びコードの例においてここでさらに詳細に述べられるように、シェーダー・カスタマイゼーション110は、ユーザーがシェーダー106のインスタンス化及び/又は動作を制御することを可能にする。
[0023]図2は、宣言型プレゼンテーション・フレームワークにおけるシェーダーのインスタンス化及び動作を制御する宣言文が使用されることを可能にする、1つの実施例についての宣言型のプログラミング・モデル150の線図である。宣言型のプログラミング・モデル150は、シェーダーの制御のために宣言的に指定することができる様々な機能をサポートする。1つの実施例において、宣言型のプログラミング・モデル150は、単一パス動作中に実行されるべきシェーダーを制御しカプセル化する単一パスシェーダーとして使用することができる。別の実施例において、宣言型のプログラミング・モデル150は、複数パス動作中に実行されるべき1組のシェーダーを制御しカプセル化する複数パス効果として使用することができる。複数パス効果は、本明細書における複数パス効果164についての議論及び図12の議論においてより詳細に述べられる。
[0024]宣言型のプログラミング・モデル150を使用して、ブラシは、シェーダーへの入力152として指定することができる。本明細書において使用される「ブラシ」なる語は、形状を満たすために適用されると、どの画素位置にどの色を配置するかを決定することができるオブジェクトを表すことを意図する。より抽象的には、ブラシは2D空間から色へのマッピング機能を表す。例示的なブラシは、単純なラスター画像、線形且つ放射状の勾配(グラディエント)、ライブビデオのソース、他のベクトル・グラフィック・レンダリングからのソースなどを含む。ブラシはその上画素シェーダーに対する入力としての役割を果たし、シェーダーによって処理されるべき「サンプラー」としてシェーダー自体に対して提示することができる。シェーダーへの入力としてブラシを利用することについてのさらなる詳細は図4−5についての議論において提供される。
[0025]宣言型のプログラミング・モデル150は、潜在的な入力がシェーダー・プロセッサーに提供されることを可能にして、グラフィック効果がその一次入力などの入力154をどこで得るかを制御する。本明細書において使用される「潜在的な入力(implicit input)」なる語は、「効果/シェーダーが適用されているユーザー・インターフェース要素をラスタライズすることに起因する、画素ベースのビットマップ」を含むよう意図する。したがって、例えば、効果がボタンに適用される場合、「潜在的な入力」はそのボタンを表すビットマップである。潜在的な入力の一例は、図5においてより詳細に述べられる。
[0026]シェーダー入力156に対する特性結合(property binding)はまた、宣言型のプログラミング・モデル150によりサポートされる。本明細書において使用される「特性結合」なる語は、データ結合を行うかそうでなければ柔軟な制御を行うときにアニメーション実行するために参照することができるオブジェクト指向のクラス定義の宣言型の特性を含むことを意図する。。いくつかの実施例において、そのような特性は依存特性(Dependency Properties)として知られている。本明細書において使用される「シェーダー入力」なる語は、レジスターインデックスを介してシェーダーにとって利用可能になる「シェーダー定数」及び「シェーダーサンプラー」の両方を含むことを意図する。本明細書において使用される「シェーダー定数」なる語は、シェーダープログラムの実行の全体にわたって一定のままである、シェーダープログラムに提供される値を含むことを意図する。シェーダー定数についての少数の制限的でない例は、浮動小数点値、色、点、ベクトル、行列などを含む。本明細書において使用される「シェーダーサンプラー」なる語は、特定の座標点においてシェーダープログラム内でサンプリングすることができるシェーダープログラムに提供される多次元アレイを含むことを意図する。少数の制限的でない例は2Dビットマップ及び3Dテクスチャー・ボリュームを含んでもよい。言いかえれば、宣言型のプログラミング・モデル150は、依存特性がシェーダー入力と宣言的に接続されることを可能にする。シェーダー入力156に対する特性結合は、図6及び7においてより詳細に述べられる。1つの実施例において、シェーダー入力に対する特性結合をサポートすることによって、それらの依存特性は、シェーダーの実施についてさらに知る必要のあるシェーダーを(特性宣言を含むより高いレベルのオブジェクトを介して)使用している開発者なしにシェーダーに渡すことができる。
[0027]宣言型のプログラミング・モデル150はまた、効果ブラシがシェーダーの実行からのブラシとして作用するように定義される(158)ことを可能にする。本明細書において使用される「効果ブラシ」なる語は、シェーダー又は一連のシェーダーの実行による2D空間から色へのその機能を定義する(上に定義されるような)あらゆる「ブラシ」を含むことを意図する。効果ブラシは、一般に、他のブラシと同様の方法で使用することができる。1組の明示的な入力を仮定すると、効果ブラシは、ブラシが適用されている目標を満たすために色を生成する。この機能を利用して、システムはシェーダーを実行するために予め何もレンダリングする必要はない。言いかえれば、効果ブラシ機能は、シェーダーがユーザー・インターフェース要素のブラシとして実行することを可能にする。効果ブラシは図8及び9においてより詳細に述べられる。
[0028]宣言型のプログラミング・モデル150によってサポートされる別の機能は、効果が入力をどのように変えるかをモデル化するための、一般的な変換160を使用するヒット・テスト及び座標空間変換である。本明細書において使用される「ヒット・テスト」なる語は、シェーダーが適用された後に座標空間における特定の点の位置を求める要求の処理を含むことを意図する。本明細書において使用される「座標空間変換」なる語は、シェーダーベースの効果を経る必要性及びシェーダーが潜在的に画素を変換するのと同じ方法で座標を変換するコードを有することを含む、変換階層に沿った任意のマッピングを含むことを意図する。インタラクトされるときにマウス位置又は入力ポインター位置を効果が適用される変換の逆を介して変換する必要があるように、ある効果はそのコンテンツをあちこち移動させることができる。一般的な変換160機能を使用するヒット・テストは、ある効果が入力をモデル化されるようにシフトする方法を可能にする。例えば、効果がボタンを「回転させる(swirl)」場合、入力ポインターは、それが回転されたボタンの表現の上にあり、且つ、ボタンがもともと存在していたがもはやそこに存在していない空間の上にある場合でないときに、ボタンの「上に」あるものとして登録するべきである。ヒット・テストは図10及び11においてより詳細に述べられる。
[0029]宣言型のプログラミング・モデル150はまた、画素自体162の上でシェーダーを実行することによりヒット・テストをサポートする。この機能により、シェーダーは、実際の画素座標を得るために特定の画素上で実行することができる。これは、上述のようなヒット・テストに必要な座標空間マッピングを行うための1つの可能な実施例を表す。これは図10においてより詳細に述べられる。
[0030]複数パス効果164はまた宣言型のプログラミング・モデル150によりサポートされる。複数パス効果により、複数のレベルの効果があり得、一度に1つのシェーダー上で起こる1組の動作として具体化される。開発者は、宣言型のプログラミング・モデル150を使用して、シェーダーの複数のパスを制御し拡張することができる。複数パス効果164は、図12においてより詳細に述べられる。
[0031]ここで図3−13に移ると、シェーダー動作を制御するためのシステムの1つ以上の実施例を実施するための段階がより詳細に記述される。いくつかの実施例において、図3−13のプロセスは、(図14の)計算装置500の動作論理において少なくとも部分的に実施される。
[0032]図3は、宣言型のプログラミング・モデルを使用してシェーダーベースの効果を定義することに関与する段階を示す1つの実施例についての処理フロー図200である。宣言的に参照されたシェーダーベースの効果は、ソフトウェア・アプリケーションにグラフィック効果を与える(レンダリングする)ための宣言型プレゼンテーション・フレームワークによってプログラムで例示化される(instantiated)(段階202)。シェーダーの少数の制限的でない例は、画素シェーダー、頂点シェーダー及び/又は形状シェーダーを含んでもよい。宣言文はソフトウェア・アプリケーションについてアクセスされる(段階204)。言いかえれば、シェーダーのためのグラフィック効果カスタマイゼーションを含む宣言文は、宣言文を含む1つ以上のファイルから取り出される。1つの実施例において、それらがシェーダーによって必要とされるとき、宣言文はシェーダーの動作の全体にわたってアクセスされる(段階204)。グラフィック効果カスタマイゼーションによりソフトウェア・アプリケーションに対してシェーダーがグラフィック効果を与えることを可能にするために、宣言文はシェーダー・プロセッサーへ送られる(段階206)。言いかえれば、宣言文はシェーダー・プロセッサーへ送られ、宣言型の方法で開発者、他のもの又はプログラムのユーザーによって指定された所望のグラフィック効果カスタマイゼーションを実行するためにシェーダーによって使用される。1つの実施例において、宣言文は、シェーダーが実行されるGPUやマルチコア・プロセッサーなどの演算処理装置(の能力)をグラフィック効果カスタマイゼーションが利用することを可能にする。
[0033]図4は、シェーダー222への入力として使用されている1つ以上の宣言文224を使用して定義されたブラシ226を示す1つの実施例についての線図220である。ブラシは、放射状の勾配、ビットマップ画像、動画、ベクトル・グラフィックなどの特徴が、(いくつかの既存のシェーダーがサポートする正当なビットマップとは対照的な)シェーダーへの入力として役立つことを可能にする。ブラシの概念をより詳細に示すためのコードの例は図5に示される。
[0034]図5は、シェーダーへの二次的な入力としてブラシの使用を示し、シェーダーへの潜在的な入力の使用を示す、1つの実施例についてのある例示的なソース・コード250である。示された例において、myButtonと呼ばれるボタンが宣言的に指定されている。当該ボタンは、テクスチャー減算効果(texture subtraction effect)の最下段特性(底特性)についての入力としてブラシ254を含むボタン効果により宣言されたものである。テクスチャー減算効果の頂点特性は、効果が適用されている要素のビットマップ・レンダリング−この場合、myButtonのレンダリング−を表す潜在的な入力特性252を含む。最終的な結果は、当該ボタンが、今は、それから減算されたブラシ254からの画像を備えた元のボタンのレンダリングのように見えるということである。
[0035]図6は、シェーダー定数及び/又はサンプラーであり得る、1つ以上のシェーダー入力284への1つ以上の依存特性288の結合を示す1つの実施例の線図280である。以前に述べたように、シェーダー入力はレジスターインデックスによってシェーダーにとって利用可能になる。依存特性は、所与のシェーダー282のシェーダー入力284に結合するために宣言文286を使用して指定することができる。1つの実施例において、依存特性をシェーダー入力と接続することによって、依存特性は、定義することができ、シェーダーの詳細についてユーザーが心配する必要なくシェーダーに渡すことができる。宣言型の方法によるシェーダー入力への(より具体的には、シェーダー定数への)依存特性の結合の例は図7に示される。図7に示される例示的なソース・コードにおいて、シェーダー定数に対する2つの依存性(304及び306)は宣言的に指定される。それらの依存性(304及び306)は、シェーダー定数308及び310などのシェーダー302の実際の登録に結合される。1つの実施例において、当該結合はコールバックの使用を通じて遂行され、これは、依存特性がいつ変更されようとも、効果、及びしたがってシェーダーが実行される次回のための新たな値でシェーダー入力を更新するよう宣言型のフレームワークに命じるコールバック関数が呼び出されることを意味する。
[0036]図8は、効果ブラシを定義する際のシェーダーの使用を示す1つの実施例についての線図320である。図2に述べられるように、効果ブラシ326は、シェーダー322の実行からのブラシとして作用するために宣言文324を使用して定義することができる。1組の明示的な入力を考慮すると、効果ブラシ326は、ブラシが適用されているその目標を満たすために色を生成する。効果ブラシ機能は、シェーダー322がユーザー・インターフェース要素のブラシとして実行されることを可能にする。効果ブラシ326を宣言的に指定するための例示的なソース・コード330は図9に示される。図9に示される例において、効果ブラシはカスタム効果334により宣言的に指定される(332)。示された例におけるカスタム結果334は、矩形に対してフラクタル・フィル(fractal fill)を生成する。この例において、効果ブラシは、効果(Effect)種類である単一のパラメーター、Effectとともに使用される。更に、MandelbrotEffectは、シェーダー入力として基本的なシェーダーに渡される3つの依存特性を備えたカスタムShaderEffectである。その後、効果の出力は矩形を満たすために使用される。
[0037]ここで図10に移ると、シェーダー352による一般的な変換356を使用すること及び/又は特定の画素358においてシェーダー352を実行することにより、ヒット・テスト及び座標空間変換の性能を示す、1つの実施例についての線図が示される。以前に述べたように、ヒット・テストは、シェーダーが適用された後に座標空間において指定された点の位置を求める要求の処理を意味する。一般的な変換356は宣言文354を使用して指定することができ、ヒット・テスト及び座標空間変換がモデル化されることを可能にする。一般的な変換の例は図11の例示的なソース・コード380に示される。代替的に又はさらに、ヒット・テストは特定の画素358上でシェーダー352を実行することにより行うことができる。
[0038]図12は、複数パス動作中に実行されるべき1組のシェーダーを制御しカプセル化する複数パス効果を示す1つの実施例についての処理フロー図440である。本明細書において使用される「複数パス効果」なる語は、所望のレンダリングを達成するために1つより多くのシェーダーを複数回潜在的に呼び出す効果を含むことを意図する。本明細書において使用される「複数パス動作」なる語は、複数のパス及び複数のシェーダーの実行を制御するコードを含むことを意図する。カスタム方法は複数パス効果に対して呼び出される(段階442)。1つの実施例において、カスタム方法は複数パス効果クラスから導かれる。1つの実施例において、カスタム方法は、それが適用シェーダー(例えば、ApplyShaders)の方法を無効にするように定義される。適用シェーダーの方法は、カスタム方法における複数パス効果の各々のパスについてそれぞれのシェーダーをプログラムによって選択するためのロジックを含む。
[0039]カスタム方法は、当該カスタム方法が複数パス効果の動作を制御することを可能にする(段階446)ために、当該カスタム方法がシェーダー・コンテキスト及び制御情報にアクセスすることを可能にする(段階444)コンテキストを備えている。言いかえれば、カスタム方法はシステムによって呼び出され、シェーダーインデックス、現在の地球規模(グローバル・スケール)、シェーダー定数、シェーダーサンプラー及び/又はシェーダーを選択し実行するための能力のような関連情報のアクセス及び制御を可能にする「コンテキスト」を備えている。この機構によって、カスタム方法における複数パス効果の開発者は、複数パス効果レンダリングを制御することができる。
[0040]1つの実施例において、複数パス効果機能の使用によって、複数シェーダー効果ベースクラス(base class)の特定のサブクラスのユーザーは、宣言型のグラフィック又はユーザー・インターフェース表現にその効果を含めるために、当該効果を宣言的に指定することのみを必要とする。
[0041]1つの実施例において、グラフィック効果カスタマイゼーションは、所与の複数パス効果におけるすべてのパスについて構成スレッド上で呼び出される。構成スレッドは図13においてより詳細に述べられ、それはここで次に議論される。
[0042]図13は、ユーザー・インターフェース・スレッドから構成スレッドまでの制御の流れを示す1つの実施例についての線図480である。本明細書において使用される「ユーザー・インターフェース・スレッド」なる語は、アプリケーションのユーザー・インターフェース要素(ボタン、テキストボックス、リスト)が応答する実行の主要なスレッドを含むことを意図する。本明細書において使用される「構成スレッド」なる語は、ディスプレイのレンダリングを制御するユーザー・インターフェース・スレッドとは異なるスレッドを含むことを意図する。構成スレッドに対する動作はUIスレッドに対する動作によってブロックされない。
[0043]図13に戻ると、フローの制御はユーザー・インターフェース・スレッドと構成スレッドとの間で示される。ユーザー・インターフェース・スレッドにおいては、宣言文が解析され、効果が構築され(段階482)、次に、効果を含む視覚的なツリーが構築される(段階484)。構成スレッドにおいては、構成側の視覚的なツリーに相当するものが構築される(段階486)。ユーザー・インターフェース・スレッドに戻ると、効果依存特性は結合され評価される(段階488)。ユーザー・インターフェース・スレッドに存在する間、ユーザー・インターフェース・スレッド・レンダリング・ループは、アニメーションを評価し、構成レンダリングを呼び出す(段階490)。その後、構成スレッドはフレームをレンダリングし(段階492)、効果により視覚的なツリーノード上でヒットをレンダリングする(段階494)。1つの実施例において、次に起こることは、レンダリングされる効果の種類に基づいて異なる(段階496)。マルチパス効果の場合には、効果の実行を制御するために、ApplyShaders方法が構成スレッドから呼び出される。単一パス効果の場合には、構成スレッドが如何なるユーザー・コードも呼び出すことなく効果を単に実行するのに十分な情報が、構成スレッド上に既に存在する。
[0044]図14に示されるように、システムの1つ以上の部分を実施するのに使用するための例示的なコンピューター・システムは、計算装置500などの計算装置を含む。そのほとんどの基本構成において、計算装置500は、通常、少なくとも1つの演算処理装置502及びメモリー504を含む。計算装置の正確な構成及び種類によって、メモリー504は、(RAMなどの)揮発性のものであってもよいし、(ROM、フラッシュ・メモリーなどのように)不揮発性のものであってもよいし、又はこれら2つのある組合せであってもよい。この大部分の基本構成は破線506によって図14に示される。
[0045]さらに、装置500はまた、追加の特徴/機能を有してもよい。例えば、装置500はまた、磁気もしくは光のディスク又はテープを含むがこれらに限定されない、(取り外し可能及び/又は取り外し不能な)追加の記憶装置を含んでもよい。そのような追加の記憶装置は、取り外し可能な記憶装置508及び取り外し不能な記憶装置510によって図14に示される。コンピューター記憶媒体は、コンピューター読み取り可能な命令、データ構造、プログラムモジュール又は他のデータなどの情報の記憶のための任意の方法又は技術において実施される、揮発性及び不揮発性、取り外し可能及び取り外し不能な媒体を含む。メモリー504、取り外し可能な記憶装置508及び取り外し不能な記憶装置510は、すべて、コンピューター記憶媒体の例である。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリーもしくは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、又は所望の情報を格納するために使用することができ且つ装置500によってアクセスできる任意の他の媒体を含むがこれらに限定されない。如何なるそのようなコンピューター記憶媒体も装置500の一部であり得る。
[0046]計算装置500は、計算装置500が他のコンピューター/アプリケーション515と通信することを可能にする1つ以上の通信接続514を含む。装置500はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置512を有してもよい。ディスプレイ、スピーカー、プリンターなどの出力装置511も含まれてもよい。これらの装置は当技術分野において周知であり、ここで詳細に議論する必要はない。
[0047]主題は構造的特徴及び/又は方法論の作用に特有の言語で説明されたが、添付の特許請求の範囲において規定される主題が上述の特定の特徴又は作用に必ずしも限定されないことが理解されるべきである。そのようなものではなく、上述の特定の特徴及び作用は、請求項を実行する例示的な形式として開示されたものである。本明細書に記載されるような実施例及び/又は以下の特許請求の範囲によって記載されるような実施例の趣旨にあるすべての均等物、変更及び修正は保護されることが望まれる。
[0048]例えば、コンピューター・ソフトウェア技術における当業者であれば、本明細書において記載された例が、実施例において表現されたようなものより少ない又は追加のオプション又は機能を含むように、1つ以上のコンピューター上で異なったように組織化することができることを認識するであろう。

Claims (17)

  1. シェーダーの動作を制御するためのシステムであって、
    宣言型プレゼンテーション・フレームワークにおいてシェーダーのインスタンス化及び動作を制御する宣言型言語の宣言文が使用されることを可能にする宣言型のプログラミング・モデルを備え、前記シェーダーはグラフィック処理装置上で実行するように動作可能であり、前記宣言型のプログラミング・モデルは、ソフトウェア・アプリケーションにおけるグラフィック効果のために前記グラフィック処理装置を利用するため、前記ソフトウェア・アプリケーションが前記宣言型のプログラミング・モデルを使用することを可能にし、前記宣言型のプログラミング・モデルはブラシが前記シェーダーへの入力として使用されることを可能にするように動作可能であるシステム。
  2. 前記宣言型言語は拡張マークアップ言語(XML)である請求項1に記載のシステム。
  3. 前記宣言型言語は拡張アプリケーションマークアップ言語(XAML)である請求項1に記載のシステム。
  4. 前記シェーダーは1つ以上のコアを備えた演算処理装置上で実行するように動作可能である請求項1に記載のシステム。
  5. 前記宣言型のプログラミング・モデルは、前記シェーダーによりレンダリングされている効果がどこで入力を得るかを制御するために潜在的な入力が指定されることを可能にするよう動作可能であり、潜在的な入力は、該効果が適用されているユーザー・インターフェース要素をラスタライズすることによって生じる画素ベースのビットマップを含む請求項1に記載のシステム。
  6. 前記宣言型のプログラミング・モデルは1つ以上の依存特性がシェーダー入力に結合されることを可能にするよう動作可能である請求項1に記載のシステム。
  7. 前記宣言型のプログラミング・モデルは、前記シェーダーを実行することによりブラシとして作用する効果ブラシが定義されることを可能にするよう動作可能である請求項1に記載のシステム。
  8. 前記宣言型のプログラミング・モデルは効果が入力をどのように変えるのかをモデル化するよう動作可能である請求項1に記載のシステム。
  9. 効果が入力をどのように変えるのかについてのモデル化は、特定の画素上で前記シェーダーを実行することにより実行される請求項に記載のシステム。
  10. 前記宣言型のプログラミング・モデルは複数パス効果が指定されることを可能にするよう動作可能である請求項1に記載のシステム。
  11. シェーダーベースの効果を定義し宣言型のプログラミング・モデルにおいて前記シェーダーベースの効果を使用する方法であって、
    ソフトウェア・アプリケーションに対してグラフィック効果をレンダリングするために、宣言的に指定されたシェーダーベースの効果をプログラムによって例示化するステップと、
    シェーダーについてグラフィック効果カスタマイゼーションを含む、前記ソフトウェア・アプリケーションのための宣言文にアクセスするステップであって、前記宣言文は宣言型言語で書かれ、前記宣言型言語は拡張マークアップ言語又は拡張アプリケーションマークアップ言語を含む、ステップと、
    前記グラフィック効果カスタマイゼーションを備えた前記ソフトウェア・アプリケーションについて前記シェーダーがグラフィック効果をレンダリングすることを可能にするために、シェーダー・プロセッサーへ前記宣言文を送信するステップであって、前記宣言文はブラシが前記シェーダーへの二次的な入力として使用されることを可能にし、潜在的な入力が前記シェーダーへの入力として使用されることを可能にし、潜在的な入力は、効果が適用されているユーザー・インターフェース要素をラスタライズすることによって生じる画素ベースのビットマップを含む、ステップ
    を備える方法。
  12. 前記宣言文が前記シェーダーによって必要とされるときに、前記宣言文は前記シェーダーの動作の全体にわたってアクセスされる請求項11に記載の方法。
  13. 前記宣言文は、前記シェーダーが実行される演算処理装置を前記グラフィック効果カスタマイゼーションが利用することを可能にする請求項11に記載の方法。
  14. 前記シェーダーは、画素シェーダー、頂点シェーダー及び形状シェーダーからなるグループから選択される種類のシェーダーである請求項11に記載の方法。
  15. 複数パス動作中に実行されるべきシェーダーの組を制御しカプセル化する複数パス効果として宣言型のプログラミング・モデルを利用する方法であって、
    拡張マークアップ言語又は拡張アプリケーションマークアップ言語を含む宣言型言語で書かれた宣言文を使用して、複数パス効果クラスから導出される、複数パス効果のためのカスタム方法を呼び出すステップと、
    前記カスタム方法が前記複数パス効果の動作を制御することを可能にするために、前記カスタム方法がシェーダー・コンテキスト及び制御情報にアクセスすることを可能にするコンテキストを前記カスタム方法に提供するステップと
    を備える方法。
  16. 前記カスタム方法における複数パス効果中のすべてのパスについて前記グラフィック効果カスタマイゼーションが構成スレッド上で呼び出される請求項15に記載の方法。
  17. 前記カスタム方法は適用シェーダー方法を無効にし、前記適用シェーダー方法は、前記カスタム方法における複数パス効果の各パスについてそれぞれのシェーダーをプログラムによって選択するためのロジックを含む請求項15に記載の方法。
JP2010549691A 2008-03-04 2009-01-30 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張 Active JP5281660B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/041,951 2008-03-04
US12/041,951 US8345045B2 (en) 2008-03-04 2008-03-04 Shader-based extensions for a declarative presentation framework
PCT/US2009/032611 WO2009111119A1 (en) 2008-03-04 2009-01-30 Shader-based extensions for a declarative presentation framework

Publications (3)

Publication Number Publication Date
JP2011517803A JP2011517803A (ja) 2011-06-16
JP2011517803A5 JP2011517803A5 (ja) 2012-02-16
JP5281660B2 true JP5281660B2 (ja) 2013-09-04

Family

ID=41053123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010549691A Active JP5281660B2 (ja) 2008-03-04 2009-01-30 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張

Country Status (7)

Country Link
US (1) US8345045B2 (ja)
EP (1) EP2260465A4 (ja)
JP (1) JP5281660B2 (ja)
KR (1) KR101618381B1 (ja)
BR (1) BRPI0907861A2 (ja)
MX (1) MX2010009741A (ja)
WO (1) WO2009111119A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8563314B2 (en) * 2007-09-27 2013-10-22 Sangamo Biosciences, Inc. Methods and compositions for modulating PD1
US20110298816A1 (en) * 2010-06-03 2011-12-08 Microsoft Corporation Updating graphical display content
US9153193B2 (en) * 2011-09-09 2015-10-06 Microsoft Technology Licensing, Llc Primitive rendering using a single primitive type
US8872838B2 (en) * 2011-09-09 2014-10-28 Microsoft Corporation Primitive composition
US9021437B2 (en) * 2012-07-13 2015-04-28 Microsoft Technology Licensing, Llc Declarative style rules for default touch behaviors
US20140191980A1 (en) * 2013-01-04 2014-07-10 Qualcomm Mems Technologies, Inc. System for reuse of touch panel and controller by a secondary display
US20140354658A1 (en) * 2013-05-31 2014-12-04 Microsoft Corporation Shader Function Linking Graph
US9875568B2 (en) * 2013-06-06 2018-01-23 Nvidia Corporation Graphics effect data structure and method of use thereof
US9733823B2 (en) 2015-04-01 2017-08-15 Microsoft Technology Licensing, Llc View activation via hit testing in an asynchronous windowing system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6665194A (en) 1993-08-24 1995-03-21 Taligent, Inc. Object oriented shading
US7548238B2 (en) * 1997-07-02 2009-06-16 Nvidia Corporation Computer graphics shader systems and methods
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US7523406B2 (en) * 2003-07-22 2009-04-21 Autodesk Inc. Dynamic parameter interface
US7212206B2 (en) * 2003-08-20 2007-05-01 Sony Computer Entertainment Inc. Method and apparatus for self shadowing and self interreflection light capture
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US20050243085A1 (en) * 2004-05-03 2005-11-03 Microsoft Corporation Model 3D construction application program interface
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
US7868891B2 (en) * 2004-09-16 2011-01-11 Nvidia Corporation Load balancing
US20060071933A1 (en) * 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
US7376894B2 (en) * 2004-11-18 2008-05-20 Microsoft Corporation Vector path merging into gradient elements
US7427986B2 (en) * 2005-03-03 2008-09-23 Pixar Hybrid hardware-accelerated relighting system for computer cinematography
EP1907964A4 (en) * 2005-07-01 2009-08-12 Mental Images Gmbh Computer Graphics Schader Systems and Methods
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
JP4718993B2 (ja) * 2005-12-26 2011-07-06 株式会社東芝 描画装置及び描画方法
JP2007193655A (ja) 2006-01-20 2007-08-02 Sharp Corp 電子ドキュメントデータ処理装置、電子ドキュメントデータ処理方法およびコンピュータを電子ドキュメントデータ処理装置として機能させるためのプログラム
US8261270B2 (en) * 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US8203558B2 (en) * 2008-01-28 2012-06-19 Apple Inc. Dynamic shader generation

Also Published As

Publication number Publication date
WO2009111119A1 (en) 2009-09-11
KR101618381B1 (ko) 2016-05-18
US20090225079A1 (en) 2009-09-10
EP2260465A1 (en) 2010-12-15
KR20100123853A (ko) 2010-11-25
US8345045B2 (en) 2013-01-01
MX2010009741A (es) 2010-09-28
BRPI0907861A2 (pt) 2015-07-21
EP2260465A4 (en) 2017-01-25
JP2011517803A (ja) 2011-06-16

Similar Documents

Publication Publication Date Title
JP5281660B2 (ja) 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張
US10026147B1 (en) Graphics scenegraph rendering for web applications using native code modules
JP4290477B2 (ja) ベクターグラフィック用のマークアップ言語およびオブジェクトモデル
US8294723B2 (en) Hardware-accelerated graphics for web applications using native code modules
US20120174079A1 (en) Systems and methods for simulating a mobile device application
US11113876B2 (en) Method for displaying a 3D scene graph on a screen
US9710950B2 (en) Extensible sprite sheet generation mechanism for declarative data formats and animation sequence formats
EP3137985B1 (en) Method and system to create a rendering pipeline
Cozzi et al. OpenGL insights
EP3356932A1 (en) System and method for using ubershader variants without preprocessing macros
US20150348315A1 (en) Dynamic Lighting Effects For Textures Without Normal Maps
US20130080879A1 (en) Methods and apparatus providing document elements formatting
Movania OpenGL Development Cookbook
US9052924B2 (en) Light-weight managed composite control hosting
Martz OpenGL distilled
US9508108B1 (en) Hardware-accelerated graphics for user interface elements in web applications
US11244419B2 (en) Method and apparatus for hardware accelerated graphics rendering in bridge APIs
US8203567B2 (en) Graphics processing method and apparatus implementing window system
CN116503529A (zh) 渲染、3d画面控制方法、电子设备和计算机可读存储介质
Stenning Direct3D Rendering Cookbook
US9069905B2 (en) Tool-based testing for composited systems
Baruah et al. Up and Running with WebGL
Bossard High-performance graphics in Racket with DirectX
Nardone et al. Efficient graphics and portability with OpenGL ES
Sharan et al. Introduction to JavaFX

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111221

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130321

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130524

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5281660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250