JP2005521179A - シェーダプログラムを発生するシステム、方法およびコンピュータプログラム製品 - Google Patents

シェーダプログラムを発生するシステム、方法およびコンピュータプログラム製品 Download PDF

Info

Publication number
JP2005521179A
JP2005521179A JP2003582713A JP2003582713A JP2005521179A JP 2005521179 A JP2005521179 A JP 2005521179A JP 2003582713 A JP2003582713 A JP 2003582713A JP 2003582713 A JP2003582713 A JP 2003582713A JP 2005521179 A JP2005521179 A JP 2005521179A
Authority
JP
Japan
Prior art keywords
file
graphics
shader program
interface
shader
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.)
Granted
Application number
JP2003582713A
Other languages
English (en)
Other versions
JP4191614B2 (ja
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 JP2005521179A publication Critical patent/JP2005521179A/ja
Application granted granted Critical
Publication of JP4191614B2 publication Critical patent/JP4191614B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

Abstract

シェーダプログラム160を発生する(図1A−1)ための方法およびコンピュータプログラム製品202が提供される。最初に、グラフィックス効果と関連付けられたファイル202が選択される。その後、このようなファイル202が読出されて処理される。続いてこのファイルの処理に基づいて、シェーダプログラム160が発生され、そのグラフィックス効果をオブジェクトに適用する。

Description

本発明は、コンピュータグラフィックスに関し、とくに、グラフィックスパイプライン内におけるシェーディング操作に関する。
3Dグラフィックスの描写および表示は、典型的に、多くの計算およびコンピュータ操作を必要とする。たとえば、3Dオブジェクトを描写するために、描写されるオブジェクトを規定する座標点または頂点のセットが形成されなければならない。頂点は線で結ばれ、描写され、表示されるべきオブジェクトの表面を規定する多角形を形成することができる。オブジェクトを規定する頂点が形成されると、その頂点はオブジェクトまたはモデル基準系からワールド基準系に、および最終的には、モニタのような平坦な表示装置上に表示されることのできる2D座標に変換されなければならない。頂点は可視領域外に位置しているため、それらは途中で回転、スケール、削除、あるいはクリップを行われ、種々の照明方式および照明源によって照明され、彩色等をされてもよい。3Dオブジェクトを描写し、表示するのに必要とされるプロセスは、計算集中的なものに
なる可能性が高く、非常に多くの頂点を必要とする可能性がある。
3Dコンピュータグラフィック表示を生成するために、第1のステップは、描かれることとなるオブジェクトをコンピュータ内で数学的モデルとして表現することである。3Dモデルは、x、yおよびz軸からなる座標系内の幾何学的な点から構成され、これらの軸は幅、高さおよび深さにそれぞれ対応している。オブジェクトは、一連の、頂点と呼ばれる点によって規定されている。ある点、すなわち、頂点の位置は、そのx、yおよびz座標によって規定される。これらの点の3個以上のものが線で結ばれたとき、ある多角形が形成される。最も簡単な多角形は、三角形である。
3D形状は、多数の2D多角形を線で結びつけることにより生成される。曲面は多数の小さい多角形を結びつけることによって表される。多角形のアウトラインから構成された3D形状のビューは、ワイヤフレームビューと呼ばれる。要するに、コンピュータは多数の2D多角形を結びつけることにより3Dオブジェクトを生成する。しかしながら、3Dオブジェクトが最終的に2D表示スクリーン上に描写される前に、非常に複雑なグラフィックスオブジェクトのデータは、著しく専用化された方程式および3D表現に特有の処理を含む多数の異なった数学的変換を行われなければならない。
3D描写(レンダリング)システムは、かなり前からオブジェクトの“外観”をパラメータにしたがって描写することができている。これらおよびもっと新しい方法は、オブジェクトの表面の位置および向きならびにそれを照明する光源に基づいて、そのオブジェクトの知覚された色のパラメータ化を行う。それを行っているときに、それらからオブジェクトの外観が計算される。パラメータはさらに、拡散色、鏡面反射係数、鏡面の色、反射率、およびオブジェクトの材料の透明度のような値を含んでいる。このようなパラメータは、まとめて、オブジェクトのシェーディングパラメータと呼ばれている。
初期のシステムは、ある単一の値をシェーディングパラメータに属するものと考えることしかできず、したがって、それらはオブジェクトの表面全体にわたって一定不変で均一なままであった。後期のシステムは、オブジェクトの種々の部分に対して種々の値を有する可能性のある均一でないパラメータ(たとえば、透明度)の使用を考慮に入れた。2つの重要で明確な技術である手続き的シェーディングおよびテクスチャマッピングは、オブジェクトの表面の種々の部分に関してこれらの均一でないパラメータによりとられる値を描写するために使用されている。テクスチャマッピングは画素ベースであり、また、解像度依存性である。
手続き的シェーディングは、1D、2Dまたは3D空間の任意の地点における材料の外観を、この空間中においてある機能(しばしば、手続き的シェーダと呼ばれる)を規定することによりシェーディングパラメータ空間中に描写する。オブジェクトは元の1D、2Dまたは3D空間に“埋め(immerse)られ”、そのオブジェクトの表面の所定の点におけるシェーディングパラメータの値は、この点における手続き的シェーディング機能の結果として定義される。たとえば、樹木、大理石または別の天然素材の外観を近似する手続き的シェーダが開発されており、文献に記載されている。
コンピュータシステム中でのグラフィックスデータの描写はリソース集中プロセスの集まりである。シェーディングのプロセス、すなわち、グラフィックスデータ構造に関連した色等のあるプリミティブの値を決定するために使用される専用化されたグラフィックスデータ構造のセットに関する複雑な技術を行うプロセスは、このような計算集中的で複雑なプロセスを例示する。各アプリケーション開発者が開発された各プログラム対してこれらのシェーディング技術を設計し、および、または潜在的にさまざまである第3パーティのグラフィックスハードウェアに対して各プログラムを設計することは非常に困難な作業であり、矛盾が生じる。
当然の結果として、一般に、シェーディングのプロセスは、ある程度正規化されている。シェーダと共に動作するように設計されたソースコードをアプリケーションに送ることにより、シェーダは、そのアプリケーションが複雑なビデオグラフィックスの効率的な描写を容易にするために生成する/使用することのできるオブジェクトになる。頂点シェーダと画素シェーダがこのようなシェーダの例である。
現在の専用化されたハードウェアチップにおける構成の前には、頂点および画素は時として完全にまたはほぼソフトウェアコードとして構成され、また、時にはハードウェアのもっと堅牢な部分とそのハードウェアを制御するソフトウェアの組合せとして構成された。これらの構成はCPUを含むか、あるいはシステムのCPUを使用するものの存在をエミュレートすることが多かった。たとえば、ハードウェア構成は、シェーディングタスクの必要とされる処理機能を行うためにCPUチップをそれらの設計中に直接集積した。標準的な処理チップが提供する機能の範囲のために、CPUは多くのフレキシビリティをシェーディングプロセスに付加するが、CPUの組込みはオーバーヘッドを専用化されたシェーディングプロセスに付加する。しかしながら、今日のような最新のハードウェア技術が存在しなかったために、選択肢はほとんどなかった。
しかし、ハードウェアテクノロジーにおける現在の進歩は、前にソフトウェアで実施された機能を専用化されたハードウェアに移動する能力を促進している。結果的に、今日の画素および頂点シェーダは、専用化されたプログラム可能なハードウェアチップとして構成されている。
残念ながら、新しい頂点および画素エンジンのようなプログラミングは、これまで要求されたことのないアートおよびコードリソースの組合せを必要とする。いくつかのデジタル内容生成(DCC)アプリケーションは、それらが進行する限り、頂点および画素シェーダをサポートする優れたジョブを行っているが、しかし、アーティストを一人前のシェーダプログラマーにすることなく、種々のシェーデイングオプションでプレイすることを可能にする方法は明らかになっていない。
シェーダプログラムを発生するための方法およびコンピュータプログラム製品が提供される。最初に、グラフィックス効果と関連付けられたファイルが選択される。その後、このようなファイルが読出されて処理される。シェーダプログラムは、それに続いてこのファイルの処理に基づいて発生され、そのグラフィックス効果をオブジェクトに適用する。したがって、シェーダプログラムは、表示または別の目的のためにオブジェクトに対して適当に適用されてもよい。
1実施形態において、ファイルは、特有のグラフィックス効果にそれぞれ関連付けられたファイルのライブラリから選択されることができる。さらに、ファイルは、種々のグラフィックスアプリケーションプログラムインターフェースに対してシェーダプログラムを発生するように処理されることのできるインターフェースデータを含んでいてもよい。同様に、ファイルは、種々のハードウェアグラフィックスパイプラインプラットホームに対してシェーダプログラムを発生するように処理されることのできるインプリメンテーションデータを含んでいてもよい。したがって、ファイルは、種々の異なったグラフィックスアプリケーションプログラムインターフェース[すなわち、OpenGL(R)、Direct3D(登録商標)、等]および種々のプラットホーム(すなわち、種々の企業によって製造されているハードウェアグラフィックスチップ)と協力して動作するシェーダプログラムを発生するやり方で処理されてもよい。
別の実施形態において、ファイルは、拡張可能なマークアップ言語(XML)で書込まれてもよい。さらに、ファイルはテキストファイルを含んでいてもよい。またさらに、選択、読出し、処理および発生は、インターフェース[すなわち、コンポーネントオブジェクトモデル(COM)]、プラグイン等を使用して行われてもよい。
オプションとして、ファイルは、そのファイルに関連付けられたグラフィックス効果を識別する本文描写オブジェクトを有するデータ構造の形態をとってもよい。さらに、シェーダプログラムを発生するために必要な要求を識別する要求オブジェクトが設けられていてもよい。
したがって、ファイルは要求を含んでおり、その要求に基づいてシェーダプログラムが発生されてもよい。一般に、要求は、随意に注文にしたがって変更されることのできる要求の省略時セットを含んでいてもよい。随意で、その要求はコールバック機能を含んでいてもよい。
ファイルはさらに、複数の動作環境(すなわち、プラットホームインプリメンテーション、インターフェース等)においてグラフィックス効果を実行することができる複数のシェーダコードセグメントとを含んでいてもよい。このようなシェーダコードセグメントは、種々の動作環境に関して編成されることができる。したがって、この実施形態は、随意に、所望のシェーダコードセグメントを得るための基準として使用されることができる。
1つの特定の実施形態の動作中、インターフェースを初期化することが処理に含まれてもよい。このような処理にはさらに、注文タイプおよび、または注文機能を登録することが含まれてもよい。したがって、シェーダプログラムは、登録された注文タイプおよび、または注文機能に基づいて発生されることができる。この特徴により、この実施形態は、ユーザが結果的に得られるしぇーだプログラムをカストマイズすることを可能にする。
さらに、複数のオブジェクトを設定し、オブジェクトの1つを選択し、複数のグラフィックス効果の1つを選択し、描写パスを選択し、描写パスを設定し、選択されたグラフィックスオブジェクトによりオブジェクトを描くことが処理に含まれてもよい。オプションとして、描写パスは、シェーダプログラムがパラメータに基づいて発生されるようにそのパラメータを指示することによって設定されてもよい。さらに、オブジェクトは選択されたグラフィックス効果によってアプリケーションにより提供された属性を使用して描かれてもよい。
レンダリングパスの期間中、描写パスがもっと存在するか否かが決定され、描写パスがもっと存在する場合は別の描写パスが選択されてもよい。さらに、オブジェクトがもっと存在するか否かが決定され、オブジェクトがもっと存在する場合は別のオブジェクトが選択されてもよい。またさらに、グラフィックス効果がもっと存在するか否かが決定され、グラフィックス効果がもっと存在する場合は別のグラフィックス効果が選択されてもよい。
上述した機能を行うために使用されることのできる1例のシステムは、インターフェースと、ファイルを処理するために協力するアプリケーションプログラムとを備えていてもよい。したがって、オブジェクトにグラフィックス効果を適用するために、シェーダプログラムはファイルの処理に基づいて発生される。
最初に述べたように、処理には、複数のオブジェクトを設定することが含まれる。このシステム実施形態に関連した適用から見ると、これは、グラフィックス効果に関連したファイルを選択し、グラフィックスアプリケーションプログラムインターフェースを選択し、この選択に基づいて複数の種々のハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを受取ることによって行われてもよい。次に、インプリメンテーションデータに基づいてパラメータが受取られる。さらに、どのハードウェアグラフィックスパイプラインプラットホームを使用すべきかが少なくとも部分的にパラメータに基づいて決定されてもよい。この決定により、シェーダプログラムは、適切なハードウェアグラフィックスパイプラインプラットホームにより使用されるために発生される。
オプションとして、どのハードウェアグラフィックスパイプラインプラットホームが使用されるかに関する決定は、パラメータが提供されることができるか否かに基づいてもよい。さらに、どのハードウェアグラフィックスパイプラインプラットホームが使用されるかに関する決定は、パラメータがアプリケーションによって理解された(すなわち、正しく解釈されることができる)か否かに基づいている。このような決定がなされると、オブジェクトの属性がパラメータにマップされる。
このシステム実施形態に関連したインターフェースから見ると、オブジェクトは複数の異なったハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを発生することにより設定される。その後、そのインプリメンテーションデータに基づいて、パラメータが発生される。さらに、インターフェースはアプリケーションと協力して、どのハードウェアグラフィックスパイプラインプラットホームが使用されるべきかに関する決定をパラメータに基づいて行う。
随意選択に、インプリメンテーションデータは、種々のハードウェアグラフィックスパイプラインプラットホームが複数の要求を満足させるか否かを決定することにより発生されてもよい。インプリメンテーションデータはさらに、要求を満たす種々のハードウェアグラフィックスパイプラインプラットホームを分類することにより発生されてもよい。
ライセンス契約を発生するコンピュータ実施方法は上述したフレームワークに関連付けられる。最初に、メモリ中に記憶されたライセンス契約が識別される。次に、このライセンス契約に関連付けられたファイルが識別される。その後、1以上のファイルが分配可能であるか否かが決定される。1以上のファイルが分配可能でないことが決定された場合、非公開項がライセンス契約中に含まれる。
ファイルが分配可能であるか否かを決定する別のコンピュータ実施方法が提供される。このような方法は、メモリ中に記憶されたファイルを識別し、ファイルが分配可能であるか否かを決定し、ファイルが分配可能であるか否かを単に示すことを含んでいてもよい。
ユーザがシェーダプログラムを視覚的に実験して使用することを可能にするために、オプションのグラフィックユーザインターフェースが提供される。使用において、上述のグラフィックス効果はこのようなグラフィックユーザインターフェースを使用して表示されてもよい。さらに、グラフィックス効果は、ユーザによりそのグラフィックユーザインターフェースを使用して変更されることが可能であってもよい。とくに、グラフィックス効果は、パラメータを変更することにより変更されることが可能であってよく、また、この変更されたパラメータに基づいてシェーダプログラムが発生されてもよい。このようなパラメータは、上述したファイルをツイーク(tweak)することによって変更されてもよい。
また、ユーザが1つのグラフィックス効果を選択することを可能にするために複数のグラフィックス効果が表示される別のグラフィックユーザインターフェースが提供されることができる。このような選択されたグラフィックス効果は、その後オブジェクトに適用されたときにファイルを使用して表示される。さらに、そのファイルはユーザ入力に基づいて修正され、このファイルは処理される。このようにして、シェーダプログラムはファイルの処理に基づいて発生されてもよい。
さらにオプションとして、インターフェースはプリミティブを発生することができる。さらに、ファイルは名称、タイプおよび内容を含む構文を含んでいてもよい。またさらに、ファイルは、コンパイルされたコードとコンパイルされていないコードの両者を参照とすることが可能であってもよい。
本発明のこれらおよびその他の利点は、以下の詳細な説明および添付図面から明らかになるであろう。
上記およびその他の特徴および利点は、本発明の好ましい実施形態の以下の詳細な説明から図面を参照とすることによりさらによく認識される。
図1Aは、1実施形態によるデジタル処理システムのブロック図である。図1Aを参照とすると、コンピュータ10を使用して構成されることのできるコンピュータグラフィックスシステムが提供される。コンピュータ10は、通信バス12に接続されたプロセッサ11のような1以上のプロセッサを備えている。バス12は1以上の集積回路により構成され、ある論理機能を行うことが可能であり、たとえば、典型的なパーソナルコンピュータはノースブリッジ(north bridge)およびサウスブリッジ(south bridge)チップとして知られているチップを備えている。コンピュータ10はまた、主メモリ14を備えている。制御論理(ソフトウェア)およびデータは、ランダムアクセスメモリ(RAM)の形態をとってもよい主メモリ14中に記憶される。コンピュータはまたハードウェアグラフィックスパイプライン18と、および表示装置20、すなわち、コンピュータモニタとを備えている。
コンピュータ10はまた、補助記憶装置16を備えている。補助記憶装置16は、たとえば、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ等を代表するハードディスクドライブおよび、または取外し可能な記憶装置ドライブを備えている。取外し可能な記憶装置ドライブは、取外し可能な記憶装置からの読出しおよび、またはそれに対する書込みをよく知られているやり方で行う。コンピュータプログラム、またはコンピュータ制御論理アルゴリズムは主メモリ14および、または補助記憶装置16中に記億されている。このようなコンピュータプログラムは、実行されたときに、コンピュータ10が種々の機能を行うことを可能にする。したがって、メモリ14および記憶装置16はコンピュータ読出し可能な媒体の例である。
1実施形態において、以下に説明される技術は、ハードウェアの形態をとることのできるハードウェアグラフィックスパイプライン18により行われる。このようなハードウェア構成は、マイクロ制御装置または任意の別のタイプの注文または特定用途向け集積回路(ASIC)を備えていてもよい。さらに別の実施形態においては、本発明の方法は、コンピュータ10の主メモリ14および、または補助記憶装置16中に記億されたコンピュータプログラムによりプロセッサ11上で部分的に行われることができる。以下、図1A−1を参照としてハードウェアグラフィックスパイプライン18に対する1つの例示的なアーキテクチャを説明する。
図1A−1は、図1Aのハードウェアグラフィックスパイプライン18の例示的な1実施形態の内部構造を示すさらに詳細な図を示している。示されているように、プリミティブをスクリーン整列座標系に変換する幾何学ステージ151が提供される。この幾何学ステージ151によって、プリミティブを描く各頂点の視覚プロパティ(たとえば、色、曲面法線、テクスチャ座標)を決定する照明のような別の計算が行われてもよい。
変換された頂点は、ラスター化装置152に対する入力を形成する。このラスター化装置152は、各プリミティブによってカバーされた各画素に対するフラグメントを計算する。フラグメントと共に記憶されているカバレージマスクは、そのフラグメントが画素のどの部分をカバーするかを示す。
たとえば、テクスチャマップまたはシェーダプログラムをフラグメントに適用すること等により最終的なフラグメントを計算するシェーダ153もまた含まれている。このようなシェーダプログラムは種々の方法で発生されることができる。以下、シェーダプログラムを発生する1つのシステムおよび方法を詳細に説明する。この説明においては、シェーダプログラムは、頂点シェーダプログラム、画素シェーダプログラム、、またはシェーディングを行うことのできる任意の別のタイプのプログラムを指すことができることを認識すべきである。オプションのサンプル拡張ステージ154は各フラグメントに対する多数のサンプルを発生する。
図1A−1を引き続き参照とすると、マルチサンプリング後、個々のサンプルは、それらがまるで正規のフラグメントであるかのようにラスタープロセッサ(ROP)155に送られる。ラスタープロセッサ155は、z/ステンシルテストおよびカラーまたはアルファブレンドを行うことを含む種々の操作をフラグメントに関して行う。これは、ラスタープロセッサ155があて先Zまたはあて先カラーを検索するためにフレームバッファメモリ156を読出すことを必要とする可能性がある。その後、最終的な画素カラーおよびZは、フレームバッファメモリ156に戻されて書込まれる。
情景中の全てのプリミティブがこの方法で描写されたとき、フレームバッファメモリ156の内容はビデオリフレッシュ装置157によって走査され、表示装置20に送られる。
1実施形態において、フレームバッファメモリ156(および、おそらく、テクスチャメモリのような別のメモリ)を除くグラフィックスシステム106の上述したコンポーネントの全てが単一の半導体プラットホーム上に配置されてもよい。当然ながら、種々のモジュールもまた、ユーザの所望にしたがって別々に、あるいは半導体プラットホームの種々の組合せで配置されてもよい。
図1Aおよび1A−1に示された種々のコンポーネントと協力するインターフェースが使用されてもよい。1実施形態において、このようなインターフェースは少なくとも部分的に、Open Graphics Library[Open GL(R)]、Direct3D(登録商標)アプリケーションプログラムインターフェース(API)、プロプラエタリアプリケーションプログラムインターフェース等を備えていてもよい。
使用において、図1A−1に示されているシェーダ153により使用されるためにシェーダプログラムが発生されてもよい。最初に、あるグラフィックス効果と関連付けられた単一のファイルが選択される。その後、このようなファイルは読出されて処理される。この説明に関連して、あるファイルは、情報を通信することのできる任意のタイプのデータ構造、データ流、ネットワーク接続等を含んでいてもよい。グラフィックス効果をオブジェクトに適用するために、シェーダプログラムが続いてファイルの処理に基づいて発生される。以下、このような機能を行うときの種々の例示的な技術をさらに詳細に説明する。
図1A−2は、1実施形態にしたがってシェーダプログラムを発生するために使用されることのできる例示的なファイル160を示している。このファイル160は、図1Aおよび1A−1の上述したアーキテクチャにおいて、あるいは所望される任意の別のアーキテクチャにおいてシェーダプログラムを発生するために使用されてもよいことを認識すべきである。
例示的なファイル160は付録Aに示されている。付録A中の行は参照のために番号を付けられている。
1実施形態において、ファイル160は、特有のグラフィックス効果とそれぞれ関連付けられたファイルのライブラリから選択されてもよい。内部的に、このようなライブラリは特定のクラスを使用してもよい。このようなクラスは、ファイルシステムに非常によく似た階層データベースであってもよい。それはリンクと機能をサポートし、ユーザ定義タイプおよび機能が既存の機能と置き換わり、混合することを可能にしてもよい。正規の機能と同じ構造を有する揮発性機能を含む別の機能もまた含まれていてもよいが、しかしながら、揮発性機能は常に実行される。さらに、正規の機能の場合のように、パラメータ依存性が変化したか否かをチェックするのに時間は費やされない。揮発性機能と呼ばれる機能はいずれも、その機能の継続期間中は揮発性のものとして扱われる。クラスは、ファイル160が実行時に記憶およびアクセスされることのできる場所である。さらに、クラスは、デバッグおよびアーカイビングを容易にするためにテキストに何時でもダンプされることができる。
オプションとして、クラスは、リンクが同じタイプの有効フィールドを指示していること、および機能が十分に形成されていることを確認するためにコンパイルされてもよい。オプションとして、機能ストリングは内部バイトコードスタイル表現にコンパイルされてもよい。クラスはまた、ある機能が呼出されない場合にはそれが決してコンパイルされないように、ジャストインタイムコンパイレーションをサポートすることができる。リンクおよび機能が正しく、かつ完全に特定されていることを確実にすることが必要とされたとき、クラスのサブツリーがコンパイルされてもよい。
別の実施形態において、ファイル160は、拡張可能なマークアップ言語(XML)で書込まれてもよい。さらに、ファイル160はテキストファイルを含んでいてもよい。付録Aに示されている例示的なファイル160はXMLで書込まれたものである。
オプションとして、ファイル160は、種々のハードウェアグラフィックスパイプラインプラットホームに対するシェーダプログラムを発生するように処理されることのできるインプリメンテーションデータ161を含んでいてもよい。たとえば、インプリメンテーションデータ161は種々のプラットホーム(すなわち、種々の目的のための、種々のグラフィックス社製のハードウェアグラフィックスチップ)を表現することができる。
さらに、ファイル160は、種々のグラフィックスアプリケーションプログラムインターフェースに対するシェーダプログラムを発生するように処理されることのできるインターフェースデータ162を含んでいてもよい。とくに、ファイル160は、種々の異なったグラフィックスアプリケーションプログラムインターフェース[すなわち、Open GL(R)、Direct3D(登録商標)等]と協力して動作するシェーダプログラムを発生するやり方で処理されてもよい。付録Aにおいて、30行目のタグ“<imps>”はインプリメンテーションを示し、31行目および378行目のタグ“<imps>”はDirectX(登録商標)8およびOpen GL(R)のインプリメンテーションの開始をそれぞれ示している。
引き続き図1A−2を参照とすると、ファイルと関連付けられたグラフィックス効果を、直観的に分かるテキストを使用して識別する本文描写オブジェクト164が提供される。たとえば、グラフィックス効果は、図1A−2および付録Aの2および3行目に示されているように“shiny”特性を含んでいてもよい。もちろん、任意の別のタイプの視覚効果(すなわち、モーションブラー等)が本文描写オブジェクト164によって描写されてもよい。このような本文描写オブジェクト164は、発生されるべきシェーダプログラムに関連付けられたグラフィックス効果が直観的に識別されることを可能にすることが理想的である。
さらに、シェーダプログラムを発生するために必要な要求を識別するために少なくとも1つの要求オブジェクト166が提供される。示されているように、種々の要求は、パス識別子168によって識別された複数の描写パスのそれぞれに対して示されている。たとえば、各描写パスは、タンジェントスペース要求、テクスチャタイプ要求、またはシェーダプログラムを正しく表示するために必要とされる任意の他のタイプの機能だけでなく、要求された種々のテクスチャ、描写状態、マルチパス効果、およびLベクトルのソースもまた有していてもよい。随意的に、要求はコールバック機能を含することさえ可能である。
付録Aにおいて、DirectX8に対する要求は、示されている3つのインプリメンテーションに対して潜在的に異なっている:(1)32行目から始まるインプリメンテーション1は、37乃至50行に示された要求を有している;(2)185行目から始まるインプリメンテーション2は、190乃至199行に示された要求を有している;(3)282行目から始まるインプリメンテーション3は、287乃至296行に示された要求を有している。インプリメンテーション2および3は同じ要求を有しているが、しかしインプリメンテーション1は別の要求を有していることに注意されたい。
一般に、要求は、随意に注文にしたがって変更されることのできる要求の省略時セットを含んでいてもよい。このような注文に応じて変更可能な要求、すなわち“ツイーカブルズ(tweakables)”は、アーティストにより制御可能な特定シェーダ項に対するパラメータを表現する。ツイーカブルズはシェーダプログラムによって要求されるが、必ずしも標準的なツール路を通って公表されるとは限らない。シェーダプログラムの著者は、ショーダプログラムのどの部分をアーティスト操作にさらすべきかを決定してもよい。ツイーカブルズは、透明度ファクタからアルファブレンドファクタまでを範囲とする任意の要求を示すことができる。表1は、図1A−1のファイル160との関連において例示的なツイーカブルズを示している。
Figure 2005521179
付録Aにおいて、ツイーカブルズは14乃至29行に示されている。ツイーカブルズは一般に全てのインプリメンテーションに適応するため、それらは一般にインプリメンテーションの任意のものの指定外である。この例においては、最小値(22および23行目)、最大値(24および25行目)、ならびにステップサイズ(26および27行目)が含まれている。
さらに、複数の動作環境においてグラフィックス効果を実行することのできる複数のシェーダコードセグメント170はファイル160を提供される。示されているように、このようなシェーダコードセグメント170は、名称、タイプおよび内容を含む構文を含んでいる。さらに、ファイルはコンパイルされたシェーダプログラムコードとコンパイルされていないシェーダプログラムコードの両者を参照とすることが可能であってもよい。
図1A−2に示されているように、シェーダコードセグメント170は、種々の動作環境に関して編成されることができる。したがって、この実施形態は随意に、所望のシェーダコードセグメント170を獲得するための基準として使用されてもよい。
付録Aにおいて、シェーダコードの一例は60乃至88行に示されている。
表2は、Direct3D(R)8における1つの例示的なシェーダインプリメンテーションの種々のエレメントの要約を示している。
表 2
1.プリアンブル/宣言:これらのエレメントは、特定のインプリメンテーション/インターフェースに対して優先権を与え、そのインプリメンテーション/インターフェースのストリング描写を行う。
2.要求:これらは、インプリメンテーション/インターフェースが正しく実行するための種々の要求を特定する。とくに、それらは、シェーダに対して必要とされるD×8の大文字を含んでいる。全ての要求は、タイプ“bool”まで評価を行う。
3.テクスチャハンドル:これらは、テクスチャファイル(すなわち、png、dds、tga等)中のデータから、あるいは正規化立方マップのような発生されたテクスチャから生成されたテクスチャハンドルを示している。このハンドルはファイルの後続するセクションにおいて参照されることができ、また、描写パスまたはテクスチャ装置とは無関係である。
4.頂点シェーダ&画素シェーダハンドル:これらは、コンパイルされたシェーダストリングから、あるいは予めコンパイルされたシェーダファイルから生成されたd×8の提供されたハンドルである。ハンドルはファイルの後続するセクションにおいて参照されることができ、また、描写パスまたはテクスチャ装置とは無関係である。頂点シェーダが適用されることをユーザが所望しない場合、ハンドルは、使用されているFVFコードに設定されてもよい。ユーザがパスとして画素シェーダを指定しなかった場合、それはゼロに設定され、それによって画素シェーディングがオフに切替えられる。
5.頂点マッピング:このセクションは、強く勧告され、奨励されているが、しかし随意である。これは、種々の頂点属性(v0,v1,v5のような)の意味がシェーダプログラムにおいて特定される可能性がある場合である。マッピングを特定し、シェーダプログラムをストリング形式で公表することにより、種々の幾何学レイアウトを有するアプリケーションは、そのシェーダプログラムが新しい幾何学フォーマットにより書き直されることができる。
6.シェーダインプリメンテーションは、それぞれが特有の描写状態、テクスチャステージ状態、頂点マッピング、画素および頂点シェーダを有する多くの描写パスを含んでいることができる。
7.システムの省略時描写およびテクスチャステージ状態を表現するファイルが存在してもよい。描写状態またはテクスチャステージ状態がシェーダプログラムのパスにおいて指定されなかった場合、それはファイルにおいて省略時状態にリセットされる。そのファイルを使用することにより、同じファイルを使用するシェーダプログラムの共同利用性が改善されることができる。変更を行うことが所望されない場合、そのようにすることは可能であるが、しかし描写状態の変化を反映するようにシェーダを更新しなければならないという犠牲を伴なう。
表3は、OpenGL(R)における例示的なシェーダインプリメンテーションの種々のエレメントの要約を示している。
表 3
1.プリアンブル/宣言:これらのエレメントは、インプリメンテーション/インターフェースに対して優先権を与え、そのインプリメンテーション/インターフェースのストリング描写を行う。
2.要求:これらは、インプリメンテーション/インターフェースが正しく実行するための種々の要求を特定する。とくに、それらは、シェーダに対して必要とされるOpenGL(R)拡張子を含んでいる。これらが利用できない場合、OpenGLインプリメンテーションはシェーダプログラムをロードすることができない。
3.テクスチャハンドル:これらは、テクスチャファイル(すなわち、png、dds、tga等)中のデータから、あるいは正規化立方マップのような発生されたテクスチャから生成されたテクスチャハンドルを示している。ハンドルはファイルの後続するセクションにおいて参照されることができ、また、描写パスまたはテクスチャ装置とは無関係である。
4.シェーダインプリメンテーションは、それぞれが特有の頂点プログラム、テクスチャシェーダおよびレジスタ結合装置定義を有する多くの描写パスを含んでいることができる。
図1Bは、1実施形態によるシェーダプログラムを発生する方法1000を示している。この方法1000は、一般に、1以上の3次元オブジェクトでイメージを描写するアプリケーションプログラムの制御下において行われる。この方法1000は上述した図面のフレームワークにより実施されてもよいが、それは任意の所望のアーキテクチャおよびデータ構造により容易に実施されることができる。オプションとして、インターフェース[すなわち、コンポーネントオブジェクトモデル(COM)]、プラグイン等を使用して種々の動作が行われることができる。さらに、シェーダプログラムを発生するために必要とされる処理の過程中、種々のステップが随意に除外され、および、または再追加されることができる。
最初に、動作1020においてインターフェースを初期化することが処理に含まれてもよい。好ましい実施形態において、インターフェースは、効果のライブラリへのAPIであり、プラグインとして構成されることができる。次に、動作1040において、任意の数の注文タイプおよび注文機能が登録される。したがって、シェーダプログラムは登録された注文タイプおよび、または注文機能に基づいて発生されることができる。この特徴により、この実施形態は、ユーザが結果的に得られるシェーダプログラムをカストマイズすることを可能にする。
次に、描写されるオブジェクトの1つが動作1060において選択され、その後、動作1080においてこのようなオブジェクトが設定される。この設定プロセスは、決定1090によって示されているように、描写される複数のオブジェクトのそれぞれに対して行われる。このようにして、複数のオブジェクトが設定される。この処理は、シェーダプログラムが使用される環境と関連付けられたインプリメンテーションおよびインターフェースに関する種々の情報を採取することによりシェーダプロセッサの発生を容易にする。以下では、このような設定動作の例示的な実施形態が図2乃至4を参照として詳細に説明される。
引き続き図1Bを参照とすると、オブジェクトの1つが複数のグラフィックス効果の1つおよびある描写パスと共に選択される。これは、動作1100乃至1140で示されている。その後、選択された描写パスは動作1160において設定され、その後、動作1180により示されているように、選択されたオブジェクトが選択されたグラフィックス効果により描かれる。オプションとして、パラメータを指示することにより描写パスが設定されてもよい。その後、そのパラメータに基づいて、シェーダプログラムが発生されてもよい。さらに、オブジェクトは選択されたグラフィックス効果によりあるアプリケーションよって提供された属性を使用して描かれてもよい。描写パス設定1160の期間中にパスされないパラメータは、一般に、ファイル160において提供された省略時値を使用する。パラメータは任意の順序で提供されることができ、また、パラメータへのポインタを使用することにより、パラメータが複数のオブジェクトの間で共用されるメカニズムが提供される。
レンダリングパスの期間中、決定1200により示されているように、描写パスがもっと存在しているか否かが決定されてもよく、描写パスがもっと存在している場合、別の描写パスが選択される。さらに、決定1220により示されているように、グラフィックス効果がもっと存在しているか否かが決定されてもよく、グラフィックス効果がもっと存在している場合、別のグラフィックス効果が選択される。またさらに、決定1240により示されているように、オブジェクトがもっと存在しているか否かが決定されてもよく、オブジェクトがもっと存在している場合、別のオブジェクトが選択される。
ボックス1300の中に含まれている種々の動作は、どの順序で行われてもよいことを認識しなければならない。たとえば、図1Cを参照とされたい。当然ながら、動作の任意の可能な置換が使用されることができる。
図2は、図1Bおよび1Cの動作1080にしたがってオブジェクトが設定される“効果バインディング”方法200を示している。このような方法200は、ファイルを処理するために協力して動作するインターフェース204およびアプリケーションプログラム202を備えた例示的なシステムにおいて行われる。したがって、シェーダプログラムは、グラフィックス効果をオブジェクトに適用するためにファイルの処理に基づいて発生される。もちろん、この方法200は任意の所望のシステムにおいて実施されることができる。
はじめに述べたように、処理には、複数のオブジェクトを設定することが含まれる。このシステム実施形態におけるアプリケーションプログラム202から見ると、これは、動作206において所望のグラフィックス効果と関連付けられたファイルを選択することにより行われてもよい。1実施形態においては、ファイルを読出すために.dllファイルがツールまたはグラフィックスエンジンによって使用されてもよい。
次に、動作208において、グラフィックスアプリケーションプログラムインターフェースが選択される。その後、動作210により示されているように、インターフェース204が呼出される。このような呼出しに応答して、複数の種々のハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータは、特定のグラフィックスアプリケーションプログラムインターフェースの選択に基づいて受取られる。1実施形態において、選択されたグラフィックスアプリケーションプログラムインターフェースをサポートするどのプラットホームも、インプリメンテーションデータによって表現されることができる。
次に、動作214によって示されているように、インプリメンテーションデータに基づいてパラメータがリクエストされ、受取られる。さらに、動作218において、どのハードウェアグラフィックスパイプラインプラットホームを使用すべきかがパラメータに基づいて決定されることができる。すぐに明らかになるように、この決定は、インターフェース204と共にアプリケーションプログラム202を使用して行われてもよい。以下には、図4を参照としてこのような決定がさらに詳細に説明される。
このシステム実施形態においてインターフェース204から見ると、動作210の呼出しに応答して、複数の種々のハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを発生することによりオブジェクトが設定される。動作212に注意されたい。以下には、1実施形態にしたがってこれがどのようにして行われるかが、図3を参照としてさらに詳細に説明される。その後、動作216においてインプリメンテーションデータに基づいてパラメータが発生される。はじめに述べたように、動作218においてインターフェース204はアプリケーション202と協力して動作し、どのハードウェアグラフィックスパイプラインプラットホームを使用すべきかを、パラメータに基づいて決定する。
オプションとして、インターフェース204はプリミティブを発生することが可能であってもよい。たとえば、球体はある点と半径から発生されることができる。これは、画素シェーダ(タグ“<pixelshader>”により示されている)または頂点シェーダ(タグ“<vertexshader>”により示されている)に類似している幾何学的生成器(たとえば、タグ“<geogenerator>”を有する)を規定することによって行われることができる。このプリミティブ発生技術は、多くの状況において有用である可能性がある。たとえば、それは、草または別の類似したオブジェクトを発生するときに使用されることができる。
図3は、図2の動作212にしたがって複数の異なったハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを発生する方法300を示している。この方法300は、インターフェース204内で行われる。この方法300は単なる例示に過ぎず、何等制限を課すものではないと解釈されなければならないことを認識すべきである。
図3に示されているように、動作302においてインプリメンテーションデータが検索され、それによって、たとえば、ファイル160中の全てのインプリメンテーション(付録Aの30行目に示されている名称“<imps>”内の)が発見される。次に、インプリメンテーションデータが現在のファイル中の適切なグラフィックスアプリケーションプログラムインターフェースの下で概略的に示された要求を満たすか否かが決定される。決定304において、要求は満たされることが決定された場合、動作306においてインプリメンテーションデータがあるリスト中で記憶される。これは、ユーザにより提供される浮動小数点優先度を使用して行われてもよい。このプロセスは、選択されたグラフィックスアプリケーションプログラムインターフェースに関連した全てのインプリメンテーションデータに対して続けられる。決定308に注意されたい。
図4は、図2の動作218にしたがってどのハードウェアグラフィックスパイプラインプラットホームを使用すべきかが決定されることができる例示的な方法400を示している。一般に、この方法400はアプリケーション202によって行われる。再び、この方法400は単なる例示に過ぎず、何等制限を課すものではないと解釈されなければならないことを認識すべきである。
最初に動作402において、特定のインプリメンテーションに関連したパラメータが識別される。これは、インターフェースを呼出し、あるインプリメンテーションに対するパラメータのリストをリクエストすることによって行われる。再び、各インプリメンテーションは特定のプラットホーム(すなわち、種々のグラフィックス製造会社により製造されたハードウェアグラフィックスチップ)に対応している。
その後、決定404において、インターフェースによって提供されたパラメータがアプリケーションにより理解されるか否か(すなわち、パラメータ名がアプリケーションにより正しく解釈されるか否か)が決定される。さらに、決定406に示されているように、パラメータがアプリケーションによって提供されることができるか否かが決定される。このインプリメンテーションがそのアプリケーションプログラムにより使用される場合、これらの決定は共に肯定的な応答を与えなければならない。オプションとして、現在の決定はそのアプリケーションプログラム以外のある場所で行われることができる。
次に、動作408においてデータが整合しているか否かが決定される。否である場合、動作407において整合していないデータが補正される。補正動作407には、たとえば、データの順序を入れ換え、および、または、必要とされているデータを既存のデータから形成することが含まれる。前の決定とは異なり、この決定408はインターフェースによって随意に行われることができる。
動作410に示されているように、利用可能なインプリメンテーションのそれぞれに対して上述の決定がなされる。次に、動作412においてグラフィックス効果がオブジェクトに割当てられる。一般に、アプリケーションは、動作402において保存されたインプリメンテーションから選択をする。
ユーザが視覚的に実験してシェーダプログラムを使用することを可能にするために、オプションのグラフィックユーザインタフェースが提供される。使用において、上述されたグラフィックス効果は、グラフィックユーザインターフェースを使用して表示されることができる。さらに、グラフィックス効果は、ユーザがグラフィックユーザインターフェースを使用することにより変更されることが可能であってもよい。とくに、グラフィックス効果は、パラメータ(すなわち、ツイーカブルズ)を変更することにより変更されることが可能であってもよく、シェーダプログラムはその変更されたパラメータに基づいて発生されてもよい。これは、スライダ、編集ボックス等によって行われてもよい。パラメータは関連したファイルをツイークすることにより変更されてもよい。
また、ユーザが1つのグラフィックス効果を選択することを可能にするために複数のグラフィックス効果が表示される別のグラフィックユーザインターフェースが提供されてもよい。その後、このような選択されたグラフィックス効果は、ファイルを使用してオブジェクトに適用されるものとして表示される。さらに、そのファイルはユーザ入力に基づいて修正され、ファイルが処理される。したがって、シェーダプログラムは、ファイルの処理に基づいて発生されることができる。
図5は、本発明に関連した取引方法500を示している。使用において、ファイル(すなわち、図1A−1参照)はライセンス契約により販売されるか、あるいはその他の方法で分配されることができる。このファイル中の種々のシェーダプログラムまたはその一部は、1つのまたは別の理由のために大衆に分配可能であってもよく、あるいは分配可能であってはならない。このコンピュータ実施取引方法500は、分配可能ではないシェーダプログラムが許可される特定のファイル中に存在しているか否かを考慮したライセンス契約の自動化された発生を可能にする。
最初に動作502において、メモリ中に記憶されたライセンス契約が識別される。さらに、このライセンス契約に関連したファイルが識別される。
その後、動作504に示されているように、ファイルの1以上のものが少なくとも部分的に分配可能でないか否かが決定される。これは、とくに、分配可能ではないコードにタグを付けるか、あるいはファイルの内容を既知の分配可能ではないコードのデータベースと比較することにより行われてもよい。
1以上のファイルが分配可能でないことが決定504において決定された場合、非公開項がそのライセンス契約中に含まれる。この非公開項はボイラープレート特性のものであってもよく、当業者によく知られている任意の別の方法でライセンス契約に自動的に組込まれていてもよい。動作506を参照とされたい。
簡単化された関連したコンピュータ実施方法において、ファイルが分配可能であるか否かを決定するための技術が提供される。このような方法には、メモリ中に記憶されたファイルを識別し、そのファイルが分配可能であるか否かを決定し、ファイルが分配可能であるか否かを単に表示することが含まれてもよい。
以上、種々の実施形態を説明してきたが、それらは単なる例示に過ぎず、何等制限を課すものではないことを認識すべきである。したがって、好ましい実施形態の技術的範囲は上述の例示的な実施形態により制限されるものではなく、添付された請求の範囲およびそれらと等価なものによってのみ制限される。請求の範囲における素子の順序は、ステップまたは動作の特定の順序を示すものではない。
Figure 2005521179
Figure 2005521179
Figure 2005521179
Figure 2005521179
Figure 2005521179
Figure 2005521179
Figure 2005521179
Figure 2005521179
1実施形態によるデジタル処理システムのブロック図。 図1Aのハードウェアグラフィックスパイプラインの例示的な1実施形態の内部構造を示す詳細図。 1実施形態にしたがってシェーダプログラムを発生するために使用されることのできる例示的なファイルの説明図。 1実施形態によるシェーダプログラムの発生方法を示すフロー図。 1実施形態によるシェーダプログラムの発生方法を示すフロー図。 図1Bおよび1Cの動作1080にしたがってオブジェクトが設定される“効果バインディング”方法を示す概略図。 図2の動作212にしたがって複数の種々のハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを発生する方法を示すフロー図。 図2の動作218にしたがってどのハードウェアグラフィックスパイプラインプラットホームを使用すべきかが決定されることができる例示的な方法を示すフロー図。 本発明に関連した取引方法を示すフロー図。

Claims (47)

  1. グラフィックス効果と関連付けられたファイルを選択し、
    そのファイルを読出し、
    そのファイルを処理し、
    このファイルの処理に基づいてシェーダプログラムを発生してグラフィックス効果をオブジェクトに適用するステップを含んでいるシェーダプログラムを発生する方法。
  2. ファイルは、特有のグラフィックス効果にそれぞれ関連付けられたファイルのライブラリから選択される請求項1記載の方法。
  3. ファイルは、種々のグラフィックスアプリケーションプログラムインターフェースに対してシェーダプログラムを発生するように処理されることのできる複数のインターフェースデータを含んでいる請求項1記載の方法。
  4. ファイルは、種々のハードウェアグラフィックスパイプラインプラットホームに対してシェーダプログラムを発生するように処理されることのできる複数のインプリメンテーションデータを含んでいる請求項1記載の方法。
  5. ファイルは、拡張可能なマークアップ言語(XML)で書込まれる請求項1記載の方法。
  6. ファイルは、テキストファイルを含んでいる請求項1記載の方法。
  7. 選択、読出し、処理および発生は、プラグインを使用して行われる請求項1記載の方法。
  8. 選択、読出し、処理および発生は、インターフェースを使用して行われる請求項1記載の方法。
  9. インターフェースは、コンポーネントオブジェクトモデル(COM)インターフェースを含んでいる請求項8記載の方法。
  10. 処理は、インターフェースの初期化を含んでいる請求項8記載の方法。
  11. 処理は注文タイプおよび注文機能の少なくとも1つの登録を含んでおり、その登録された注文タイプおよび注文機能の少なくとも1つに基づいてシェーダプログラムが発生される請求項1記載の方法。
  12. 処理は、複数のオブジェクトを設定することを含んでいる請求項1記載の方法。
  13. 処理は、オブジェクトの1つを選択することを含んでいる請求項12記載の方法。
  14. 処理は、複数のグラフィックス効果の1つを選択することを含んでいる請求項13記載の方法。
  15. 処理は、描写パスを選択することを含んでいる請求項14記載の方法。
  16. 処理は、描写パスを設定することを含んでいる請求項15記載の方法。
  17. 描写パスはパラメータを指示することにより設定され、シェーダプログラムはそのパラメータに基づいて発生される請求項16記載の方法。
  18. 処理は、選択されたグラフィックス効果によりオブジェクトを描くことを含んでいる請求項16記載の方法。
  19. オブジェクトは、選択されたグラフィックス効果によりあるアプリケーションによって提供される属性を使用して描かれる請求項18記載の方法。
  20. 処理は、描写パスがもっと存在するか否かを決定し、描写パスがもっと存在する場合は別の描写パスを選択することを含んでいる請求項18記載の方法。
  21. 処理は、オブジェクトがもっと存在するか否かを決定し、オブジェクトがもっと存在する場合は別のオブジェクトを選択することを含んでいる請求項18記載の方法。
  22. 処理は、グラフィックス効果がもっと存在するか否かを決定し、グラフィックス効果がもっと存在する場合は別のグラフィックス効果を選択することを含んでいる請求項18記載の方法。
  23. ファイルは要求を含んでおり、その要求に基づいてシェーダプログラムが発生される請求項1記載の方法。
  24. 要求は、要求の省略時セットを含んでいる請求項23記載の方法。
  25. グラフィックス効果は、グラフィックユーザインターフェースを使用して表示される請求項1記載の方法。
  26. グラフィックス効果は、ユーザによりグラフィックユーザインターフェースを使用して変更されることが可能である請求項25記載の方法。
  27. グラフィックス効果は、パラメータを変更することにより変更されることが可能である請求項26記載の方法。
  28. 変更されたパラメータに基づいてシェーダプログラムが発生される請求項27記載の方法。
  29. シェーダプログラムはファイルをツイーク(tweak)することにより変更されることができる請求項1記載の方法。
  30. インターフェースはプリミティブを発生することが可能である請求項8記載の方法。
  31. ファイルは、名称、タイプおよび内容を含む構文を含んでいる請求項1記載の方法。
  32. ファイルは、コンパイルされたコードとコンパイルされていないコードの両者を参照とすることができる請求項1記載の方法。
  33. インターフェースと、
    ファイルを処理するようにインターフェースと協力して動作するアプリケーションプログラムとを備えており、
    シェーダプログラムはこのファイルの処理に基づいて発生されてグラフィックス効果をオブジェクトに適用するシェーダプログラムの発生システム。
  34. グラフィックス効果と関連付けられたファイルを選択する手段と、
    ファイルを読出す手段と、
    ファイルを処理する手段と、
    ファイルの処理に基づいてシェーダプログラムを発生してグラフィックス効果をオブジェクトに適用する手段とを備えているシェーダプログラムの発生システム。
  35. グラフィックス効果と関連付けられたファイルを選択するコンピュータコードと、
    ファイルを読出すコンピュータコードと、
    ファイルを処理するコンピュータコードと、
    ファイルの処理に基づいてシェーダプログラムを発生してグラフィックス効果をオブジェクトに適用するコンピュータコードとを備えているシェーダプログラムを発生するコンピュータプログラム製品。
  36. ファイルを備えており、このファイルは、
    そのファイルに関連付けられたグラフィックス効果を識別する本文描写オブジェクトと、
    シェーダプログラムを発生するために必要なシェーダプログラムに対する要求を識別する要求オブジェクトとを含んでおり、
    シェーダプログラムはファイルのオブジェクトに基づいて発生されることが可能である、シェーダプログラムを発生するメモリ中に記憶されたデータ構造。
  37. グラフィックス効果と関連付けられたファイルを選択し、
    グラフィックスアプリケーションプログラムインターフェースを選択し、
    この選択に基づいて複数の種々のハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを受取り、
    インプリメンテーションデータに基づいてパラメータを受取り、
    どのハードウェアグラフィックスパイプラインプラットホームを使用すべきかをパラメータに基づいて決定するステップを含んでおり、
    シェーダプログラムは、ハードウェアグラフィックスパイプラインプラットホームにより使用されるために発生される、アプリケーションを使用してシェーダプログラムを発生する方法。
  38. どのハードウェアグラフィックスパイプラインプラットホームが使用されるかに関する決定は、パラメータが提供されることができるか否かに基づいている請求項37記載の方法。
  39. どのハードウェアグラフィックスパイプラインプラットホームが使用されるかに関する決定は、パラメータが理解されたか否かに基づいている請求項37記載の方法。
  40. あるオブジェクトの属性をパラメータにマップするステップをさらに含んでいる請求項37記載の方法。
  41. 複数の種々のハードウェアグラフィックスパイプラインプラットホームを表現するインプリメンテーションデータを発生し、
    このインプリメンテーションデータに基づいてパラメータを発生し、
    どのハードウェアグラフィックスパイプラインプラットホームが使用されるかをパラメータに基づいて決定するステップを含んでおり、
    シェーダプログラムは、ハードウェアグラフィックスパイプラインプラットホームにより使用されるために発生される、インターフェースを使用してシェーダプログラムを発生する方法。
  42. インプリメンテーションデータは、種々のハードウェアグラフィックスパイプラインプラットホームが複数の要求を満足させるか否かを決定することにより発生される請求項41記載の方法。
  43. インプリメンテーションデータはさらに、要求を満たす種々のハードウェアグラフィックスパイプラインプラットホームを分類することにより発生される請求項42記載の方法。
  44. インターフェースを初期化し、
    注文タイプおよび注文機能の少なくとも1つを登録し、
    複数のオブジェクトを設定し、
    オブジェクトの1つを選択し、
    複数のグラフィックス効果の1つを選択し、
    描写パスを選択し、
    パラメータを指示することにより描写パスを設定し、
    選択されたグラフィックスオブジェクトによりオブジェクトを描き、
    描写パスがもっと存在するか否かを決定し、
    描写パスがもっと存在する場合は別の描写パスを選択し、
    グラフィックス効果がもっと存在するか否かを決定し、
    グラフィックス効果がもっと存在する場合は別のグラフィックス効果を選択し、
    オブジェクトがもっと存在するか否かを決定し、
    オブジェクトがもっと存在する場合は別のオブジェクトを選択するステップを含んでいるシェーダプログラムの発生方法。
  45. メモリ中に記憶されたファイルを識別し、
    ファイルが分配可能であるか否を決定し、
    ファイルが分配可能であることを示すステップを含んでいる、ファイルが分配可能であるか否かを決定するコンピュータ実施方法。
  46. ファイルを備えており、このファイルは、
    そのファイルに関連付けられたグラフィックス効果を識別する本文描写オブジェクトと、
    複数の動作環境においてグラフィックス効果を実行することができる複数のシェーダコードセグメントとを含んでおり、
    シェーダコードセグメントは種々の動作環境に関して編成される、シェーダプログラムを識別するメモリ中に記憶されたデータ構造。
  47. ユーザが1つのグラフィックス効果を選択することを可能にするために複数のグラフィックス効果を表示し、
    その選択されたグラフィックス効果を、オブジェクトに適用されたときにファイルを使用して表示し、
    ユーザ入力に基づいてそのファイルを修正し、
    そのファイルを処理し、
    そのファイルの処理に基づいてシェーダプログラムを発生するステップを含んでいる、グラフィックユーザインターフェースを使用してシェーダプログラムを発生する方法。
JP2003582713A 2002-03-20 2002-04-30 シェーダプログラムを発生するシステム、方法およびコンピュータプログラム製品 Expired - Fee Related JP4191614B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/102,989 US7009605B2 (en) 2002-03-20 2002-03-20 System, method and computer program product for generating a shader program
PCT/US2002/013571 WO2003085600A1 (en) 2002-03-20 2002-04-30 System, method and computer program product for generating a shader program

Publications (2)

Publication Number Publication Date
JP2005521179A true JP2005521179A (ja) 2005-07-14
JP4191614B2 JP4191614B2 (ja) 2008-12-03

Family

ID=28040283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003582713A Expired - Fee Related JP4191614B2 (ja) 2002-03-20 2002-04-30 シェーダプログラムを発生するシステム、方法およびコンピュータプログラム製品

Country Status (7)

Country Link
US (2) US7009605B2 (ja)
EP (1) EP1485874B1 (ja)
JP (1) JP4191614B2 (ja)
AU (1) AU2002367854A1 (ja)
CA (1) CA2479931C (ja)
SG (1) SG163432A1 (ja)
WO (1) WO2003085600A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008507037A (ja) * 2004-07-15 2008-03-06 インテル・コーポレーション ピクセルシェ−ダ・ハードウェアのためのレガシー処理
JP2011501325A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド サーバ−ベースのコードコンパイル
JP2011517803A (ja) * 2008-03-04 2011-06-16 マイクロソフト コーポレーション 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張
JP4809359B2 (ja) * 2004-10-20 2011-11-09 シーメンス、プラダクツ、ライフサイクル、マニジマント、ソフトウエア、インク ダイナミック・シェーダ生成用システム、方法、およびコンピュータ・プログラム製品
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
US7812844B2 (en) 2004-01-28 2010-10-12 Lucid Information Technology, Ltd. PC-based computing system employing a silicon chip having a routing unit and a control unit for parallelizing multiple GPU-driven pipeline cores according to the object division mode of parallel operation during the running of a graphics application
US7777748B2 (en) 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
US7808499B2 (en) 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US20090027383A1 (en) 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
EP1542167A1 (en) * 2003-12-09 2005-06-15 Koninklijke Philips Electronics N.V. Computer graphics processor and method for rendering 3D scenes on a 3D image display screen
US7324106B1 (en) * 2004-07-27 2008-01-29 Nvidia Corporation Translation of register-combiner state into shader microcode
US7750914B2 (en) * 2004-08-26 2010-07-06 Intel Corporation Subdividing geometry images in graphics hardware
US7218291B2 (en) * 2004-09-13 2007-05-15 Nvidia Corporation Increased scalability in the fragment shading pipeline
US7257462B2 (en) * 2004-09-14 2007-08-14 Ugs Corp. System, method, and computer program product for localized cavity milling design
US20060071933A1 (en) * 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US8004515B1 (en) * 2005-03-15 2011-08-23 Nvidia Corporation Stereoscopic vertex shader override
US7444583B2 (en) * 2005-05-27 2008-10-28 Microsoft Corporation Standard graphics specification and data binding
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
US20070070082A1 (en) * 2005-09-27 2007-03-29 Ati Technologies, Inc. Sample-level screen-door transparency using programmable transparency sample masks
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
US7880746B2 (en) 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
US8633927B2 (en) 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US8276129B1 (en) * 2007-08-13 2012-09-25 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US8203558B2 (en) * 2008-01-28 2012-06-19 Apple Inc. Dynamic shader generation
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US8650540B2 (en) * 2009-12-31 2014-02-11 International Business Machines Corporation Melding of mediation flow service component architecture (SCA) components
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
CN107393502B (zh) * 2011-12-14 2019-11-05 英特尔公司 用于多遍渲染的技术
US9760361B2 (en) 2012-11-26 2017-09-12 International Business Machines Corporation Optimized installation of received patches for application programs already running on computer systems
US9875568B2 (en) * 2013-06-06 2018-01-23 Nvidia Corporation Graphics effect data structure and method of use thereof
US10255651B2 (en) 2015-04-15 2019-04-09 Channel One Holdings Inc. Methods and systems for generating shaders to emulate a fixed-function graphics pipeline
US20210294579A1 (en) * 2020-03-19 2021-09-23 Advanced Micro Devices, Inc. Graphics pipeline optimizations
CN117255707A (zh) * 2021-03-25 2023-12-19 创峰科技 游戏过程中渲染效果的系统和方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4996666A (en) 1988-08-12 1991-02-26 Duluk Jr Jerome F Content-addressable memory system capable of fully parallel magnitude comparisons
US5706415A (en) * 1991-12-20 1998-01-06 Apple Computer, Inc. Method and apparatus for distributed interpolation of pixel shading parameter values
US5669010A (en) 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
WO1993023816A1 (en) 1992-05-18 1993-11-25 Silicon Engines Inc. System and method for cross correlation with application to video motion vector estimation
US5574835A (en) 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5596686A (en) 1994-04-21 1997-01-21 Silicon Engines, Inc. Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
US5572634A (en) 1994-10-26 1996-11-05 Silicon Engines, Inc. Method and apparatus for spatial simulation acceleration
AU6600496A (en) 1995-07-26 1997-02-26 Raycer, Incorporated Method and apparatus for span sorting rendering system
US5793374A (en) 1995-07-28 1998-08-11 Microsoft Corporation Specialized shaders for shading objects in computer generated images
US5963209A (en) * 1996-01-11 1999-10-05 Microsoft Corporation Encoding and progressive transmission of progressive meshes
US5995113A (en) * 1996-08-02 1999-11-30 Hewlett-Packard Company Coloring events in event streams in order to provide information about operation of a software library
DE69822615T2 (de) 1997-04-04 2005-03-24 Intergraph Software Technologies Co., Las Vegas Verfahren und vorrichtung zur anwendung von effekten in graphischen bildern
US6570578B1 (en) * 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6578197B1 (en) * 1998-04-08 2003-06-10 Silicon Graphics, Inc. System and method for high-speed execution of graphics application programs including shading language instructions
CN1115824C (zh) * 1998-05-07 2003-07-23 三星电子株式会社 网络中的装置对装置命令与控制的方法和系统
US6345244B1 (en) * 1998-05-27 2002-02-05 Lionbridge Technologies, Inc. System, method, and product for dynamically aligning translations in a translation-memory system
US6236413B1 (en) * 1998-08-14 2001-05-22 Silicon Graphics, Inc. Method and system for a RISC graphics pipeline optimized for high clock speeds by using recirculation
US6525737B1 (en) 1998-08-20 2003-02-25 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6577317B1 (en) 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for geometry operations in a 3D-graphics pipeline
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6417858B1 (en) * 1998-12-23 2002-07-09 Microsoft Corporation Processor for geometry transformations and lighting calculations
US6198488B1 (en) 1999-12-06 2001-03-06 Nvidia Transform, lighting and rasterization system embodied on a single semiconductor platform
AU2001229464A1 (en) 2000-01-14 2001-07-24 Saba Software, Inc. Method and apparatus for a web content platform
US6819325B2 (en) 2000-03-07 2004-11-16 Microsoft Corporation API communications for vertex and pixel shaders

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008507037A (ja) * 2004-07-15 2008-03-06 インテル・コーポレーション ピクセルシェ−ダ・ハードウェアのためのレガシー処理
JP4809359B2 (ja) * 2004-10-20 2011-11-09 シーメンス、プラダクツ、ライフサイクル、マニジマント、ソフトウエア、インク ダイナミック・シェーダ生成用システム、方法、およびコンピュータ・プログラム製品
JP2011501325A (ja) * 2007-10-26 2011-01-06 クゥアルコム・インコーポレイテッド サーバ−ベースのコードコンパイル
JP2011517803A (ja) * 2008-03-04 2011-06-16 マイクロソフト コーポレーション 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張
US9075913B2 (en) 2012-02-27 2015-07-07 Qualcomm Incorporated Validation of applications for graphics processing unit

Also Published As

Publication number Publication date
WO2003085600A1 (en) 2003-10-16
US7009605B2 (en) 2006-03-07
EP1485874B1 (en) 2012-09-19
US20050251787A1 (en) 2005-11-10
CA2479931A1 (en) 2003-10-16
JP4191614B2 (ja) 2008-12-03
SG163432A1 (en) 2010-08-30
AU2002367854A1 (en) 2003-10-20
EP1485874A4 (en) 2007-01-17
EP1485874A1 (en) 2004-12-15
CA2479931C (en) 2009-12-22
US20030179220A1 (en) 2003-09-25
US8106904B2 (en) 2012-01-31

Similar Documents

Publication Publication Date Title
JP4191614B2 (ja) シェーダプログラムを発生するシステム、方法およびコンピュータプログラム製品
US6046747A (en) Graphics application programming interface avoiding repetitive transfer of texture mapping data
Wolff OpenGL 4.0 shading language cookbook
JP4290477B2 (ja) ベクターグラフィック用のマークアップ言語およびオブジェクトモデル
US7659902B2 (en) API communications for vertex and pixel shaders
US7619630B2 (en) Preshaders: optimization of GPU pro
JPH09500994A (ja) オブジェクト指向レンダリング・システム
US20130127858A1 (en) Interception of Graphics API Calls for Optimization of Rendering
KR101618381B1 (ko) 선언적인 프리젠테이션 프레임워크를 위한 셰이더-기반의 확장
US8907979B2 (en) Fast rendering of knockout groups using a depth buffer of a graphics processing unit
De Vries Learn opengl
US20150015574A1 (en) System, method, and computer program product for optimizing a three-dimensional texture workflow
JPH09501786A (ja) オブジェクト指向シェーディング
Martz OpenGL distilled
US20040169671A1 (en) Effects framework pipeline integration with programmable shader
Pulli New APIs for mobile graphics
US7523406B2 (en) Dynamic parameter interface
Nilsson et al. Glitz: Hardware Accelerated Image Compositing Using OpenGL.
Angel et al. Getting started with webGL and three. js
Browning et al. 3D Graphics Programming
Bauchinger Designing a modern rendering engine
Wang XNA-like 3D Graphics Programming on the Raspberry Pi
CN117726742A (zh) 一种基于wpf的目标图片打码方法、装置及相关介质
Boreskov Developing and Debugging Cross-platform Shaders
Zhao Implementing Surfaces in OpenGL

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20070912

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080401

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080701

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20080701

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: 20080826

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080918

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110926

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120926

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130926

Year of fee payment: 5

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

LAPS Cancellation because of no payment of annual fees