(57)【要約】  ここに記載される例は、概して、グラフィックス処理ユニット（ＧＰＵ）又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの１つ以上のシェーダレコードを指定するバッファを傍受し、前記１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記１つ以上のシェーダレコードのレイアウトを決定し、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定し、アプリケーションを介して、インタフェース上に前記１つ以上のパラメータを指し示すインジケーションを表示することに関する。
2021531577.tif 000002
【特許請求の範囲】
【請求項１】
画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するためのコンピュータ実装された方法であって、
グラフィックス処理ユニット（ＧＰＵ）又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダの１つ以上のシェーダレコードを含むシェーダテーブル情報を指定するバッファを傍受し、
コンピューティング装置により、前記１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記１つ以上のシェーダレコードに対応する１つ以上のシェーダについて前記バッファ内のパラメータのレイアウトを決定し、
前記コンピューティング装置により、前記パラメータのレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加データを解釈して、前記１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定し、
前記１つ以上のパラメータにおける無効なメモリ位置、又は前記レイアウトに基づいて、前記１つ以上のシェーダレコードと関連付けられたヌルルートシグネチャ、のうちの少なくとも一方を検出し、
前記コンピューティング装置上で実行しているアプリケーションを介して、インタフェース上に前記１つ以上のパラメータを指し示すインジケーションを表示して、前記無効なメモリ位置又は前記ヌルルートシグネチャの少なくとも一方のインジケータを表示する、
ことを有するコンピュータ実装された方法。
【請求項２】
前記ＧＰＵ又は前記グラフィックスドライバから、ルートシグネチャ及び前記レイアウトを指定する先行バッファを傍受することを更に有し、前記レイアウトを決定することは、
前記１つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付け、
前記先行バッファ内で前記ルートシグネチャに対応する前記レイアウトを特定する、
ことを有する、請求項１に記載のコンピュータ実装された方法。
【請求項３】
前記１つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付けることは、前記バッファから前記ルートシグネチャを特定することを有する、請求項２に記載のコンピュータ実装された方法。
【請求項４】
前記ＧＰＵ又は前記グラフィックスドライバから、前記シェーダテーブル内のシェーダレコード間のストライドを指定する先行バッファを傍受し、
前記１つ以上のシェーダレコードから前記ストライドの位置に基づいて第２のシェーダレコードを特定し、
前記バッファ内で検出された前記１つ以上のシェーダレコードの前記第２のシェーダレコードの第２の識別子に少なくとも部分的に基づいて、前記第２のシェーダレコードの第２のレイアウトを決定し、
前記第２のレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加の第２のデータを解釈して、前記第２のシェーダレコードに対応する１つ以上の第２のパラメータを決定し、
前記コンピューティング装置上で実行している前記アプリケーションを介して、前記インタフェース上に前記１つ以上の第２のパラメータを指し示す第２のインジケーションを表示する、
ことを更に有する請求項１に記載のコンピュータ実装された方法。
【請求項５】
前記１つ以上のパラメータは、ルート定数、ルートディスクリプタ、又はルートディスクリプタハンドル、のうちの少なくとも１つを含む、請求項１に記載のコンピュータ実装された方法。
【請求項６】
１つ以上のパラメータを指し示すインジケーションを表示することは、前記１つ以上のシェーダレコードと関連付けられたルートシグネチャへのリンクを表示することを有し、前記リンクは、前記ルートシグネチャに関する追加パラメータを表示することと関連付けられる、請求項１に記載のコンピュータ実装された方法。
【請求項７】
１つ以上のパラメータを指し示すインジケーションを表示することは、前記１つ以上のシェーダレコードと関連付けられた前記バッファ内のバイトのオフセットへのリンクを表示することを有し、前記リンクは、前記１つ以上のシェーダレコードと関連付けられたバイトを表示することと関連付けられる、請求項１に記載のコンピュータ実装された方法。
【請求項８】
画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するコンピューティング装置であって、
オペレーティングシステム及び診断アプリケーションを含む１つ以上のアプリケーションを実行するための１つ以上のパラメータ又は命令を格納したメモリと、
前記メモリに結合された少なくとも１つのプロセッサであり、
グラフィックス処理ユニット（ＧＰＵ）又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダの１つ以上のシェーダレコードを含む情報を指定するバッファを傍受し、
前記１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記１つ以上のシェーダレコードに対応する１つ以上のシェーダについて前記バッファ内のパラメータのレイアウトを決定し、
前記パラメータのレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加データを解釈して、前記１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定し、
前記診断アプリケーションを介して、インタフェース上に前記１つ以上のパラメータを指し示すインジケーションを表示する、
ように構成された少なくとも１つのプロセッサと、
を有するコンピューティング装置。
【請求項９】
前記少なくとも１つのプロセッサは更に、前記ＧＰＵ又は前記グラフィックスドライバから、ルートシグネチャ及び前記レイアウトを指定する先行バッファを傍受するように構成され、前記少なくとも１つのプロセッサは、少なくとも部分的に、
前記１つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付け、
前記先行バッファ内で前記ルートシグネチャに対応する前記レイアウトを特定する、
ことによって前記レイアウトを決定するように構成される、請求項８に記載のコンピューティング装置。
【請求項１０】
前記少なくとも１つのプロセッサは、少なくとも部分的に、前記バッファから前記ルートシグネチャを特定することによって、前記１つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付けるように構成される、請求項９に記載のコンピューティング装置。
【請求項１１】
前記少なくとも１つのプロセッサは更に、
前記ＧＰＵ又は前記グラフィックスドライバから、前記シェーダテーブル内のシェーダレコード間のストライドを指定する先行バッファを傍受し、
前記１つ以上のシェーダレコードから前記ストライドの位置に基づいて第２のシェーダレコードを特定し、
前記バッファ内で検出された前記１つ以上のシェーダレコードの前記第２のシェーダレコードの第２の識別子に少なくとも部分的に基づいて、前記第２のシェーダレコードの第２のレイアウトを決定し、
前記第２のレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加の第２のデータを解釈して、前記第２のシェーダレコードに対応する１つ以上の第２のパラメータを決定し、
前記診断アプリケーションを介して、前記インタフェース上に前記１つ以上の第２のパラメータを指し示す第２のインジケーションを表示する、
ように構成される、請求項８に記載のコンピューティング装置。
【請求項１２】
前記少なくとも１つのプロセッサは、前記１つ以上のパラメータにおける無効なメモリ位置を検出するように構成され、前記少なくとも１つのプロセッサは、前記無効なメモリ位置と関連付けられたインジケータとして、前記１つ以上のパラメータを指し示す前記インジケーションを表示するように構成される、請求項８に記載のコンピューティング装置。
【請求項１３】
前記少なくとも１つのプロセッサは、前記レイアウトに基づいて、前記１つ以上のシェーダレコードと関連付けられたヌルルートシグネチャを検出するように構成され、前記少なくとも１つのプロセッサは、前記ヌルルートシグネチャのインジケータとして、前記１つ以上のパラメータを指し示す前記インジケーションを表示するように構成される、請求項８に記載のコンピューティング装置。
【請求項１４】
前記１つ以上のパラメータは、ルート定数、ルートディスクリプタ、又はルートディスクリプタハンドル、のうちの少なくとも１つを含む、請求項８に記載のコンピューティング装置。
【請求項１５】
請求項１乃至７のいずれか一項に記載のコンピュータ実装された方法を実行するように１つ以上のプロセッサによって実行可能なコードを有したコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティング装置の使用が、日に日にますます当たり前になってきている。コンピューティング装置は、標準的なデスクトップコンピュータからウェアラブルコンピューティング技術及びその先に至るまで多岐にわたる。近年成長しているコンピューティング装置の１つの分野は、例えばゲームやビデオストリームなどのレンダリングなどの画像レンダリングの状況であり、それらは、典型的に、グラフィックス処理ユニット（ＧＰＵ）を当てにして、コンピューティング装置から受け取ったレンダリング命令に基づいてコンピューティング装置からディスプレイ装置へグラフィックスをレンダリングする。画像のレイトレースが、アプリケーションを介して画像を生成し、ＧＰＵを介して画像の表示を要求する別ソリューションとして開発されている。レイトレーシングにおいて、アプリケーションは、表示すべき画像を定めることができるとともに、ディスプレイ上に効率的に画像を生成することを支援する加速構造を定めることができる。
【０００２】
加速構造は、特定の光線が交差しそうなシーンからのオブジェクトを迅速に決定し、その光線が当たらない１つ以上のオブジェクトを排斥するために使用される。決定されたオブジェクトは、オブジェクトと交差する光線に関する情報に基づいて、ディスプレイ上に描画されることができる。さらに、レイトレーシングにおいて、アプリケーションは、レイトレーシングしているシーン内の他の何かと光線が交差する又はその他で相互作用するときに呼び出すシェーダを指定するシェーダテーブルを定めることができる。ＧＰＵは、光線に基づいてシーンのオブジェクトを描くことができ、レイトレーシングしているシーン内の他のオブジェクトと光線が交差又は相互作用するときに、シェーダテーブルに基づいて適切なシェーダを呼び出すことができる。
【発明の概要】
【０００３】
以下、１つ以上の例の簡略化された要約を、そのような例の基本的な理解を提供するために提示する。この要約は、意図する全ての例の広範囲に及ぶ概要ではなく、全ての例の鍵となる要素又は重要な要素を特定することも、いずれか又は全ての例の範囲を示すことも意図していない。その唯一の目的は、後に提示する更に詳細な説明の序文として、１つ以上の例の概念を簡略化した形で提示することである。
【０００４】
一例において、画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するためのコンピュータ実装された方法が提供される。当該方法は、グラフィックス処理ユニット（ＧＰＵ）又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの１つ以上のシェーダレコードを指定するバッファを傍受し、コンピューティング装置により、前記１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記１つ以上のシェーダレコードのレイアウトを決定し、コンピューティング装置により、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定し、コンピューティング装置上で実行しているアプリケーションを介して、インタフェース上に前記１つ以上のパラメータを指し示すインジケーションを表示することを含む。
【０００５】
他の一例において、画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するコンピューティング装置が提供される。当該コンピューティング装置は、オペレーティングシステム及び診断アプリケーションを含む１つ以上のアプリケーションを実行するための１つ以上のパラメータ又は命令を格納したメモリと、該メモリに結合された少なくとも１つのプロセッサとを含む。前記少なくとも１つのプロセッサは、ＧＰＵ又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの１つ以上のシェーダレコードを指定するバッファを傍受し、前記１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記１つ以上のシェーダレコードのレイアウトを決定し、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定し、診断アプリケーションを介して、インタフェース上に前記１つ以上のパラメータを指し示すインジケーションを表示する、ように構成される。
【０００６】
他の一例において、画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するように１つ以上のプロセッサによって実行可能なコードを含んだコンピュータ読み取り可能媒体が提供される。前記コードは、ＧＰＵ又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの１つ以上のシェーダレコードを指定するバッファを傍受し、前記１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記１つ以上のシェーダレコードのレイアウトを決定し、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定し、アプリケーションを介して、インタフェース上に前記１つ以上のパラメータを指し示すインジケーションを表示する、ためのコードを含む。
【０００７】
前述の目的及び関連する目的の達成のため、１つ以上の例は、以下にて完全に記載され、特許請求の範囲にて特に指摘される特徴を有する。以下の説明及び添付の図面は、１つ以上の例の特定の例示的な特徴を詳細に記載する。しかしながら、それらの特徴は、様々な例の原理が使用され得る様々なやり方のうちのほんの数例を示すものであり、この説明は、全てのそのような例及びそれらに均等なものを含むことを意図している。
【図面の簡単な説明】
【０００８】
【図１】ここに記載される例に従った、グラフィックス処理ユニット（ＧＰＵ）によってレイトレーシングされることが可能な画像のシェーダテーブル情報を決定及び表示するコンピューティング装置の一例の概略図である。
【図２】ここに記載される例に従った、シェーダテーブル情報を決定及び表示する方法の一例のフロー図である。
【図３】ここに記載される例に従った、シェーダテーブル情報を決定及び表示するために画像データを傍受することに関するデータフローの一例を示している。
【図４】ここに記載される例に従った、シェーダテーブル情報を表示するインタフェースの一例を示している。
【図５】ここに記載される例に従った、シェーダテーブル情報内のルート引数に関するエラーインジケーションを表示するインタフェースの一例を示している。
【図６】ここに記載される例に従った、シェーダテーブル情報内のシェーダレコードに関するエラーインジケーションを表示するインタフェースの一例を示している。
【図７】ここに記載される例に従った、シェーダテーブル情報のルートシグネチャ関連付けに関するエラーインジケーションを表示するインタフェースの一例を示している。
【図８】ここに記載される機能を実行するコンピューティング装置の一例の概略図である。
【発明を実施するための形態】
【０００９】
添付の図面との関連で以下に記載される詳細な説明は、様々な構成の説明として意図しており、ここに記載される概念が実施され得る最良の構成を表すことを意図するものではない。この詳細な説明は、様々な概念の完全なる理解を提供するために具体的詳細を含んでいる。しかしながら、当業者に明らかなことには、それらの概念は、それら具体的詳細なしに実施されてもよい。一部の例において、そのような概念を不明瞭にすることを避けるために、周知のコンポーネントはブロック図の形式で示す。
【００１０】
レイトレーシング画像にて定められるシェーダテーブルに関係するパラメータを表示することに関する様々な例がここに記載される。シェーダテーブルは、レイトレーシングしているシーン内の何かと光線が相互作用するときに、どのシェーダを呼び出すかを指定することができる。例えば、シェーダテーブルはシェーダレコードの配列を含むことができ、各レコードが、シェーダの識別子を、該シェーダが呼び出されるときに該シェーダに渡すべきパラメータのセットとともに含む。シーンをレイトレーシングしていて、ある表面に光線が遭遇するとき、実行すべきシェーダを選び採るためにシェーダテーブルにインデックスを付けることができる（光線から寄与される入力パラメータ、オブジェクト、シェーダレコードとともに）。シェーダテーブルは、典型的に、バイトの集合として格納され及び／又は通信されており、解釈するのに直感的でないものであり得る。これに関連し、シェーダテーブルに対応するバッファデータを傍受（インターセプト）及び解釈することで、（例えば、シェーダテーブルの未加工（ロー）バイトを表示する又は単に取得することとは対照的に）画像の対応するレイトレーシングを実行することに基づく、より直感的な形式でのデータの表示を提供することができる。例えば、様々なバッファからのデータを傍受して、どのシェーダレコードが利用されているのか、シェーダレコードに関するパラメータなどを決定することができ、また、パラメータを表示することで、画像がレイトレーシングされている間に開発者がパラメータを視覚化し、それに従って、レイトレーシングにおいて起こり得るエラーを特定することが可能になる。
【００１１】
特定の一例において、シェーダテーブルの少なくとも一部を表すバッファが（例えば、グラフィックス処理ユニット（ＧＰＵ）から）傍受され得る。バッファは、シェーダレコード識別子に基づいて１つ以上のシェーダレコードを指し示すデータと、該識別子に続く対応するデータを示すデータとを含み得る。例えば、バッファ内のデータは、画像をレイトレースする間の時点で使用される１つ以上のシェーダレコードを指し示すことができる。この例において、バッファ又は他のバッファは、シェーダレコード識別子とルートシグネチャ又は他の構成要素との間の関連付けを指し示し得る。さらに、この例において、バッファ又は他のバッファは、ルートシグネチャとシェーダレコードのデータのレイアウトとの間の関連付けを指し示してもよい。従って、シェーダレコードを解釈して１つ以上の関連付けパラメータを決定することができ、データは、所与のシェーダレコードについての１つ以上の関連付けパラメータを指し示す形式で表示されることができ、また、レイトレーシング中の時点におけるシェーダレコードを表すことができる。一例において、バッファはまた、各シェーダレコードがバッファ内のどこで始まるかを決定するために、シェーダレコード間のストライド値を指し示してもよい。
【００１２】
さらに、一例において、シェーダレコードにおいて起こり得るエラーを検出及び特定することで、開発者が可能性あるエラーを視覚化すること及び／又はエラーを発生させている命令を訂正することが可能になる。例えば、期待値をバッファから決定することができない場合、及び／又はそれ以外でバッファデータが少なくとも部分的に破壊されていると決定される場合に、エラーを検出することができる。従って、ここに記載される概念は、さもなければ解釈することが困難であり得るものであるシェーダテーブル及び／又は対応するシェーダレコードの情報を表示することを提供して、レイトレーシングが実行されるときに、開発者がレイトレーシングにおいて起こり得るエラーを迅速且つ効率的に特定すること、及び／又は対応するシェーダを特定の光線に適用することを可能にする。
【００１３】
次に図１−図８を移り、ここに記載されるアクション又は処理を実行し得る１つ以上のコンポーネント及び１つ以上の方法を参照して例を示す。破線のコンポーネント及び／又はアクション／処理はオプションとし得る。図２にて後述する処理は特定の順序で提示され且つ／或いはコンポーネントの例によって実行されるとして提示されるが、実装に応じて、アクションの順序及びアクションを実行するコンポーネントは、一部の例において様々とし得る。また、一部の例において、以下のアクション、機能、及び／又は記載されるコンポーネントのうちの１つ以上は、特別にプログラムされたプロセッサによって、特別にプログラムされたソフトウェア若しくはコンピュータ読み取り可能媒体を実行するプロセッサによって、又は記載されるアクション又は機能を実行することが可能なハードウェアコンポーネント及び／又はソフトウェアコンポーネントの何らかの他の組み合わせによって実行され得る。
【００１４】
図１は、ＧＰＵを用いてレンダリングされる画像に関してシェーダテーブル情報を決定して表示するコンピューティング装置１００及び／又は関連コンポーネントの一例の概略図である。例えば、コンピューティング装置１００は、プロセッサ１０４及び／又はメモリ１０６を含むか、その他のやり方でそれらと結合されるかすることができ、プロセッサ１０４及び／又はメモリ１０６は、ここに記載されるように、シェーダテーブル情報を決定又は表示することに関係する命令又は他のパラメータを実行又は格納するように構成されることができる。コンピューティング装置１００は、１つ以上のアプリケーションを実行するための環境を提供するために、（例えば、プロセッサ１０４及び／又はメモリ１０６を介して）オペレーティングシステム１０８を実行することができる。コンピューティング装置１００はまた、ディスプレイポート１１８を介してコンピューティング装置１００に結合され得るものであるディスプレイ上に１つ以上の画像の表示を生じさせるために、レンダリング命令を処理し及び／又は関連コマンドをディスプレイインタフェース１１６に通信するＧＰＵ１１４を含むことができる。
【００１５】
一例において、ディスプレイインタフェース１１６は、ディスプレイポート１１８を介してディスプレイ（図示せず）と通信するために、プロセッサ１０４及び／又はメモリ１０６と通信可能に結合されることができる。ディスプレイポート１１８は、ここで参照されるとき、高解像度マルチメディアインタフェース（ＨＤＭＩ）ポート、ディスプレイシリアルインタフェース（ＤＳＩ）ポート、モバイルインダストリプロセッサインタフェース（ＭＩＰＩ）ＤＳＩポート、ユニバーサルシリアルバス（ＵＳＢ）ポート、Ｆｉｒｅｗｉｒｅポート、又はコンピューティング装置１００とディスプレイとの間での通信を可能にし得る他の内蔵の若しくは外付けの有線若しくは無線のディスプレイポートを含め、様々なタイプのポートのうちの１つ以上を含むことができる。
【００１６】
一例において、ＧＰＵ１１４は、ディスプレイインタフェース１１６の一部（例えば、ディスプレイインタフェース１１６の回路ボード上のプロセッサ）であってもよい。他の一例において、ＧＰＵ１１４、ディスプレイインタフェース１１６などは、プロセッサ１０４とともに集積されてもよい。ＧＰＵ１１４やディスプレイインタフェース１１６などがバスを介してプロセッサ１０４と通信して、ＧＰＵ１１４へのレンダリング命令の提供を支援することができるような、実質的に如何なる組み合わせのハードウェアも可能である。ＧＰＵ１１４は、レンダリング命令を処理して画像をレンダリングすることができるとともに、ディスプレイインタフェース１１６のディスプレイポート１１８を介してディスプレイに関連信号を送信することによって、ディスプレイ上での画像の少なくとも一部の表示を開始することができる。
【００１７】
一例において、ＧＰＵ１１４は、レイトレーシングをサポートすることができ、従って、グラフィックスドライバ１２２によって生成されることが可能な独自（プロプライエタリ）構造１３４を受信し、独自構造１３４に基づいてレイトレーシングを実行して、ディスプレイインタフェース１１６を介して画像をレンダリングするように動作可能なレイトレーシングコンポーネント１２０を含み得る。グラフィックスドライバ１２２は、レイトレーシングを実行して画像を表示することについてレイトレーシングコンポーネント１２０に指示するための独自構造１３４を生成すべく、ＧＰＵ１１４の製造者に特有であることができ、且つ／或いは該製造者によって提供されることができる。
【００１８】
一例において、アプリケーション１２４が、ディスプレイインタフェース１１６を介した表示のために画像を生成するよう（例えば、オペレーティングシステム１０８を介して）動作することができる。アプリケーション１２４は、レイトレーシング可能なＧＰＵ（例えば、ＧＰＵ１１４）が光線を介して送出される光子をエミュレートし、光線が反射する場所を決定し、シーンから光が戻る場所をトレースするなどして、画像を生成することができるように、レイトレーシングに関係する画像について、画像内の１つ以上のオブジェクトや、画像内の１つ以上のオブジェクトに対応する位置などについての情報を含み得るものであるジオメトリを定め得る加速構造１３０を生成し得る。一例において、アプリケーション１２４は、グラフィックスドライバ１２２に提供されることが可能な標準化された形式で加速構造１３０を生成することができる。グラフィックスドライバ１２２は、ＧＰＵ１１４上でのレイトレーシングに合わせて加速構造１３０を最適化すべく、加速構造１３０に基づいて独自構造１３４を生成することができ、その場合、独自構造１３４は、独自形式のものであってもよく、グラフィックスドライバ１２２によって知られているが、アプリケーション１２４や診断アプリケーション１２６などには必ずしも知られていない能力などを含んでもよい。
【００１９】
一例において、ＧＰＵ１１４は、オプションで、レイトレーシングの間にシェーダを呼び出すためのシェーダ呼び出しコンポーネント１３６を含んでもよい。例えば、シェーダ呼び出しコンポーネント１３６は、例えばレイトレーシングしているシーン内の何かと相互作用する光線を検出するなどの、シェーダに関連付けられた（例えば、アプリケーション１２４によって規定されるような）１つ以上の検出されたイベントに基づいて、シェーダを呼び出すことができる。例えば、レイトレーシングしているシーン内の構造と光線が相互作用することの検出に基づいて実行するシェーダに関係するパラメータを指定するシェーダテーブル１６０が（例えば、アプリケーション１２４によって）規定され得る。一例において、それらアプリケーション規定によるシェーダテーブル１６０は、ＧＰＵメモリ（例えば、ＧＰＵ１１４に割り当てられたメモリ１０６の部分、ＧＰＵ１１４がプロセッサ１０４とは独立である場合に物理的にＧＰＵ１１４上又はその近傍にあるメモリなど）に格納されたバイト配列であり、レイトレーシングしているシーン内の何かと光線が相互作用するときにどのシェーダを呼び出すべきかを決定するために、ランタイム（例えば、オペレーティングシステム１０８）及び／又はドライバ（例えば、グラフィックスドライバ１２２）によって使用される。シェーダテーブル１６０はまた、各シェーダにどのリソース（例えば、バッファ、テクスチャなど）が結び付けられるか又は他の方法で関連付けられるかを指定することができる。
【００２０】
オペレーティングシステム１０８はまた、画像をレイトレーシングすることに関係する特定の診断情報を決定して表示するための診断アプリケーション１２６を含むことができ、これは、画像がレイトレーシングされているときに開発者がパラメータ、メモリ状態などを見て分析することを可能にし得る。例えば、診断アプリケーション１２６は、レイトレーシング中に呼び出されるシェーダに関係するシェーダテーブル情報を決定及び表示し得るとともに、レイトレーシング中にシェーダが呼び出される及び／又は利用されるときにそうし得る。例えば、診断アプリケーション１２６は、レイトレーシングを実行する際にＧＰＵ１１４によって開始又は使用されるシェーダに関係するデータを傍受する傍受コンポーネント１３８を含むことができ、これは、呼び出されるシェーダについてのシェーダテーブル１６０に関係するデータを得るためにＧＰＵ１１４からのアプリケーションプログラミングインタフェース（ＡＰＩ）コールからデータを傍受すること、ＧＰＵ１１４にシェーダ情報を提供するプロセッサ１０４からのデータを傍受すること、及び／又はこれらに類することを含み得る。例えば、診断アプリケーション１２６は、アプリケーション１２４が実行されていてレイトレーシングを介して画像を描画しているときに実行されることができ、及び／又は、所望の時点でレイトレーシングデータを分析するためにアプリケーション１２４を一時停止させることを可能にし得る。これに関連して、診断アプリケーション１２６はまた、傍受したデータを解釈して、追加のシェーダテーブル情報を傍受したデータと関連付けるための解釈コンポーネント１４０、及び／又はインタフェースを介してシェーダテーブル情報を表示する又はその他の方法でレンダリングするための表示コンポーネント１４２を含み得る。
【００２１】
例えば、シェーダテーブル情報は、ディスプレイインタフェース１１６を介して表示されることができる。一例において、診断アプリケーション１２６は、同じコンピューティング装置１００上で実行されてもよいし、あるいは、診断アプリケーション１２６、１５６がここに記載されるようにしてシェーダテーブル情報や関連バッファなどを決定及び／又は受信するためにＧＰＵ１１４（又は関連コンポーネント）と少なくとも通信することができる限りにおいて、異なるコンピューティング装置１５０上で動作する診断アプリケーション１５６として実行されてもよい（異なるコンピューティング装置１５０が、診断アプリケーション１５６を実行するための別個のプロセッサ、メモリ、オペレーティングシステムなどを有することができる場合）。シェーダテーブル情報を表示する際に、診断アプリケーション１２６、１５６は、シェーダテーブル情報とのインタラクションや、シェーダテーブル情報内で表される起こり得るエラーのより単純化された特定などを可能にするための何らかの追加コンテキストを提供することができる。
【００２２】
図２は、画像をレイトレーシングする又はその他の方法でレンダリングする際にＧＰＵによって呼び出されるシェーダに関係するシェーダテーブル情報を決定及び表示する方法２００の一例のフローチャートである。例えば、方法２００は、コンピューティング装置１００によって実行されることができ、従って、方法２００を実行するための環境の非限定的な一例として、図１を参照して説明する。
【００２３】
方法２００では、アクション２０２にて、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの１つ以上のシェーダレコードを指定するバッファが、ＧＰＵ又はグラフィックスドライバから傍受され得る。一例において、例えばプロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、傍受コンポーネント１３８が、ＧＰＵ１１４又はグラフィックスドライバ１２２（例えば、それらの間の通信）から、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの１つ以上のシェーダレコードを指定するバッファを傍受することができる。例えば、傍受コンポーネント１３８は、（例えば、レイトレーシングしているシーン内の他のオブジェクトと光線が相互作用するときに）実行するためにシェーダを呼び出すシェーダ呼び出しコンポーネント１３６からバッファを傍受し得る。例えば、傍受コンポーネント１３８は、シェーダを起動するための、ＧＰＵ１１４から受信され得るＡＰＩコールにおいて、シェーダの呼び出しを検出することに基づいてメモリ１０６の一部を得ることによってなどで、バッファを傍受することができる。
【００２４】
一例において、バッファは、シェーダテーブル内の複数のシェーダレコードに関係するデータを持つバイト配列を含むことができる。各シェーダレコードは、バッファ内のストライド（例えば、あるバイト数）で表されるメモリ位置で開始することができ、及び／又は、最初のシェーダレコードは、既知のメモリ位置（例えば、バッファの始まり、バッファの始まりから既知のオフセットなど）で開始することができる。一例において、ストライドは、バッファ内で指し示され又は他の傍受若しくは受信された情報内で指し示され得る。一例において、傍受コンポーネント１３８は、シェーダ又はシェーダテーブルが開始されるときに、シェーダテーブル情報を傍受する又は（例えば、ＧＰＵ１１４への／からのＡＰＩコールを介して）他の方法で受信することの一部として、ストライド情報を傍受してもよい。他の一例において、傍受コンポーネント１３８は、傍受したバッファからストライド情報を決定してもよい（例えば、バッファ内の最初のｎバイト又は他の既知の位置で指し示され得る、等々）。加えて、バッファ内の各シェーダレコードは、バイトの既知の部分（例えば、シェーダレコードの最初のｎバイト又は他の既知の位置）にシェーダ識別子を含み得る。これに関連して、ストライド及び識別子長さを所与として、シェーダレコード及び対応する識別子はバッファから決定されることができ、ここで更に説明するように、追加のシェーダレコード情報を得るために使用されることができる。
【００２５】
方法２００では、アクション２０４にて、１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、１つ以上のシェーダレコードのレイアウトを決定することができる。一例において、例えばプロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、解釈コンポーネント１４０が、１つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、１つ以上のシェーダレコードのレイアウトを決定することができる。例えば、解釈コンポーネント１４０はまた、所与のシェーダレコードと該シェーダレコードのレイアウトと関連付けられた値との間の関係を指し示すインジケーションを受け取り得る。
【００２６】
一例において、アクション２０４でレイアウトを決定することは、オプションで、アクション２０６にて、１つ以上のシェーダレコードのルートシグネチャと関連付けられた先行バッファにおいてレイアウトを特定することを含み得る。一例において、例えば、プロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、解釈コンポーネント１４０が、１つ以上のシェーダレコードのルートシグネチャと関連付けられた先行バッファにおいてレイアウトを特定することができる。例えば、解釈コンポーネント１４０は、１つ以上のシェーダレコードに対応するシェーダをアプリケーション１２４が開始することに基づいて、１つ以上のシェーダレコードに対応するシェーダ情報をアプリケーション１２４がＧＰＵ１１４に提供するに基づいて（例えば、シェーダ情報を傍受する又は例えばＧＰＵ１１４がシェーダ及び／又は対応するシェーダテーブルを受信してセットアップした後などにアプリケーション１２４及び／又はＧＰＵ１１４からシェーダ情報をその他の方法で受け取ることによって）、及び／又はこれらに類するものにて、先行バッファを受け取ることができる。例えば、解釈コンポーネント１４０は、先行バッファ内のデータに基づいて、ルートシグネチャのリスト及び対応するシェーダレコードのレイアウトを決定し得る。例えば、ルートシグネチャは、一般的なプログラミング言語において関数シグネチャがあり得るものと概念的に同様に、パラメータレイアウトを規定することができる。レイトレーシングの状況では、例えば、ルートシグネチャは、シェーダレコード内のシェーダへのパラメータのレイアウトを規定するために使用されることができる。例えば、先行バッファはシェーダ又はシェーダテーブルを開始することの一部として受信され得る。
【００２７】
さらに、この例において、解釈コンポーネント１４０は、シェーダレコードの識別子と関連付けられたルートシグネチャを決定することができ、これは、バッファ内の更なるデータ（例えば、シェーダ識別子の後のシェーダレコード内のデータ）に基づき得る。他の一例において、解釈コンポーネント１４０は、アプリケーション１２４、ＧＰＵ１１４などからレイアウトを指し示すインジケーションを受け取ることができ、該レイアウトは、所与のルートシグネチャに対して、該ルートシグネチャを持つシェーダレコードに対して規定されたフィールドを指し示すことができる。解釈コンポーネント１４０は、次いで、所与の受信したシェーダレコードに関するルートシグネチャを適切なレイアウトにマッチングすることができる。例えば、レイアウトは、データを解釈することを支援するための更なるフィールドをシェーダレコードデータ内で規定することができる（例えば、フィールド名、バイト長など）。
【００２８】
方法２００では、アクション２０８にて、レイアウトに少なくとも部分的に基づいてバッファ内の追加のデータを解釈して、１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定することができる。一例において、例えばプロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、解釈コンポーネント１４０が、レイアウトに少なくとも部分的に基づいて、バッファ内の追加のデータを解釈して、１つ以上のシェーダレコードに対応する１つ以上のパラメータを決定することができる。例えば、解釈コンポーネント１４０は、説明したように、ルートシグネチャに関連付けられたレイアウトを決定することができるとともに、それに従って、レイアウトに基づいて、例えばルート定数、ルートディスクリプタ、又はルートディスクリプタハンドルなどの１つ以上の関連パラメータを決定することができる。例えば、レイアウトは、各パラメータについてのバイト数を指し示すことができ、解釈コンポーネント１４０は、識別子、ルートシグネチャ、及び／又はこれらに類するものに対応する最初のバイトの後のパラメータ値を読み取ることができる。
【００２９】
方法２００では、アクション２１０にて、１つ以上のパラメータを指し示すインジケーションを、アプリケーションを介して、インタフェース上に表示することができる。一例において、例えば、プロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、表示コンポーネント１４２が、アプリケーション（例えば、診断アプリケーション１２６、１５６）を介して、１つ以上のパラメータを指し示すインジケーションをインタフェース上に表示することができる。例えばオーディオレンダリングやバーチャルリアリティ表示などの、他のレンダリングも可能であり得る。また、可能なインタフェースの例を、ここに図示して説明する。一例において、バッファデータ内のシェーダレコードのテーブルを表示することができる。他の一例において、検出された潜在的なエラーも、インタフェース上で指し示され得る。さらに、この方法は、アクション２０４へと続いて、バッファデータ内の他のシェーダレコード（例えば、ストライド値に基づく後続メモリ位置までポインタを前進させることに基づく後続のシェーダレコード）を決定、解釈、及び表示し得る。
【００３０】
他の一例において、アクション２１２にて、追加のパラメータへのリンクを表示することができる。一例において、例えば、プロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、表示コンポーネント１４２が、追加のパラメータへのリンクを表示することができ、これは、リンクとしてパラメータ値を表示することを含み得る。例えば、リンクは、所与のシェーダレコードに対応するデータのバッファへのオフセットを指し示してもよく、リンクをアクティブにすることが、該シェーダレコードに対応するバッファ内のデータの実際のバイトの表示を生じさせ得る。他の一例において、リンクは、ルート構造を指し示してもよく、リンクをアクティブにすることは、例えばレイアウトなどの、ルート構造それ自体に関係するパラメータの表示を生じさせ得る。
【００３１】
方法２００では、オプションでアクション２１４にて、１つ以上のパラメータにおける潜在的なエラーを検出することができる。一例において、例えば、プロセッサ１０４、メモリ１０６、診断アプリケーション１２６、１５６などと共に、解釈コンポーネント１４０が、１つ以上のパラメータにおける潜在的なエラーを検出することができる。例えば、解釈コンポーネント１４０は、バッファ内のデータによって表される無効なメモリ位置、バッファ内のヌル値、期待されるもの以外の値が、１つ以上の位置で、バッファ内で検出されるような、部分的に破壊されたレコード、などを検出し得る。この例において、表示コンポーネント１４２は、現像剤に警告するために、潜在的なエラーを指し示すインジケーションを表示し得る。例えば、潜在的なエラーを検出することは、１つ以上のパラメータにおける値をメモリ位置境界内にないとして検出すること、（例えば、ルートシグネチャについて）ヌル値を検出すること、（例えば、レイアウトに対するルートシグネチャのマッピングにおいては無効な値が指し示されない場合などに、ルートシグネチャについて）無効な値を検出すること、及び／又はこれらに類することを含み得る。
【００３２】
他の例において、１つ以上のパラメータを指し示すインジケーションを表示することはまた、パラメータ値を、（例えば、傍受されたＡＰＩコール内で）アプリケーション１２４によって指し示される他の値にマッピングすることを含み得る。例えば、傍受コンポーネント１３８が、ＡＰＩコールを傍受して、ルートシグネチャをラベルと関連付け得る。この例において、データを解釈する際に、解釈コンポーネント１４０は、ルートシグネチャと関連付けられたラベルを決定することができ、表示コンポーネント１４２は、シェーダレコードデータを表示する際に、ルートシグネチャに代えて（又は加えて）該ラベルを表示することができる。
【００３３】
図３は、アプリケーション（例えば、アプリケーション１２４）によって作成される画像ジオメトリ３０２からレンダリングシーン３１０への画像データのデータフロー３００の一例を示している。この例では、例えばアプリケーション１２４などのアプリケーションが、ディスプレイ上にレンダリングされることになる画像ジオメトリ３０２を生成することができる。アプリケーション１２４は、画像ジオメトリ３０２をコンテキスト情報３０４と共に組み合わせて、画像ジオメトリ３０２を表す加速構造１３０を構築することができる。例えば、コンテキスト情報３０４は、画像内のオブジェクトの位置、画像内のオブジェクトの色、画像を生成するために使用される１つ以上のシェーダなどを含み得る。いずれにしても、アプリケーション１２４は、標準化された加速構造１３０を生成するためにＡＰＩ又は他のメカニズムを呼び出すことを含み得るものである加速構造１３０を構築し得る。一例において、加速構造１３０が境界ボックスを含むように生成される場合、１つ以上のシェーダテーブル１６０はまた、説明するように、例えばオブジェクトの形状／向き、シェーディングパラメータ、交点などの、画像の特定のパラメータを規定するように作成されることができ、又はその他の方法で決定若しくは使用されることができる。
【００３４】
加速構造１３０は、レンダリングシーン３１０の画像をレイトレーシングすることについてＧＰＵに指示するための独自構造１３４を（例えば、グラフィックスドライバによって）生成するために使用されることができる。例えば、独自構造１３４を用いて、レイトレーシングを実行してレンダリングシーン３１０を生成するための光線をＧＰＵ（例えば、ＧＰＵ１１４）にディスパッチすることができる。他の一例において、シェーダテーブル１６０はまた、独自構造１３４に基づいてレンダリングシーン３１０を生成するためのシェーダを呼び出すために提供されることができる。さらに、例えば、シェーダテーブル１６０及び／又は関連情報、呼び出し、パラメータなどは、例えばＧＰＵ１１４への／からのＡＰＩコール、アプリケーション１２４などを介して受信することによってなどで、診断アプリケーション１２６、１５６によって傍受されてもよい。説明するように、診断アプリケーション１２６、１５６は、この情報を解釈して、シェーダテーブル、対応するシェーダレコードなどに関係するパラメータを決定することができ、これらは、説明するように、画像がレイトレーシングされるときに診断目的で表示されることができる。また、説明するように、アプリケーション１２４は画像ジオメトリ３０２を提供することができ、診断アプリケーション１２６は、所与の時点でシェーダテーブル１６０を分析するために、レイトレーシングから踏み出すようにアプリケーション１２４又は対応するレイトレーシングを一時停止させることを可能にし得る。
【００３５】
図４は、ここで説明するように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードを表示するインタフェース４００の一例を示している。例えば、インタフェース４００は、画像をレイトレーシングする時点で呼び出されるシェーダのシェーダテーブル情報を表示することができる。一例において、診断アプリケーション１２６、１５６が、レイトレーシングが行われるときに実行されることができ、レイトレーシングが行われるときに、例えばインタフェース４００又は後述する他のインタフェースなどのインタフェースを表示することができる。一例において、診断アプリケーション１２６、１５６は、シェーダテーブルデータの検査を可能にするためにレイトレーシングを一時停止させる休止機能を含むことができ、及び／又は後に見るためにシェーダテーブルデータのログをとることができ、等々である。
【００３６】
例えば、インタフェース４００は、上述のように、その様々なサブコンポーネントを介して、診断アプリケーション１２６によって記述されるような、対応するシェーダレコードのシェーダレコード識別子４０２、ルートシグネチャ４０４、ルート引数値又は定数４０６、オフセット４０８などを表示することができる。更に説明するように、例えば、ルートシグネチャ４０４は、ルートシグネチャに関する情報の表示を生じさせるリンクとすることができる。また、オフセット４０８は、指定されたオフセットにあるバッファ内のデータの表示を生じさせるリンクとすることができる。この例において、インタフェース４００は、これは、それの基礎となるバイトがランタイム／ドライバによってどのように解釈されるのかを開発者が理解する助けとなるシェーダテーブル１６０のユーザフレンドリな表示を提示することができる。これに関連し、診断アプリケーション１２６、１５６は、例えばシェーダテーブル１６０に関係するストライド／サイズパラメータ、ルートシグネチャ、キャプチャ時シェーダ識別子マップなどの、キャプチャ時にアプリケーション１２４によって提供される追加コンテキストを取り、シェーダテーブルの各バイトがランタイム／ドライバによってどのように解釈されるかを示す。これは、開発者がシェーダテーブル内の問題を容易に診断することを可能にし得る。さらに、それは、ここで更に説明して図示するように、診断アプリケーション１２６、１５６が、例えば無効なシェーダ識別子又はヌルディスクリプタハンドルなどの、シェーダテーブルに伴う潜在的な問題を開発者に通知する自動警告を表示することを可能にし得る。
【００３７】
さらに、シェーダテーブル１６０に関して図示して説明しているが、ここに説明される概念は、シーンをレイトレーシングする又はその他の方法でレンダリングする仕方をＧＰＵ１１４が理解する助けとなる他のデータと共に使用されることができる。１つのそのような例は、“ＥｘｅｃｕｔｅＩｎｄｉｒｅｃｔ”としても知られる“間接レンダリング”を実行するときにＧＰＵ１１４によって使用されるデータとし得る。これは、ＧＰＵ１１４がどのレンダリングコマンドをどのパラメータを用いて実行すべきかを指定するコンテンツを持つＧＰＵメモリ内の“引数バッファ”を含むことができる。シェーダテーブルを見るための、ここに記載される概念は、例えば、間接的な引数バッファのコンテンツを視覚化するために適用され得る。この例、及びこれらの技術が適用され得る他の例において、診断アプリケーション１２６、１５６は同様に、（例えば、記録のリストとして）データを解釈し、それを表すものを提供することができる。
【００３８】
図５は、ここに説明するように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードと、可能性あるエラーを指し示すインジケーションとを表示するインタフェース５００の一例を示している。例えば、インタフェース５００は、バイト２４−３１におけるパラメータ１に関する誤ったバイトを指し示すアイコン５０２を表示することができる。例えば、診断アプリケーション１２６、１５６は、これがＲｏｏｔ  ＣＢＶに対応するＧＰＵメモリ内のリソースへのポインタであることを期待していたかもしれないが、このパラメータに対応すべきバッファデータセット内のバイトは、（例えば、上述のように、解釈コンポーネント１４０によって）無効である（例えば、このパラメータに関するメモリ位置の境界の外側）として検出されることがある。解釈コンポーネント１４０は、この潜在的なエラーを検出することができ、表示コンポーネント１４２は、対応するルート引数値の位置にインジケータアイコン５０２を表示することができる。
【００３９】
図６は、ここに記載されるように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードと、可能性あるエラーを指し示すインジケーションとを表示するインタフェース６００の一例を示している。例えば、インタフェース６００は、テーブル内の最後の４つのシェーダレコードにデータがないことを指し示すアイコン６０２を表示することができる。例えば、これは意図的であったこともあるが（例えば、ランタイムにこれらのシェーダレコードを使用しないことを開発者が知っていた場合）、間違いであったかもしれない。解釈コンポーネント１４０は、この可能性あるエラーを、レコードが期待されていたところ（例えば、レコードの数及び／又はストライド値に基づく）でのテーブル内のヌルデータとして検出することができ、表示コンポーネント１４２は、対応するレコードレイアウトの位置に（１つ以上の）インジケータアイコン６０２を表示することができる。
【００４０】
図７は、ここに記載されるように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードと、可能性あるエラーを指し示すインジケーションとを表示するインタフェース７００の一例を示している。例えば、インタフェース７００は、開発者がルートシグネチャをシェーダレコードと関連付けなかったことを指し示すアイコン７０２を表示することができる。解釈コンポーネント１４０は、この可能性あるエラーを検出することができ（例えば、シェーダレコードを検出したが、ルートシグネチャを決定する（又はルートシグネチャに対するヌル値を決定する）ことができないことに基づいて）、表示コンポーネント１４２は、対応するルートシグネチャに位置にインジケータアイコン７０２を表示することができる。
【００４１】
図８は、図１に示したもののような追加のオプションコンポーネントの詳細を含むコンピューティング装置１００の一例を示している。一例において、コンピューティング装置１００は、ここに記載されるコンポーネント及び機能のうちの１つ以上に関連付けられた処理機能を実行するプロセッサ１０４を含み得る。プロセッサ１０４は、単一組又は複数組のプロセッサ又はマルチコアプロセッサを含むことができる。また、プロセッサ１０４は、集積処理システム及び／又は分散処理システムとして実装されることができる。
【００４２】
コンピューティング装置１００は更に、例えばプロセッサ１０４によって実行されているアプリケーションのローカルバージョン、関連する命令、パラメータなどを記憶するためなどのメモリ１０６を含み得る。メモリ１０６は、例えばランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、テープ、磁気ディスク、光ディスク、揮発性メモリ、不揮発性メモリ、及びこれらの組み合わせなど、コンピュータによって使用可能なタイプのメモリを含むことができる。さらに、プロセッサ１０４及びメモリ１０６は、プロセッサ１０４上で実行されるオペレーティングシステム、例えばここに記載されるようなグラフィックスドライバ１２２、診断アプリケーション１２６、及び／又はこれらのコンポーネント、ディスプレイドライバなどの１つ以上のアプリケーション、及び／又はコンピューティング装置１００の他のコンポーネントを含み、それらを実行し得る。
【００４３】
さらに、コンピューティング装置１００は、ここに記載されるハードウェア、ソフトウェア、及びサービスを利用する１つ以上の他の装置、関係者、エンティティなどとの通信を確立して維持することを提供する通信コンポーネント８０２を含み得る。通信コンポーネント８０２は、コンピューティング装置１００上のコンポーネント間で、並びにコンピューティング装置１００と、例えば通信ネットワークを横断して配置された装置及び／又はコンピューティング装置１００に直列若しくはローカルに接続された装置などの外部装置との間で、通信を搬送し得る。例えば、通信コンポーネント８０２は、１つ以上のバスを含んでもよく、さらに、外部装置とインタフェースするように動作可能な、無線又は有線の送信器及び受信器にそれぞれ関連付けられた送信チェーンコンポーネント及び受信チェーンコンポーネントを含んでもよい。例えば、通信コンポーネント８０２は、診断アプリケーション１２６と他の装置上のＧＰＵとの間や、診断アプリケーション１２６の分散されたコンポーネント間などで通信を搬送することができる。
【００４４】
さらに、コンピューティング装置１００は、ここに記載される例に関連して使用される情報、データベース、及びプログラムの大容量ストレージを提供する、ハードウェア及び／又はソフトウェアの任意の好適な組み合わせとし得るものであるデータストア８０４を含み得る。例えば、データストア８０４は、プロセッサ１０４によって現在実行されていないアプリケーション及び／又は関連パラメータのためのデータリポジトリであってもよく、又はそれを含んでもよい。さらに、データストア８０４は、オペレーティングシステム、プロセッサ１０４上で実行される例えばグラフィックスドライバ１２２、診断アプリケーション１２６、及び／又はそれらのコンポーネント、ディスプレイドライバなどのアプリケーション、及び／又はコンピューティング装置１００の１つ以上の他のコンポーネントのためのデータリポジトリであってもよい。
【００４５】
コンピューティング装置１００はまた、コンピューティング装置１００のユーザからの入力を受け取るように動作可能で、さらに、（例えば、ディスプレイ装置へのディスプレイインタフェース１１６を介した）ユーザへの提示のための出力を生成するように動作可能な、ユーザインタフェースコンポーネント８０６を含み得る。ユーザインタフェースコンポーネント８０６は、以下に限られないがキーボード、数字キーパッド、マウス、タッチ感知ディスプレイ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識コンポーネント、ジェスチャ認識コンポーネント、深度センサ、注視追跡センサ、ユーザからの入力を受け取ることが可能な他の機構、又はこれらの組合せを含め、１つ以上の入力装置を含み得る。さらに、ユーザインタフェースコンポーネント８０６は、以下に限られないが、ディスプレイインタフェース１１６、スピーカ、触覚フィードバック機構、プリンタ、ユーザに出力を提示することが可能な他の機構、又はこれらの組合せを含め、１つ以上の出力装置を含み得る。一例において、ユーザインタフェースコンポーネント８０６は、ここに記載されるように、メモリ使用情報を表示するためのインタフェース４００、５００、６００、７００、又は類似のインタフェースを表示することができ、又はそれを含むことができる。
【００４６】
コンピューティング装置１００はまた、プロセッサ１０４から受信したレイトレーシング命令に基づいて画像をレンダリングするための、ここに記載されるようなＧＰＵ１１４を含むことができる。ＧＰＵ１１４は更に、ディスプレイ（図示せず）上にレンダリング画像の表示を生じさせるために、ディスプレイインタフェース１１６を介して信号を送信することができる。さらに、コンピューティング装置１００は、ここに記載されるように、（例えば、独自構造にて）レイトレーシング命令をＧＰＵ１１４に提供するための、ここに記載されるようなグラフィックスドライバ１２２を含み得る。さらに、コンピューティング装置１００は、シェーダテーブル情報を決定して表示するための、ここに記載されるような診断アプリケーション１２６を含み得る。
【００４７】
例として、要素、要素の任意の部分、又は複数の要素の任意の組み合わせは、１つ以上のプロセッサを含む“プロセッシングシステム”で実装され得る。プロセッサの例は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックデバイス（ＰＬＤ）、状態マシン、ゲート式ロジック、ディスクリートのハードウェア回路、及びこの開示を通して説明された様々な機能を実行するように構成された他の好適なハードウェアを含む。プロセッシングシステム内の１つ以上のプロセッサがソフトウェアを実行し得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、又はその他のいずれとして参照されるかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能プログラム、実行スレッド、プロシージャ、ファンクションなどを意味するように広く解釈されるべきである。
【００４８】
従って、１つ以上の例において、記載された機能のうちの１つ以上は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせで実装され得る。ソフトウェアで実装される場合、機能は、コンピュータ読み取り可能媒体上に１つ以上の命令又はコードとして格納又はエンコードされ得る。コンピュータ読み取り可能媒体は、コンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされることが可能な任意の利用可能な媒体であるとし得る。例として、限定ではないが、そのようなコンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は命令若しくはデータ構造の形態で所望のプログラムコードを搬送若しくは格納するために使用されることが可能で、コンピュータによってアクセスされることが可能な、他の任意の媒体、を有することができる。ディスクは、ここで使用されるとき、コンパクトディスク（ＣＤ）、レーザディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、及びフロッピーディスク（登録商標）を含み、一部のディスクは通常、磁気的にデータを再生し、一部のディスクは、レーザで光学的にデータを再生する。以上のものの組み合わせも、コンピュータ読み取り可能媒体の範囲に含まれるべきである。
【００４９】
前述の説明は、ここに記載された様々な例を当業者が実施することを可能にするために提供されている。これらの例に対する様々な変更が当業者には容易に明らかになるのであり、ここで規定された全体的原理は他の例にも適用され得る。従って、請求項は、ここに示された例に限定されるものではなく、請求項の文言と矛盾しない全範囲に付与されるべきであり、請求項の文言において、単数形での要素への言及は、そのように具体的に記載されない限り、“１つで唯一”を意味するのではなく、むしろ“１つ以上”を意味することを意図するものである。他に具体的に記載されない限り、用語“一部の”は、１つ以上を意味する。当業者に知られている又は後に知られることになるような、ここに記載された様々な例の要素に対する構造的及び機能的に均等なものは全て、請求項によって包含されることが意図される。さらに、ここに開示されたいずれのものも、そのような開示が請求項に明示的に記載されているかにかかわらず、公衆に捧げられることを意図するものではない。請求項のいずれの要素も、その要素がフレーズ“ｍｅａｎｓ  ｆｏｒ”を用いて明示的に記載されない限り、ミーンズプラスファンクションとして解釈されるべきでない。
【図１】
2021531577.tif 000003
【図２】
2021531577.tif 000004
【図３】
2021531577.tif 000005
【図４】
2021531577.tif 000006
【図５】
2021531577.tif 000007
【図６】
2021531577.tif 000008
【図７】
2021531577.tif 000009
【図８】
2021531577.tif 000010
【国際調査報告】
2021531577.tif 000011