JP7308921B2 - レイトレーシング画像に関連付けてシェーダテーブルを表示する技術 - Google Patents

レイトレーシング画像に関連付けてシェーダテーブルを表示する技術 Download PDF

Info

Publication number
JP7308921B2
JP7308921B2 JP2021502610A JP2021502610A JP7308921B2 JP 7308921 B2 JP7308921 B2 JP 7308921B2 JP 2021502610 A JP2021502610 A JP 2021502610A JP 2021502610 A JP2021502610 A JP 2021502610A JP 7308921 B2 JP7308921 B2 JP 7308921B2
Authority
JP
Japan
Prior art keywords
shader
parameters
buffer
layout
records
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
JP2021502610A
Other languages
English (en)
Other versions
JP2021531577A (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 Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of JP2021531577A publication Critical patent/JP2021531577A/ja
Application granted granted Critical
Publication of JP7308921B2 publication Critical patent/JP7308921B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/00Three-dimensional [3D] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/00Three-dimensional [3D] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

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

Description

コンピューティング装置の使用が、日に日にますます当たり前になってきている。コンピューティング装置は、標準的なデスクトップコンピュータからウェアラブルコンピューティング技術及びその先に至るまで多岐にわたる。近年成長しているコンピューティング装置の1つの分野は、例えばゲームやビデオストリームなどのレンダリングなどの画像レンダリングの状況であり、それらは、典型的に、グラフィックス処理ユニット(GPU)を当てにして、コンピューティング装置から受け取ったレンダリング命令に基づいてコンピューティング装置からディスプレイ装置へグラフィックスをレンダリングする。画像のレイトレースが、アプリケーションを介して画像を生成し、GPUを介して画像の表示を要求する別ソリューションとして開発されている。レイトレーシングにおいて、アプリケーションは、表示すべき画像を定めることができるとともに、ディスプレイ上に効率的に画像を生成することを支援する加速構造を定めることができる。
加速構造は、特定の光線が交差しそうなシーンからのオブジェクトを迅速に決定し、その光線が当たらない1つ以上のオブジェクトを排斥するために使用される。決定されたオブジェクトは、オブジェクトと交差する光線に関する情報に基づいて、ディスプレイ上に描画されることができる。さらに、レイトレーシングにおいて、アプリケーションは、レイトレーシングしているシーン内の他の何かと光線が交差する又はその他で相互作用するときに呼び出すシェーダを指定するシェーダテーブルを定めることができる。GPUは、光線に基づいてシーンのオブジェクトを描くことができ、レイトレーシングしているシーン内の他のオブジェクトと光線が交差又は相互作用するときに、シェーダテーブルに基づいて適切なシェーダを呼び出すことができる。
以下、1つ以上の例の簡略化された要約を、そのような例の基本的な理解を提供するために提示する。この要約は、意図する全ての例の広範囲に及ぶ概要ではなく、全ての例の鍵となる要素又は重要な要素を特定することも、いずれか又は全ての例の範囲を示すことも意図していない。その唯一の目的は、後に提示する更に詳細な説明の序文として、1つ以上の例の概念を簡略化した形で提示することである。
一例において、画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するためのコンピュータ実装された方法が提供される。当該方法は、グラフィックス処理ユニット(GPU)又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの1つ以上のシェーダレコードを指定するバッファを傍受し、コンピューティング装置により、前記1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記1つ以上のシェーダレコードのレイアウトを決定し、コンピューティング装置により、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定し、コンピューティング装置上で実行しているアプリケーションを介して、インタフェース上に前記1つ以上のパラメータを指し示すインジケーションを表示することを含む。
他の一例において、画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するコンピューティング装置が提供される。当該コンピューティング装置は、オペレーティングシステム及び診断アプリケーションを含む1つ以上のアプリケーションを実行するための1つ以上のパラメータ又は命令を格納したメモリと、該メモリに結合された少なくとも1つのプロセッサとを含む。前記少なくとも1つのプロセッサは、GPU又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの1つ以上のシェーダレコードを指定するバッファを傍受し、前記1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記1つ以上のシェーダレコードのレイアウトを決定し、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定し、診断アプリケーションを介して、インタフェース上に前記1つ以上のパラメータを指し示すインジケーションを表示する、ように構成される。
他の一例において、画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するように1つ以上のプロセッサによって実行可能なコードを含んだコンピュータ読み取り可能媒体が提供される。前記コードは、GPU又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの1つ以上のシェーダレコードを指定するバッファを傍受し、前記1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記1つ以上のシェーダレコードのレイアウトを決定し、該レイアウトに少なくとも部分的に基づいて前記バッファ内の追加データを解釈して、前記1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定し、アプリケーションを介して、インタフェース上に前記1つ以上のパラメータを指し示すインジケーションを表示する、ためのコードを含む。
前述の目的及び関連する目的の達成のため、1つ以上の例は、以下にて完全に記載され、特許請求の範囲にて特に指摘される特徴を有する。以下の説明及び添付の図面は、1つ以上の例の特定の例示的な特徴を詳細に記載する。しかしながら、それらの特徴は、様々な例の原理が使用され得る様々なやり方のうちのほんの数例を示すものであり、この説明は、全てのそのような例及びそれらに均等なものを含むことを意図している。
ここに記載される例に従った、グラフィックス処理ユニット(GPU)によってレイトレーシングされることが可能な画像のシェーダテーブル情報を決定及び表示するコンピューティング装置の一例の概略図である。 ここに記載される例に従った、シェーダテーブル情報を決定及び表示する方法の一例のフロー図である。 ここに記載される例に従った、シェーダテーブル情報を決定及び表示するために画像データを傍受することに関するデータフローの一例を示している。 ここに記載される例に従った、シェーダテーブル情報を表示するインタフェースの一例を示している。 ここに記載される例に従った、シェーダテーブル情報内のルート引数に関するエラーインジケーションを表示するインタフェースの一例を示している。 ここに記載される例に従った、シェーダテーブル情報内のシェーダレコードに関するエラーインジケーションを表示するインタフェースの一例を示している。 ここに記載される例に従った、シェーダテーブル情報のルートシグネチャ関連付けに関するエラーインジケーションを表示するインタフェースの一例を示している。 ここに記載される機能を実行するコンピューティング装置の一例の概略図である。
添付の図面との関連で以下に記載される詳細な説明は、様々な構成の説明として意図しており、ここに記載される概念が実施され得る最良の構成を表すことを意図するものではない。この詳細な説明は、様々な概念の完全なる理解を提供するために具体的詳細を含んでいる。しかしながら、当業者に明らかなことには、それらの概念は、それら具体的詳細なしに実施されてもよい。一部の例において、そのような概念を不明瞭にすることを避けるために、周知のコンポーネントはブロック図の形式で示す。
レイトレーシング画像にて定められるシェーダテーブルに関係するパラメータを表示することに関する様々な例がここに記載される。シェーダテーブルは、レイトレーシングしているシーン内の何かと光線が相互作用するときに、どのシェーダを呼び出すかを指定することができる。例えば、シェーダテーブルはシェーダレコードの配列を含むことができ、各レコードが、シェーダの識別子を、該シェーダが呼び出されるときに該シェーダに渡すべきパラメータのセットとともに含む。シーンをレイトレーシングしていて、ある表面に光線が遭遇するとき、実行すべきシェーダを選び採るためにシェーダテーブルにインデックスを付けることができる(光線から寄与される入力パラメータ、オブジェクト、シェーダレコードとともに)。シェーダテーブルは、典型的に、バイトの集合として格納され及び/又は通信されており、解釈するのに直感的でないものであり得る。これに関連し、シェーダテーブルに対応するバッファデータを傍受(インターセプト)及び解釈することで、(例えば、シェーダテーブルの未加工(ロー)バイトを表示する又は単に取得することとは対照的に)画像の対応するレイトレーシングを実行することに基づく、より直感的な形式でのデータの表示を提供することができる。例えば、様々なバッファからのデータを傍受して、どのシェーダレコードが利用されているのか、シェーダレコードに関するパラメータなどを決定することができ、また、パラメータを表示することで、画像がレイトレーシングされている間に開発者がパラメータを視覚化し、それに従って、レイトレーシングにおいて起こり得るエラーを特定することが可能になる。
特定の一例において、シェーダテーブルの少なくとも一部を表すバッファが(例えば、グラフィックス処理ユニット(GPU)から)傍受され得る。バッファは、シェーダレコード識別子に基づいて1つ以上のシェーダレコードを指し示すデータと、該識別子に続く対応するデータを示すデータとを含み得る。例えば、バッファ内のデータは、画像をレイトレースする間の時点で使用される1つ以上のシェーダレコードを指し示すことができる。この例において、バッファ又は他のバッファは、シェーダレコード識別子とルートシグネチャ又は他の構成要素との間の関連付けを指し示し得る。さらに、この例において、バッファ又は他のバッファは、ルートシグネチャとシェーダレコードのデータのレイアウトとの間の関連付けを指し示してもよい。従って、シェーダレコードを解釈して1つ以上の関連付けパラメータを決定することができ、データは、所与のシェーダレコードについての1つ以上の関連付けパラメータを指し示す形式で表示されることができ、また、レイトレーシング中の時点におけるシェーダレコードを表すことができる。一例において、バッファはまた、各シェーダレコードがバッファ内のどこで始まるかを決定するために、シェーダレコード間のストライド値を指し示してもよい。
さらに、一例において、シェーダレコードにおいて起こり得るエラーを検出及び特定することで、開発者が可能性あるエラーを視覚化すること及び/又はエラーを発生させている命令を訂正することが可能になる。例えば、期待値をバッファから決定することができない場合、及び/又はそれ以外でバッファデータが少なくとも部分的に破壊されていると決定される場合に、エラーを検出することができる。従って、ここに記載される概念は、さもなければ解釈することが困難であり得るものであるシェーダテーブル及び/又は対応するシェーダレコードの情報を表示することを提供して、レイトレーシングが実行されるときに、開発者がレイトレーシングにおいて起こり得るエラーを迅速且つ効率的に特定すること、及び/又は対応するシェーダを特定の光線に適用することを可能にする。
次に図1-図8を移り、ここに記載されるアクション又は処理を実行し得る1つ以上のコンポーネント及び1つ以上の方法を参照して例を示す。破線のコンポーネント及び/又はアクション/処理はオプションとし得る。図2にて後述する処理は特定の順序で提示され且つ/或いはコンポーネントの例によって実行されるとして提示されるが、実装に応じて、アクションの順序及びアクションを実行するコンポーネントは、一部の例において様々とし得る。また、一部の例において、以下のアクション、機能、及び/又は記載されるコンポーネントのうちの1つ以上は、特別にプログラムされたプロセッサによって、特別にプログラムされたソフトウェア若しくはコンピュータ読み取り可能媒体を実行するプロセッサによって、又は記載されるアクション又は機能を実行することが可能なハードウェアコンポーネント及び/又はソフトウェアコンポーネントの何らかの他の組み合わせによって実行され得る。
図1は、GPUを用いてレンダリングされる画像に関してシェーダテーブル情報を決定して表示するコンピューティング装置100及び/又は関連コンポーネントの一例の概略図である。例えば、コンピューティング装置100は、プロセッサ104及び/又はメモリ106を含むか、その他のやり方でそれらと結合されるかすることができ、プロセッサ104及び/又はメモリ106は、ここに記載されるように、シェーダテーブル情報を決定又は表示することに関係する命令又は他のパラメータを実行又は格納するように構成されることができる。コンピューティング装置100は、1つ以上のアプリケーションを実行するための環境を提供するために、(例えば、プロセッサ104及び/又はメモリ106を介して)オペレーティングシステム108を実行することができる。コンピューティング装置100はまた、ディスプレイポート118を介してコンピューティング装置100に結合され得るものであるディスプレイ上に1つ以上の画像の表示を生じさせるために、レンダリング命令を処理し及び/又は関連コマンドをディスプレイインタフェース116に通信するGPU114を含むことができる。
一例において、ディスプレイインタフェース116は、ディスプレイポート118を介してディスプレイ(図示せず)と通信するために、プロセッサ104及び/又はメモリ106と通信可能に結合されることができる。ディスプレイポート118は、ここで参照されるとき、高解像度マルチメディアインタフェース(HDMI)ポート、ディスプレイシリアルインタフェース(DSI)ポート、モバイルインダストリプロセッサインタフェース(MIPI)DSIポート、ユニバーサルシリアルバス(USB)ポート、Firewireポート、又はコンピューティング装置100とディスプレイとの間での通信を可能にし得る他の内蔵の若しくは外付けの有線若しくは無線のディスプレイポートを含め、様々なタイプのポートのうちの1つ以上を含むことができる。
一例において、GPU114は、ディスプレイインタフェース116の一部(例えば、ディスプレイインタフェース116の回路ボード上のプロセッサ)であってもよい。他の一例において、GPU114、ディスプレイインタフェース116などは、プロセッサ104とともに集積されてもよい。GPU114やディスプレイインタフェース116などがバスを介してプロセッサ104と通信して、GPU114へのレンダリング命令の提供を支援することができるような、実質的に如何なる組み合わせのハードウェアも可能である。GPU114は、レンダリング命令を処理して画像をレンダリングすることができるとともに、ディスプレイインタフェース116のディスプレイポート118を介してディスプレイに関連信号を送信することによって、ディスプレイ上での画像の少なくとも一部の表示を開始することができる。
一例において、GPU114は、レイトレーシングをサポートすることができ、従って、グラフィックスドライバ122によって生成されることが可能な独自(プロプライエタリ)構造134を受信し、独自構造134に基づいてレイトレーシングを実行して、ディスプレイインタフェース116を介して画像をレンダリングするように動作可能なレイトレーシングコンポーネント120を含み得る。グラフィックスドライバ122は、レイトレーシングを実行して画像を表示することについてレイトレーシングコンポーネント120に指示するための独自構造134を生成すべく、GPU114の製造者に特有であることができ、且つ/或いは該製造者によって提供されることができる。
一例において、アプリケーション124が、ディスプレイインタフェース116を介した表示のために画像を生成するよう(例えば、オペレーティングシステム108を介して)動作することができる。アプリケーション124は、レイトレーシング可能なGPU(例えば、GPU114)が光線を介して送出される光子をエミュレートし、光線が反射する場所を決定し、シーンから光が戻る場所をトレースするなどして、画像を生成することができるように、レイトレーシングに関係する画像について、画像内の1つ以上のオブジェクトや、画像内の1つ以上のオブジェクトに対応する位置などについての情報を含み得るものであるジオメトリを定め得る加速構造130を生成し得る。一例において、アプリケーション124は、グラフィックスドライバ122に提供されることが可能な標準化された形式で加速構造130を生成することができる。グラフィックスドライバ122は、GPU114上でのレイトレーシングに合わせて加速構造130を最適化すべく、加速構造130に基づいて独自構造134を生成することができ、その場合、独自構造134は、独自形式のものであってもよく、グラフィックスドライバ122によって知られているが、アプリケーション124や診断アプリケーション126などには必ずしも知られていない能力などを含んでもよい。
一例において、GPU114は、オプションで、レイトレーシングの間にシェーダを呼び出すためのシェーダ呼び出しコンポーネント136を含んでもよい。例えば、シェーダ呼び出しコンポーネント136は、例えばレイトレーシングしているシーン内の何かと相互作用する光線を検出するなどの、シェーダに関連付けられた(例えば、アプリケーション124によって規定されるような)1つ以上の検出されたイベントに基づいて、シェーダを呼び出すことができる。例えば、レイトレーシングしているシーン内の構造と光線が相互作用することの検出に基づいて実行するシェーダに関係するパラメータを指定するシェーダテーブル160が(例えば、アプリケーション124によって)規定され得る。一例において、それらアプリケーション規定によるシェーダテーブル160は、GPUメモリ(例えば、GPU114に割り当てられたメモリ106の部分、GPU114がプロセッサ104とは独立である場合に物理的にGPU114上又はその近傍にあるメモリなど)に格納されたバイト配列であり、レイトレーシングしているシーン内の何かと光線が相互作用するときにどのシェーダを呼び出すべきかを決定するために、ランタイム(例えば、オペレーティングシステム108)及び/又はドライバ(例えば、グラフィックスドライバ122)によって使用される。シェーダテーブル160はまた、各シェーダにどのリソース(例えば、バッファ、テクスチャなど)が結び付けられるか又は他の方法で関連付けられるかを指定することができる。
オペレーティングシステム108はまた、画像をレイトレーシングすることに関係する特定の診断情報を決定して表示するための診断アプリケーション126を含むことができ、これは、画像がレイトレーシングされているときに開発者がパラメータ、メモリ状態などを見て分析することを可能にし得る。例えば、診断アプリケーション126は、レイトレーシング中に呼び出されるシェーダに関係するシェーダテーブル情報を決定及び表示し得るとともに、レイトレーシング中にシェーダが呼び出される及び/又は利用されるときにそうし得る。例えば、診断アプリケーション126は、レイトレーシングを実行する際にGPU114によって開始又は使用されるシェーダに関係するデータを傍受する傍受コンポーネント138を含むことができ、これは、呼び出されるシェーダについてのシェーダテーブル160に関係するデータを得るためにGPU114からのアプリケーションプログラミングインタフェース(API)コールからデータを傍受すること、GPU114にシェーダ情報を提供するプロセッサ104からのデータを傍受すること、及び/又はこれらに類することを含み得る。例えば、診断アプリケーション126は、アプリケーション124が実行されていてレイトレーシングを介して画像を描画しているときに実行されることができ、及び/又は、所望の時点でレイトレーシングデータを分析するためにアプリケーション124を一時停止させることを可能にし得る。これに関連して、診断アプリケーション126はまた、傍受したデータを解釈して、追加のシェーダテーブル情報を傍受したデータと関連付けるための解釈コンポーネント140、及び/又はインタフェースを介してシェーダテーブル情報を表示する又はその他の方法でレンダリングするための表示コンポーネント142を含み得る。
例えば、シェーダテーブル情報は、ディスプレイインタフェース116を介して表示されることができる。一例において、診断アプリケーション126は、同じコンピューティング装置100上で実行されてもよいし、あるいは、診断アプリケーション126、156がここに記載されるようにしてシェーダテーブル情報や関連バッファなどを決定及び/又は受信するためにGPU114(又は関連コンポーネント)と少なくとも通信することができる限りにおいて、異なるコンピューティング装置150上で動作する診断アプリケーション156として実行されてもよい(異なるコンピューティング装置150が、診断アプリケーション156を実行するための別個のプロセッサ、メモリ、オペレーティングシステムなどを有することができる場合)。シェーダテーブル情報を表示する際に、診断アプリケーション126、156は、シェーダテーブル情報とのインタラクションや、シェーダテーブル情報内で表される起こり得るエラーのより単純化された特定などを可能にするための何らかの追加コンテキストを提供することができる。
図2は、画像をレイトレーシングする又はその他の方法でレンダリングする際にGPUによって呼び出されるシェーダに関係するシェーダテーブル情報を決定及び表示する方法200の一例のフローチャートである。例えば、方法200は、コンピューティング装置100によって実行されることができ、従って、方法200を実行するための環境の非限定的な一例として、図1を参照して説明する。
方法200では、アクション202にて、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの1つ以上のシェーダレコードを指定するバッファが、GPU又はグラフィックスドライバから傍受され得る。一例において、例えばプロセッサ104、メモリ106、診断アプリケーション126、156などと共に、傍受コンポーネント138が、GPU114又はグラフィックスドライバ122(例えば、それらの間の通信)から、レイトレーシングを用いて画像を生成する際に使用するシェーダテーブルの1つ以上のシェーダレコードを指定するバッファを傍受することができる。例えば、傍受コンポーネント138は、(例えば、レイトレーシングしているシーン内の他のオブジェクトと光線が相互作用するときに)実行するためにシェーダを呼び出すシェーダ呼び出しコンポーネント136からバッファを傍受し得る。例えば、傍受コンポーネント138は、シェーダを起動するための、GPU114から受信され得るAPIコールにおいて、シェーダの呼び出しを検出することに基づいてメモリ106の一部を得ることによってなどで、バッファを傍受することができる。
一例において、バッファは、シェーダテーブル内の複数のシェーダレコードに関係するデータを持つバイト配列を含むことができる。各シェーダレコードは、バッファ内のストライド(例えば、あるバイト数)で表されるメモリ位置で開始することができ、及び/又は、最初のシェーダレコードは、既知のメモリ位置(例えば、バッファの始まり、バッファの始まりから既知のオフセットなど)で開始することができる。一例において、ストライドは、バッファ内で指し示され又は他の傍受若しくは受信された情報内で指し示され得る。一例において、傍受コンポーネント138は、シェーダ又はシェーダテーブルが開始されるときに、シェーダテーブル情報を傍受する又は(例えば、GPU114への/からのAPIコールを介して)他の方法で受信することの一部として、ストライド情報を傍受してもよい。他の一例において、傍受コンポーネント138は、傍受したバッファからストライド情報を決定してもよい(例えば、バッファ内の最初のnバイト又は他の既知の位置で指し示され得る、等々)。加えて、バッファ内の各シェーダレコードは、バイトの既知の部分(例えば、シェーダレコードの最初のnバイト又は他の既知の位置)にシェーダ識別子を含み得る。これに関連して、ストライド及び識別子長さを所与として、シェーダレコード及び対応する識別子はバッファから決定されることができ、ここで更に説明するように、追加のシェーダレコード情報を得るために使用されることができる。
方法200では、アクション204にて、1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、1つ以上のシェーダレコードのレイアウトを決定することができる。一例において、例えばプロセッサ104、メモリ106、診断アプリケーション126、156などと共に、解釈コンポーネント140が、1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、1つ以上のシェーダレコードのレイアウトを決定することができる。例えば、解釈コンポーネント140はまた、所与のシェーダレコードと該シェーダレコードのレイアウトと関連付けられた値との間の関係を指し示すインジケーションを受け取り得る。
一例において、アクション204でレイアウトを決定することは、オプションで、アクション206にて、1つ以上のシェーダレコードのルートシグネチャと関連付けられた先行バッファにおいてレイアウトを特定することを含み得る。一例において、例えば、プロセッサ104、メモリ106、診断アプリケーション126、156などと共に、解釈コンポーネント140が、1つ以上のシェーダレコードのルートシグネチャと関連付けられた先行バッファにおいてレイアウトを特定することができる。例えば、解釈コンポーネント140は、1つ以上のシェーダレコードに対応するシェーダをアプリケーション124が開始することに基づいて、1つ以上のシェーダレコードに対応するシェーダ情報をアプリケーション124がGPU114に提供するに基づいて(例えば、シェーダ情報を傍受する又は例えばGPU114がシェーダ及び/又は対応するシェーダテーブルを受信してセットアップした後などにアプリケーション124及び/又はGPU114からシェーダ情報をその他の方法で受け取ることによって)、及び/又はこれらに類するものにて、先行バッファを受け取ることができる。例えば、解釈コンポーネント140は、先行バッファ内のデータに基づいて、ルートシグネチャのリスト及び対応するシェーダレコードのレイアウトを決定し得る。例えば、ルートシグネチャは、一般的なプログラミング言語において関数シグネチャがあり得るものと概念的に同様に、パラメータレイアウトを規定することができる。レイトレーシングの状況では、例えば、ルートシグネチャは、シェーダレコード内のシェーダへのパラメータのレイアウトを規定するために使用されることができる。例えば、先行バッファはシェーダ又はシェーダテーブルを開始することの一部として受信され得る。
さらに、この例において、解釈コンポーネント140は、シェーダレコードの識別子と関連付けられたルートシグネチャを決定することができ、これは、バッファ内の更なるデータ(例えば、シェーダ識別子の後のシェーダレコード内のデータ)に基づき得る。他の一例において、解釈コンポーネント140は、アプリケーション124、GPU114などからレイアウトを指し示すインジケーションを受け取ることができ、該レイアウトは、所与のルートシグネチャに対して、該ルートシグネチャを持つシェーダレコードに対して規定されたフィールドを指し示すことができる。解釈コンポーネント140は、次いで、所与の受信したシェーダレコードに関するルートシグネチャを適切なレイアウトにマッチングすることができる。例えば、レイアウトは、データを解釈することを支援するための更なるフィールドをシェーダレコードデータ内で規定することができる(例えば、フィールド名、バイト長など)。
方法200では、アクション208にて、レイアウトに少なくとも部分的に基づいてバッファ内の追加のデータを解釈して、1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定することができる。一例において、例えばプロセッサ104、メモリ106、診断アプリケーション126、156などと共に、解釈コンポーネント140が、レイアウトに少なくとも部分的に基づいて、バッファ内の追加のデータを解釈して、1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定することができる。例えば、解釈コンポーネント140は、説明したように、ルートシグネチャに関連付けられたレイアウトを決定することができるとともに、それに従って、レイアウトに基づいて、例えばルート定数、ルートディスクリプタ、又はルートディスクリプタハンドルなどの1つ以上の関連パラメータを決定することができる。例えば、レイアウトは、各パラメータについてのバイト数を指し示すことができ、解釈コンポーネント140は、識別子、ルートシグネチャ、及び/又はこれらに類するものに対応する最初のバイトの後のパラメータ値を読み取ることができる。
方法200では、アクション210にて、1つ以上のパラメータを指し示すインジケーションを、アプリケーションを介して、インタフェース上に表示することができる。一例において、例えば、プロセッサ104、メモリ106、診断アプリケーション126、156などと共に、表示コンポーネント142が、アプリケーション(例えば、診断アプリケーション126、156)を介して、1つ以上のパラメータを指し示すインジケーションをインタフェース上に表示することができる。例えばオーディオレンダリングやバーチャルリアリティ表示などの、他のレンダリングも可能であり得る。また、可能なインタフェースの例を、ここに図示して説明する。一例において、バッファデータ内のシェーダレコードのテーブルを表示することができる。他の一例において、検出された潜在的なエラーも、インタフェース上で指し示され得る。さらに、この方法は、アクション204へと続いて、バッファデータ内の他のシェーダレコード(例えば、ストライド値に基づく後続メモリ位置までポインタを前進させることに基づく後続のシェーダレコード)を決定、解釈、及び表示し得る。
他の一例において、アクション212にて、追加のパラメータへのリンクを表示することができる。一例において、例えば、プロセッサ104、メモリ106、診断アプリケーション126、156などと共に、表示コンポーネント142が、追加のパラメータへのリンクを表示することができ、これは、リンクとしてパラメータ値を表示することを含み得る。例えば、リンクは、所与のシェーダレコードに対応するデータのバッファへのオフセットを指し示してもよく、リンクをアクティブにすることが、該シェーダレコードに対応するバッファ内のデータの実際のバイトの表示を生じさせ得る。他の一例において、リンクは、ルート構造を指し示してもよく、リンクをアクティブにすることは、例えばレイアウトなどの、ルート構造それ自体に関係するパラメータの表示を生じさせ得る。
方法200では、オプションでアクション214にて、1つ以上のパラメータにおける潜在的なエラーを検出することができる。一例において、例えば、プロセッサ104、メモリ106、診断アプリケーション126、156などと共に、解釈コンポーネント140が、1つ以上のパラメータにおける潜在的なエラーを検出することができる。例えば、解釈コンポーネント140は、バッファ内のデータによって表される無効なメモリ位置、バッファ内のヌル値、期待されるもの以外の値が、1つ以上の位置で、バッファ内で検出されるような、部分的に破壊されたレコード、などを検出し得る。この例において、表示コンポーネント142は、現像剤に警告するために、潜在的なエラーを指し示すインジケーションを表示し得る。例えば、潜在的なエラーを検出することは、1つ以上のパラメータにおける値をメモリ位置境界内にないとして検出すること、(例えば、ルートシグネチャについて)ヌル値を検出すること、(例えば、レイアウトに対するルートシグネチャのマッピングにおいては無効な値が指し示されない場合などに、ルートシグネチャについて)無効な値を検出すること、及び/又はこれらに類することを含み得る。
他の例において、1つ以上のパラメータを指し示すインジケーションを表示することはまた、パラメータ値を、(例えば、傍受されたAPIコール内で)アプリケーション124によって指し示される他の値にマッピングすることを含み得る。例えば、傍受コンポーネント138が、APIコールを傍受して、ルートシグネチャをラベルと関連付け得る。この例において、データを解釈する際に、解釈コンポーネント140は、ルートシグネチャと関連付けられたラベルを決定することができ、表示コンポーネント142は、シェーダレコードデータを表示する際に、ルートシグネチャに代えて(又は加えて)該ラベルを表示することができる。
図3は、アプリケーション(例えば、アプリケーション124)によって作成される画像ジオメトリ302からレンダリングシーン310への画像データのデータフロー300の一例を示している。この例では、例えばアプリケーション124などのアプリケーションが、ディスプレイ上にレンダリングされることになる画像ジオメトリ302を生成することができる。アプリケーション124は、画像ジオメトリ302をコンテキスト情報304と共に組み合わせて、画像ジオメトリ302を表す加速構造130を構築することができる。例えば、コンテキスト情報304は、画像内のオブジェクトの位置、画像内のオブジェクトの色、画像を生成するために使用される1つ以上のシェーダなどを含み得る。いずれにしても、アプリケーション124は、標準化された加速構造130を生成するためにAPI又は他のメカニズムを呼び出すことを含み得るものである加速構造130を構築し得る。一例において、加速構造130が境界ボックスを含むように生成される場合、1つ以上のシェーダテーブル160はまた、説明するように、例えばオブジェクトの形状/向き、シェーディングパラメータ、交点などの、画像の特定のパラメータを規定するように作成されることができ、又はその他の方法で決定若しくは使用されることができる。
加速構造130は、レンダリングシーン310の画像をレイトレーシングすることについてGPUに指示するための独自構造134を(例えば、グラフィックスドライバによって)生成するために使用されることができる。例えば、独自構造134を用いて、レイトレーシングを実行してレンダリングシーン310を生成するための光線をGPU(例えば、GPU114)にディスパッチすることができる。他の一例において、シェーダテーブル160はまた、独自構造134に基づいてレンダリングシーン310を生成するためのシェーダを呼び出すために提供されることができる。さらに、例えば、シェーダテーブル160及び/又は関連情報、呼び出し、パラメータなどは、例えばGPU114への/からのAPIコール、アプリケーション124などを介して受信することによってなどで、診断アプリケーション126、156によって傍受されてもよい。説明するように、診断アプリケーション126、156は、この情報を解釈して、シェーダテーブル、対応するシェーダレコードなどに関係するパラメータを決定することができ、これらは、説明するように、画像がレイトレーシングされるときに診断目的で表示されることができる。また、説明するように、アプリケーション124は画像ジオメトリ302を提供することができ、診断アプリケーション126は、所与の時点でシェーダテーブル160を分析するために、レイトレーシングから踏み出すようにアプリケーション124又は対応するレイトレーシングを一時停止させることを可能にし得る。
図4は、ここで説明するように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードを表示するインタフェース400の一例を示している。例えば、インタフェース400は、画像をレイトレーシングする時点で呼び出されるシェーダのシェーダテーブル情報を表示することができる。一例において、診断アプリケーション126、156が、レイトレーシングが行われるときに実行されることができ、レイトレーシングが行われるときに、例えばインタフェース400又は後述する他のインタフェースなどのインタフェースを表示することができる。一例において、診断アプリケーション126、156は、シェーダテーブルデータの検査を可能にするためにレイトレーシングを一時停止させる休止機能を含むことができ、及び/又は後に見るためにシェーダテーブルデータのログをとることができ、等々である。
例えば、インタフェース400は、上述のように、その様々なサブコンポーネントを介して、診断アプリケーション126によって記述されるような、対応するシェーダレコードのシェーダレコード識別子402、ルートシグネチャ404、ルート引数値又は定数406、オフセット408などを表示することができる。更に説明するように、例えば、ルートシグネチャ404は、ルートシグネチャに関する情報の表示を生じさせるリンクとすることができる。また、オフセット408は、指定されたオフセットにあるバッファ内のデータの表示を生じさせるリンクとすることができる。この例において、インタフェース400は、これは、それの基礎となるバイトがランタイム/ドライバによってどのように解釈されるのかを開発者が理解する助けとなるシェーダテーブル160のユーザフレンドリな表示を提示することができる。これに関連し、診断アプリケーション126、156は、例えばシェーダテーブル160に関係するストライド/サイズパラメータ、ルートシグネチャ、キャプチャ時シェーダ識別子マップなどの、キャプチャ時にアプリケーション124によって提供される追加コンテキストを取り、シェーダテーブルの各バイトがランタイム/ドライバによってどのように解釈されるかを示す。これは、開発者がシェーダテーブル内の問題を容易に診断することを可能にし得る。さらに、それは、ここで更に説明して図示するように、診断アプリケーション126、156が、例えば無効なシェーダ識別子又はヌルディスクリプタハンドルなどの、シェーダテーブルに伴う潜在的な問題を開発者に通知する自動警告を表示することを可能にし得る。
さらに、シェーダテーブル160に関して図示して説明しているが、ここに説明される概念は、シーンをレイトレーシングする又はその他の方法でレンダリングする仕方をGPU114が理解する助けとなる他のデータと共に使用されることができる。1つのそのような例は、“ExecuteIndirect”としても知られる“間接レンダリング”を実行するときにGPU114によって使用されるデータとし得る。これは、GPU114がどのレンダリングコマンドをどのパラメータを用いて実行すべきかを指定するコンテンツを持つGPUメモリ内の“引数バッファ”を含むことができる。シェーダテーブルを見るための、ここに記載される概念は、例えば、間接的な引数バッファのコンテンツを視覚化するために適用され得る。この例、及びこれらの技術が適用され得る他の例において、診断アプリケーション126、156は同様に、(例えば、記録のリストとして)データを解釈し、それを表すものを提供することができる。
図5は、ここに説明するように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードと、可能性あるエラーを指し示すインジケーションとを表示するインタフェース500の一例を示している。例えば、インタフェース500は、バイト24-31におけるパラメータ1に関する誤ったバイトを指し示すアイコン502を表示することができる。例えば、診断アプリケーション126、156は、これがRoot CBVに対応するGPUメモリ内のリソースへのポインタであることを期待していたかもしれないが、このパラメータに対応すべきバッファデータセット内のバイトは、(例えば、上述のように、解釈コンポーネント140によって)無効である(例えば、このパラメータに関するメモリ位置の境界の外側)として検出されることがある。解釈コンポーネント140は、この潜在的なエラーを検出することができ、表示コンポーネント142は、対応するルート引数値の位置にインジケータアイコン502を表示することができる。
図6は、ここに記載されるように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードと、可能性あるエラーを指し示すインジケーションとを表示するインタフェース600の一例を示している。例えば、インタフェース600は、テーブル内の最後の4つのシェーダレコードにデータがないことを指し示すアイコン602を表示することができる。例えば、これは意図的であったこともあるが(例えば、ランタイムにこれらのシェーダレコードを使用しないことを開発者が知っていた場合)、間違いであったかもしれない。解釈コンポーネント140は、この可能性あるエラーを、レコードが期待されていたところ(例えば、レコードの数及び/又はストライド値に基づく)でのテーブル内のヌルデータとして検出することができ、表示コンポーネント142は、対応するレコードレイアウトの位置に(1つ以上の)インジケータアイコン602を表示することができる。
図7は、ここに記載されるように、傍受されたシェーダテーブルバッファデータから解釈されたシェーダレコードと、可能性あるエラーを指し示すインジケーションとを表示するインタフェース700の一例を示している。例えば、インタフェース700は、開発者がルートシグネチャをシェーダレコードと関連付けなかったことを指し示すアイコン702を表示することができる。解釈コンポーネント140は、この可能性あるエラーを検出することができ(例えば、シェーダレコードを検出したが、ルートシグネチャを決定する(又はルートシグネチャに対するヌル値を決定する)ことができないことに基づいて)、表示コンポーネント142は、対応するルートシグネチャに位置にインジケータアイコン702を表示することができる。
図8は、図1に示したもののような追加のオプションコンポーネントの詳細を含むコンピューティング装置100の一例を示している。一例において、コンピューティング装置100は、ここに記載されるコンポーネント及び機能のうちの1つ以上に関連付けられた処理機能を実行するプロセッサ104を含み得る。プロセッサ104は、単一組又は複数組のプロセッサ又はマルチコアプロセッサを含むことができる。また、プロセッサ104は、集積処理システム及び/又は分散処理システムとして実装されることができる。
コンピューティング装置100は更に、例えばプロセッサ104によって実行されているアプリケーションのローカルバージョン、関連する命令、パラメータなどを記憶するためなどのメモリ106を含み得る。メモリ106は、例えばランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、テープ、磁気ディスク、光ディスク、揮発性メモリ、不揮発性メモリ、及びこれらの組み合わせなど、コンピュータによって使用可能なタイプのメモリを含むことができる。さらに、プロセッサ104及びメモリ106は、プロセッサ104上で実行されるオペレーティングシステム、例えばここに記載されるようなグラフィックスドライバ122、診断アプリケーション126、及び/又はこれらのコンポーネント、ディスプレイドライバなどの1つ以上のアプリケーション、及び/又はコンピューティング装置100の他のコンポーネントを含み、それらを実行し得る。
さらに、コンピューティング装置100は、ここに記載されるハードウェア、ソフトウェア、及びサービスを利用する1つ以上の他の装置、関係者、エンティティなどとの通信を確立して維持することを提供する通信コンポーネント802を含み得る。通信コンポーネント802は、コンピューティング装置100上のコンポーネント間で、並びにコンピューティング装置100と、例えば通信ネットワークを横断して配置された装置及び/又はコンピューティング装置100に直列若しくはローカルに接続された装置などの外部装置との間で、通信を搬送し得る。例えば、通信コンポーネント802は、1つ以上のバスを含んでもよく、さらに、外部装置とインタフェースするように動作可能な、無線又は有線の送信器及び受信器にそれぞれ関連付けられた送信チェーンコンポーネント及び受信チェーンコンポーネントを含んでもよい。例えば、通信コンポーネント802は、診断アプリケーション126と他の装置上のGPUとの間や、診断アプリケーション126の分散されたコンポーネント間などで通信を搬送することができる。
さらに、コンピューティング装置100は、ここに記載される例に関連して使用される情報、データベース、及びプログラムの大容量ストレージを提供する、ハードウェア及び/又はソフトウェアの任意の好適な組み合わせとし得るものであるデータストア804を含み得る。例えば、データストア804は、プロセッサ104によって現在実行されていないアプリケーション及び/又は関連パラメータのためのデータリポジトリであってもよく、又はそれを含んでもよい。さらに、データストア804は、オペレーティングシステム、プロセッサ104上で実行される例えばグラフィックスドライバ122、診断アプリケーション126、及び/又はそれらのコンポーネント、ディスプレイドライバなどのアプリケーション、及び/又はコンピューティング装置100の1つ以上の他のコンポーネントのためのデータリポジトリであってもよい。
コンピューティング装置100はまた、コンピューティング装置100のユーザからの入力を受け取るように動作可能で、さらに、(例えば、ディスプレイ装置へのディスプレイインタフェース116を介した)ユーザへの提示のための出力を生成するように動作可能な、ユーザインタフェースコンポーネント806を含み得る。ユーザインタフェースコンポーネント806は、以下に限られないがキーボード、数字キーパッド、マウス、タッチ感知ディスプレイ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識コンポーネント、ジェスチャ認識コンポーネント、深度センサ、注視追跡センサ、ユーザからの入力を受け取ることが可能な他の機構、又はこれらの組合せを含め、1つ以上の入力装置を含み得る。さらに、ユーザインタフェースコンポーネント806は、以下に限られないが、ディスプレイインタフェース116、スピーカ、触覚フィードバック機構、プリンタ、ユーザに出力を提示することが可能な他の機構、又はこれらの組合せを含め、1つ以上の出力装置を含み得る。一例において、ユーザインタフェースコンポーネント806は、ここに記載されるように、メモリ使用情報を表示するためのインタフェース400、500、600、700、又は類似のインタフェースを表示することができ、又はそれを含むことができる。
コンピューティング装置100はまた、プロセッサ104から受信したレイトレーシング命令に基づいて画像をレンダリングするための、ここに記載されるようなGPU114を含むことができる。GPU114は更に、ディスプレイ(図示せず)上にレンダリング画像の表示を生じさせるために、ディスプレイインタフェース116を介して信号を送信することができる。さらに、コンピューティング装置100は、ここに記載されるように、(例えば、独自構造にて)レイトレーシング命令をGPU114に提供するための、ここに記載されるようなグラフィックスドライバ122を含み得る。さらに、コンピューティング装置100は、シェーダテーブル情報を決定して表示するための、ここに記載されるような診断アプリケーション126を含み得る。
例として、要素、要素の任意の部分、又は複数の要素の任意の組み合わせは、1つ以上のプロセッサを含む“プロセッシングシステム”で実装され得る。プロセッサの例は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックデバイス(PLD)、状態マシン、ゲート式ロジック、ディスクリートのハードウェア回路、及びこの開示を通して説明された様々な機能を実行するように構成された他の好適なハードウェアを含む。プロセッシングシステム内の1つ以上のプロセッサがソフトウェアを実行し得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、又はその他のいずれとして参照されるかにかかわらず、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能プログラム、実行スレッド、プロシージャ、ファンクションなどを意味するように広く解釈されるべきである。
従って、1つ以上の例において、記載された機能のうちの1つ以上は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせで実装され得る。ソフトウェアで実装される場合、機能は、コンピュータ読み取り可能媒体上に1つ以上の命令又はコードとして格納又はエンコードされ得る。コンピュータ読み取り可能媒体は、コンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスされることが可能な任意の利用可能な媒体であるとし得る。例として、限定ではないが、そのようなコンピュータ読み取り可能媒体は、RAM、ROM、EEPROM、CD-ROM若しくは他の光ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は命令若しくはデータ構造の形態で所望のプログラムコードを搬送若しくは格納するために使用されることが可能で、コンピュータによってアクセスされることが可能な、他の任意の媒体、を有することができる。ディスクは、ここで使用されるとき、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、及びフロッピーディスク(登録商標)を含み、一部のディスクは通常、磁気的にデータを再生し、一部のディスクは、レーザで光学的にデータを再生する。以上のものの組み合わせも、コンピュータ読み取り可能媒体の範囲に含まれるべきである。
前述の説明は、ここに記載された様々な例を当業者が実施することを可能にするために提供されている。これらの例に対する様々な変更が当業者には容易に明らかになるのであり、ここで規定された全体的原理は他の例にも適用され得る。従って、請求項は、ここに示された例に限定されるものではなく、請求項の文言と矛盾しない全範囲に付与されるべきであり、請求項の文言において、単数形での要素への言及は、そのように具体的に記載されない限り、“1つで唯一”を意味するのではなく、むしろ“1つ以上”を意味することを意図するものである。他に具体的に記載されない限り、用語“一部の”は、1つ以上を意味する。当業者に知られている又は後に知られることになるような、ここに記載された様々な例の要素に対する構造的及び機能的に均等なものは全て、請求項によって包含されることが意図される。さらに、ここに開示されたいずれのものも、そのような開示が請求項に明示的に記載されているかにかかわらず、公衆に捧げられることを意図するものではない。請求項のいずれの要素も、その要素がフレーズ“means for”を用いて明示的に記載されない限り、ミーンズプラスファンクションとして解釈されるべきでない。

Claims (15)

  1. 画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するためのコンピュータ実装された方法であって、
    グラフィックス処理ユニット(GPU)又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダの1つ以上のシェーダレコードを含むシェーダテーブル情報を指定するバッファを傍受し、
    コンピューティング装置により、前記1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記1つ以上のシェーダレコードに対応する1つ以上のシェーダについて前記バッファ内のパラメータのレイアウトを決定し、
    前記コンピューティング装置により、前記パラメータのレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加データを解釈して、前記1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定し、
    前記1つ以上のパラメータにおける無効なメモリ位置、又は前記レイアウトに基づいて、前記1つ以上のシェーダレコードと関連付けられたヌルルートシグネチャ、のうちの少なくとも一方を検出し、
    前記コンピューティング装置上で実行しているアプリケーションを介して、インタフェース上に前記1つ以上のパラメータを指し示すインジケーションを表示して、前記無効なメモリ位置又は前記ヌルルートシグネチャの少なくとも一方のインジケータを表示する、
    ことを有するコンピュータ実装された方法。
  2. 前記GPU又は前記グラフィックスドライバから、ルートシグネチャ及び前記レイアウトを指定する先行バッファを傍受することを更に有し、前記レイアウトを決定することは、
    前記1つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付け、
    前記先行バッファ内で前記ルートシグネチャに対応する前記レイアウトを特定する、
    ことを有する、請求項1に記載のコンピュータ実装された方法。
  3. 前記1つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付けることは、前記バッファから前記ルートシグネチャを特定することを有する、請求項2に記載のコンピュータ実装された方法。
  4. 前記GPU又は前記グラフィックスドライバから、前記シェーダテーブル内のシェーダレコード間のストライドを指定する先行バッファを傍受し、
    前記1つ以上のシェーダレコードから前記ストライドの位置に基づいて第2のシェーダレコードを特定し、
    前記バッファ内で検出された前記1つ以上のシェーダレコードの前記第2のシェーダレコードの第2の識別子に少なくとも部分的に基づいて、前記第2のシェーダレコードの第2のレイアウトを決定し、
    前記第2のレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加の第2のデータを解釈して、前記第2のシェーダレコードに対応する1つ以上の第2のパラメータを決定し、
    前記コンピューティング装置上で実行している前記アプリケーションを介して、前記インタフェース上に前記1つ以上の第2のパラメータを指し示す第2のインジケーションを表示する、
    ことを更に有する請求項1に記載のコンピュータ実装された方法。
  5. 前記1つ以上のパラメータは、ルート定数、ルートディスクリプタ、又はルートディスクリプタハンドル、のうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装された方法。
  6. 1つ以上のパラメータを指し示すインジケーションを表示することは、前記1つ以上のシェーダレコードと関連付けられたルートシグネチャへのリンクを表示することを有し、前記リンクは、前記ルートシグネチャに関する追加パラメータを表示することと関連付けられる、請求項1に記載のコンピュータ実装された方法。
  7. 1つ以上のパラメータを指し示すインジケーションを表示することは、前記1つ以上のシェーダレコードと関連付けられた前記バッファ内のバイトのオフセットへのリンクを表示することを有し、前記リンクは、前記1つ以上のシェーダレコードと関連付けられたバイトを表示することと関連付けられる、請求項1に記載のコンピュータ実装された方法。
  8. 画像をレイトレーシングする際に使用されるシェーダテーブル情報を表示するコンピューティング装置であって、
    オペレーティングシステム及び診断アプリケーションを含む1つ以上のアプリケーションを実行するための1つ以上のパラメータ又は命令を格納したメモリと、
    前記メモリに結合された少なくとも1つのプロセッサであり、
    グラフィックス処理ユニット(GPU)又はグラフィックスドライバから、レイトレーシングを用いて画像を生成する際に使用するシェーダの1つ以上のシェーダレコードを含む情報を指定するバッファを傍受し、
    前記1つ以上のシェーダレコードの識別子に少なくとも部分的に基づいて、前記1つ以上のシェーダレコードに対応する1つ以上のシェーダについて前記バッファ内のパラメータのレイアウトを決定し、
    前記パラメータのレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加データを解釈して、前記1つ以上のシェーダレコードに対応する1つ以上のパラメータを決定し、
    前記診断アプリケーションを介して、インタフェース上に前記1つ以上のパラメータを指し示すインジケーションを表示する、
    ように構成された少なくとも1つのプロセッサと、
    を有するコンピューティング装置。
  9. 前記少なくとも1つのプロセッサは更に、前記GPU又は前記グラフィックスドライバから、ルートシグネチャ及び前記レイアウトを指定する先行バッファを傍受するように構成され、前記少なくとも1つのプロセッサは、少なくとも部分的に、
    前記1つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付け、
    前記先行バッファ内で前記ルートシグネチャに対応する前記レイアウトを特定する、
    ことによって前記レイアウトを決定するように構成される、請求項8に記載のコンピューティング装置。
  10. 前記少なくとも1つのプロセッサは、少なくとも部分的に、前記バッファから前記ルートシグネチャを特定することによって、前記1つ以上のシェーダレコードの前記識別子を前記ルートシグネチャと関連付けるように構成される、請求項9に記載のコンピューティング装置。
  11. 前記少なくとも1つのプロセッサは更に、
    前記GPU又は前記グラフィックスドライバから、前記シェーダテーブル内のシェーダレコード間のストライドを指定する先行バッファを傍受し、
    前記1つ以上のシェーダレコードから前記ストライドの位置に基づいて第2のシェーダレコードを特定し、
    前記バッファ内で検出された前記1つ以上のシェーダレコードの前記第2のシェーダレコードの第2の識別子に少なくとも部分的に基づいて、前記第2のシェーダレコードの第2のレイアウトを決定し、
    前記第2のレイアウトに少なくとも部分的に基づいて、前記バッファ内の追加の第2のデータを解釈して、前記第2のシェーダレコードに対応する1つ以上の第2のパラメータを決定し、
    前記診断アプリケーションを介して、前記インタフェース上に前記1つ以上の第2のパラメータを指し示す第2のインジケーションを表示する、
    ように構成される、請求項8に記載のコンピューティング装置。
  12. 前記少なくとも1つのプロセッサは、前記1つ以上のパラメータにおける無効なメモリ位置を検出するように構成され、前記少なくとも1つのプロセッサは、前記無効なメモリ位置と関連付けられたインジケータとして、前記1つ以上のパラメータを指し示す前記インジケーションを表示するように構成される、請求項8に記載のコンピューティング装置。
  13. 前記少なくとも1つのプロセッサは、前記レイアウトに基づいて、前記1つ以上のシェーダレコードと関連付けられたヌルルートシグネチャを検出するように構成され、前記少なくとも1つのプロセッサは、前記ヌルルートシグネチャのインジケータとして、前記1つ以上のパラメータを指し示す前記インジケーションを表示するように構成される、請求項8に記載のコンピューティング装置。
  14. 前記1つ以上のパラメータは、ルート定数、ルートディスクリプタ、又はルートディスクリプタハンドル、のうちの少なくとも1つを含む、請求項8に記載のコンピューティング装置。
  15. 請求項1乃至7のいずれか一項に記載のコンピュータ実装された方法を実行するように1つ以上のプロセッサによって実行可能なコードを有したコンピュータ読み取り可能媒体。
JP2021502610A 2018-07-19 2019-06-19 レイトレーシング画像に関連付けてシェーダテーブルを表示する技術 Active JP7308921B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862700695P 2018-07-19 2018-07-19
US62/700,695 2018-07-19
US16/213,746 2018-12-07
US16/213,746 US10679317B2 (en) 2018-07-19 2018-12-07 Techniques for displaying a shader table associated with raytracing images
PCT/US2019/037825 WO2020018220A1 (en) 2018-07-19 2019-06-19 Techniques for displaying a shader table associated with raytracing images

Publications (2)

Publication Number Publication Date
JP2021531577A JP2021531577A (ja) 2021-11-18
JP7308921B2 true JP7308921B2 (ja) 2023-07-14

Family

ID=69161149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021502610A Active JP7308921B2 (ja) 2018-07-19 2019-06-19 レイトレーシング画像に関連付けてシェーダテーブルを表示する技術

Country Status (14)

Country Link
US (1) US10679317B2 (ja)
EP (1) EP3824441B1 (ja)
JP (1) JP7308921B2 (ja)
KR (1) KR102852281B1 (ja)
CN (1) CN112424836B (ja)
AU (1) AU2019306074A1 (ja)
BR (1) BR112020024909A2 (ja)
CA (1) CA3104277A1 (ja)
IL (1) IL280119A (ja)
MX (1) MX2021000534A (ja)
PH (1) PH12021550132A1 (ja)
SG (1) SG11202100066PA (ja)
WO (1) WO2020018220A1 (ja)
ZA (1) ZA202007685B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379577B2 (en) 2019-09-26 2022-07-05 Microsoft Technology Licensing, Llc Uniform resource locator security analysis using malice patterns
US11509667B2 (en) 2019-10-19 2022-11-22 Microsoft Technology Licensing, Llc Predictive internet resource reputation assessment
US11170461B2 (en) 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
US11263718B2 (en) 2020-02-03 2022-03-01 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering
US11080814B1 (en) 2020-02-03 2021-08-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information
US11321800B2 (en) 2020-02-03 2022-05-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by region testing while rendering
US11120522B2 (en) 2020-02-03 2021-09-14 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by subdividing geometry
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US12112394B2 (en) * 2020-02-03 2024-10-08 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using configurable shaders
US12169703B2 (en) 2020-03-19 2024-12-17 Advanced Micro Devices, Inc. Graphics pipeline optimizations
US11431751B2 (en) 2020-03-31 2022-08-30 Microsoft Technology Licensing, Llc Live forensic browsing of URLs
CN112540810B (zh) * 2020-12-09 2024-06-14 竞技世界(北京)网络技术有限公司 一种绘制方法及装置、设备、计算机可读存储介质
US20260010967A1 (en) * 2024-07-03 2026-01-08 Advanced Micro Devices, Inc. Efficient hybrid-graphics pipeline

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007279992A (ja) 2006-04-05 2007-10-25 Canon Inc コンテンツサーバおよびレイアウトシステム
JP2008500636A (ja) 2004-05-26 2008-01-10 ソニー オンライン エンタテインメント インク ルールベースの手続的地形生成用地形編集ツール
JP2012503259A (ja) 2008-09-22 2012-02-02 コースティック グラフィックス インコーポレイテッド レイトレーシングシェーダapiのためのシステム及び方法
US20160210719A1 (en) 2014-12-15 2016-07-21 Blake Douglas Pelton User-defined command buffer formats supporting data-parallel translation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7548238B2 (en) 1997-07-02 2009-06-16 Nvidia Corporation Computer graphics shader systems and methods
US9214007B2 (en) * 2008-01-25 2015-12-15 Via Technologies, Inc. Graphics processor having unified cache system
JP5485257B2 (ja) * 2008-03-21 2014-05-07 コースティック グラフィックス インコーポレイテッド レイトレース・レンダリングのための並列化された交差テストおよびシェーディングのアーキテクチャ
GB2466078B (en) 2008-12-15 2013-11-13 Advanced Risc Mach Ltd Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus
US8681162B2 (en) * 2010-10-15 2014-03-25 Via Technologies, Inc. Systems and methods for video processing
US9659404B2 (en) 2013-03-15 2017-05-23 Disney Enterprises, Inc. Normalized diffusion profile for subsurface scattering rendering
US10255650B2 (en) * 2013-05-24 2019-04-09 Sony Interactive Entertainment Inc. Graphics processing using dynamic resources
WO2015142770A2 (en) * 2014-03-19 2015-09-24 Microsoft Technology Licensing, Llc Configuring resources used by a graphics processing unit
GB2543866B (en) * 2016-03-07 2017-11-01 Imagination Tech Ltd Task assembly for SIMD processing
US11069129B2 (en) * 2018-04-05 2021-07-20 Nvidia Corporation Shader binding management in ray tracing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500636A (ja) 2004-05-26 2008-01-10 ソニー オンライン エンタテインメント インク ルールベースの手続的地形生成用地形編集ツール
JP2007279992A (ja) 2006-04-05 2007-10-25 Canon Inc コンテンツサーバおよびレイアウトシステム
JP2012503259A (ja) 2008-09-22 2012-02-02 コースティック グラフィックス インコーポレイテッド レイトレーシングシェーダapiのためのシステム及び方法
US20160210719A1 (en) 2014-12-15 2016-07-21 Blake Douglas Pelton User-defined command buffer formats supporting data-parallel translation

Also Published As

Publication number Publication date
PH12021550132A1 (en) 2021-09-27
CN112424836A (zh) 2021-02-26
KR102852281B1 (ko) 2025-08-28
KR20210032379A (ko) 2021-03-24
IL280119A (en) 2021-03-01
CA3104277A1 (en) 2020-01-23
BR112020024909A2 (pt) 2021-03-09
MX2021000534A (es) 2021-03-31
ZA202007685B (en) 2022-04-28
AU2019306074A1 (en) 2021-01-07
US10679317B2 (en) 2020-06-09
CN112424836B (zh) 2024-08-30
JP2021531577A (ja) 2021-11-18
US20200027190A1 (en) 2020-01-23
WO2020018220A1 (en) 2020-01-23
SG11202100066PA (en) 2021-02-25
EP3824441A1 (en) 2021-05-26
EP3824441B1 (en) 2022-09-21

Similar Documents

Publication Publication Date Title
JP7308921B2 (ja) レイトレーシング画像に関連付けてシェーダテーブルを表示する技術
US11511188B2 (en) Virtual scene recognition and interaction key position matching method for application and computing device
EP3123316B1 (en) Supporting dynamic behavior in statically compiled programs
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
US9836290B2 (en) Supporting dynamic behavior in statically compiled programs
US20160077850A1 (en) Methods, systems, and media for binary compatibility
US11113869B2 (en) Techniques for generating visualizations of ray tracing images
US10394680B2 (en) Techniques for tracking graphics processing resource utilization
US10593010B2 (en) Techniques for capturing and executing graphics processing operations
US10546416B2 (en) Techniques for modifying graphics processing unit (GPU) operations for tracking in rendering images
HK40040381A (en) Techniques for displaying a shader table associated with raytracing images
US11100041B2 (en) Techniques for tracking independent hardware graphics processing unit (GPU) performance
WO2024215667A1 (en) Secure virtualization for third party graphics drivers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230525

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230704

R150 Certificate of patent or registration of utility model

Ref document number: 7308921

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150