(57)【特許請求の範囲】
【請求項１】
グラフィックスプロセッサによる、タイルベースのグラフィックスレンダリングパイプラインにおけるテッセレーションのための方法であって、
フレームをレンダリングする前に、前記フレームのタイルごとに入力可視性ストリームを生成することと、ここで、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、
前記フレームをレンダリングする前に、前記フレームのタイルごとに出力可視性ストリームを生成することと、ここで、前記出力可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記出力プリミティブは、前記入力プリミティブをテッセレートすることで生成され、前記出力可視性ストリームおよび前記入力可視性ストリームの各々は、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットを備える、
前記入力可視性ストリームおよび前記出力可視性ストリームに基づいて、現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートすることと、
を備え、前記入力プリミティブをテッセレートすることは、
前記入力可視性ストリームによって、前記現在のタイルに寄与しないと示された前記入力プリミティブについてテッセレーションを省略することと、
前記入力可視性ストリームによって、前記現在のタイルに寄与すると示された入力プリミティブについて、前記出力可視性ストリームに基づいてテッセレーションを実行することと
を含み、テッセレーションは、対応出力プリミティブが、前記出力可視性ストリームによって前記現在のタイルに寄与しないと示された前記入力プリミティブの一部について省略される、方法。
【請求項２】
前記入力可視性ストリームを生成することは、
前記入力プリミティブを頂点シェーディングすることと、
前記頂点シェーディングされた入力プリミティブをハルシェーディングすることと、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートすることと、
前記複数の出力プリミティブをドメインシェーディングすることと、
画素を生成するために、前記複数の出力プリミティブをラスタライズすることと、
前記画素がフレームのタイルについて可視であるか否かを決定するために、深度テストを実行することと、
前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成することと
を備え、
前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、前記入力プリミティブは、可視であると決定される、請求項１に記載の方法。
【請求項３】
前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、又は等値線である、請求項１に記載の方法。
【請求項４】
前記フレームの前記現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略される、請求項１に記載の方法。
【請求項５】
前記フレームの前記現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項１に記載の方法。
【請求項６】
グラフィックスプロセッサによる、タイルベースのグラフィックスレンダリングパイプラインにおけるテッセレーションのための方法であって、
深度テストに基づいて出力プリミティブがタイルにおいて可視であるか否かを示す、可視性ストリーム内のインジケーションを生成することによって、フレームをレンダリングする前に、前記フレームの前記タイルごとに、各入力プリミティブについての前記可視性ストリームを生成することと、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記可視性ストリームは、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットであり、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、
前記可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートすることと、
を備え、前記入力プリミティブをテッセレートすることは、対応出力プリミティブが、前記可視性ストリームによって、前記現在のタイルに寄与しないと示される前記入力プリミティブの一部についてテッセレーションを省略することを含む、方法。
【請求項７】
前記長さＮは、レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、請求項６に記載の方法。
【請求項８】
可視性ストリームを生成することは、
前記入力プリミティブを頂点シェーディングすることと、
前記頂点シェーディングされた入力プリミティブをハルシェーディングすることと、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートすることと、
前記複数の出力プリミティブをドメインシェーディングすることと、
画素を生成するために、前記複数の出力プリミティブをラスタライズすることと、
前記画素がフレームのタイルについて可視であるか否かを決定するために、深度テストを実行することと、
前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記可視性ストリーム内の前記インジケーションを生成することと
を備え、
前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、請求項６に記載の方法。
【請求項９】
前記フレームの前記現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、請求項６に記載の方法。
【請求項１０】
前記フレームの前記現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項６に記載の方法。
【請求項１１】
前記タイルベースのグラフィックスレンダリングパイプラインは、イネーブルなジオメトリシェーダを有し、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、前記可視性ストリームを生成することは更に、前記出力プリミティブをドメインシェーディングした後に、前記複数の出力プリミティブをジオメトリシェーディングすることを備える、請求項６に記載の方法。
【請求項１２】
タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、
グラフィックスデータを記憶するように構成されたメモリと、
前記メモリと通信状態にあるグラフィックスプロセッサと
を備え、前記グラフィックスプロセッサは、
前記グラフィックスデータに対してビニングパイプラインを実行するように構成され、ここで、前記ビニングパイプラインは、フレームをレンダリングする前に、前記フレームのタイルごとに入力可視性ストリームを生成するように構成され、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示し、前記ビニングパイプラインは更に、前記フレームをレンダリングする前に、前記フレームのタイルごとに出力可視性ストリームを生成するように構成され、前記出力可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成され、前記出力可視性ストリームおよび前記入力可視性ストリームの各々は、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットを備える、
前記グラフィックスプロセッサは更に、レンダリングパイプラインを実行するように構成され、ここで、前記レンダリングパイプラインは、前記入力可視性ストリームおよび前記出力可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートするように構成され、前記入力プリミティブをテッセレートすることは、前記入力可視性ストリームによって、前記現在のタイルに寄与しないと示された前記入力プリミティブの一部についてテッセレーションを省略することと、前記入力可視性ストリームによって、前記現在のタイルに寄与すると示された入力プリミティブについて、前記出力可視性ストリームに基づいてテッセレーションを実行することとを含み、テッセレーションは、対応出力プリミティブが、前記出力可視性ストリームによって前記現在のタイルに寄与しないと示された前記入力プリミティブの一部について省略される、装置。
【請求項１３】
前記ビニングパイプラインは、
前記入力プリミティブに対して頂点シェーディングを実行するように構成されたビニング頂点シェーダと、
前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行するように構成されたビニングハルシェーダと、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするように構成されたビニングテッセレータ段と、
前記複数の出力プリミティブに対してドメインシェーディングを実行するように構成されたビニングドメインシェーダと、
画素を生成するために、前記複数の出力プリミティブをラスタライズするように構成されたビニングラスタライザと、
前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するように構成されたビニング深度テスト段と
を備え、
前記ビニングパイプラインは、前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成し、
前記入力プリミティブは、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、可視であると決定される、請求項１２に記載の装置。
【請求項１４】
前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、又は等値線である、請求項１２に記載の装置。
【請求項１５】
前記フレームの前記現在のタイルをレンダリングするように構成された前記レンダリングパイプラインを更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略され、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項１２に記載の装置。
【請求項１６】
タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、
グラフィックスデータを記憶するように構成されたメモリと、
前記メモリと通信状態にあるグラフィックスプロセッサと
を備え、前記グラフィックスプロセッサは、
ビニングパイプラインを実行するように構成され、前記ビニングパイプラインは、フレームをレンダリングする前に、前記フレームのタイルごとに、各入力プリミティブについて可視性ストリームを生成するように構成され、前記可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記ビニングパイプラインは、前記フレームのタイルごとに、各入力プリミティブについて前記可視性ストリームを生成するように構成され、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいてそれぞれの出力プリミティブが可視であるか否かを示し、前記可視性ストリームは、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットである、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、
前記グラフィックスプロセッサは更に、レンダリングパイプラインを実行するように構成され、前記レンダリングパイプラインは、前記可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートするように構成され、前記入力プリミティブをテッセレートすることは、前記対応出力プリミティブが、前記可視性ストリームによって、前記現在のタイルに寄与しないと示された前記入力プリミティブの一部についてテッセレーションを省略することを含む、装置。
【請求項１７】
前記長さＮは、前記レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、請求項１６に記載の装置。
【請求項１８】
前記ビニングパイプラインは、
前記入力プリミティブに対して頂点シェーディングを実行するように構成されたビニング頂点シェーダと、
前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行するように構成されたビニングハルシェーダと、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするように構成されたビニングテッセレータ段と、
前記複数の出力プリミティブに対してドメインシェーディングを実行するように構成されたビニングドメインシェーダと、
画素を生成するために、前記複数の出力プリミティブをラスタライズするように構成されたビニングラスタライザと、
前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するように構成されたビニング深度テスト段と
を備え、
前記ビニングパイプラインは、前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記可視性ストリーム内の前記インジケーションを生成し、
前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、請求項１６に記載の装置。
【請求項１９】
前記フレームの前記現在のタイルをレンダリングするように構成されたレンダリングパイプラインを更に備え、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、請求項１６に記載の装置。
【請求項２０】
前記レンダリングパイプラインは、ジオメトリシェーダを含み、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、前記ビニングパイプラインは更に、前記ビニングドメインシェーダの後に、前記複数の出力プリミティブに対してジオメトリシェーディングを実行するように構成されたビニングジオメトリシェーダを備える、請求項１６に記載の装置。
【請求項２１】
タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、
フレームをレンダリングする前に、前記フレームのタイルごとに入力可視性ストリームを生成するための手段と、ここで、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、
前記フレームをレンダリングする前に、前記フレームのタイルごとに出力可視性ストリームを生成するための手段と、ここで、前記出力可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記出力プリミティブは、前記入力プリミティブをテッセレートすることで生成され、前記出力可視性ストリームおよび前記入力可視性ストリームの各々は、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットを備える、
前記入力可視性ストリームおよび前記出力可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートするための手段と
を備え、前記入力プリミティブをテッセレートするための手段は
前記入力可視性ストリームによって、前記現在のタイルに寄与しないと示された前記入力プリミティブについてテッセレーションを省略するための手段と、
前記入力可視性ストリームによって、前記現在のタイルに寄与すると示された入力プリミティブについて、前記出力可視性ストリームに基づいてテッセレーションを実行するための手段と
を含み、テッセレーションは、対応出力プリミティブが、前記出力可視性ストリームによって前記現在のタイルに寄与しないと示された前記入力プリミティブの一部について省略される、装置。
【請求項２２】
前記入力可視性ストリームを生成するための手段は、
前記入力プリミティブを頂点シェーディングするための手段と、
前記頂点シェーディングされた入力プリミティブをハルシェーディングするための手段と、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするための手段と、
前記複数の出力プリミティブをドメインシェーディングするための手段と、
画素を生成するために、前記複数の出力プリミティブをラスタライズするための手段と、
前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するための手段と、
前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成するための手段と
を備え、
前記入力プリミティブは、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、可視であると決定される、請求項２１に記載の装置。
【請求項２３】
前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、又は等値線である、請求項２１に記載の装置。
【請求項２４】
前記フレームの前記現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略される、請求項２１に記載の装置。
【請求項２５】
前記フレームの前記現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項２１に記載の装置。
【請求項２６】
タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、
フレームをレンダリングする前に、前記フレームのタイルごとに、各入力プリミティブについて可視性ストリームを生成するための手段と、ここで、前記可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいてそれぞれの出力プリミティブが可視であるか否かを示し、前記可視性ストリームは、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットであり、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、
前記可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートするための手段と、ここで、前記入力プリミティブをテッセレートすることは、前記可視性ストリームによって、前記現在のタイルに寄与しないと示された前記入力プリミティブの一部についてテッセレーションを省略することを備える、
前記フレームの前記現在のタイルをレンダリングするための手段と
を備え、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、装置。
【請求項２７】
前記長さＮは、レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、請求項２６に記載の装置。
【請求項２８】
可視性ストリームを生成するための手段は、
前記入力プリミティブを頂点シェーディングするための手段と、
前記頂点シェーディングされた入力プリミティブをハルシェーディングするための手段と、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするための手段と、
前記複数の出力プリミティブをドメインシェーディングするための手段と、
画素を生成するために、前記複数の出力プリミティブをラスタライズするための手段と、
前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するための手段と、
前記深度テストに基づいて前記タイルにおいて前記出力プリミティブが可視であるか否かを示す、前記可視性ストリーム内の前記インジケーションを生成するための手段と
を備え、
前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、請求項２６に記載の装置。
【請求項２９】
前記フレームの前記現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項２６に記載の装置。
【請求項３０】
前記タイルベースのレンダリングアーキテクチャは、イネーブルなジオメトリシェーダを有し、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、可視性ストリームを生成するための手段は更に、前記出力プリミティブをドメインシェーディングするための手段の後に、前記複数の出力プリミティブをジオメトリシェーディングするための手段を備える、請求項２６に記載の装置。
【請求項３１】
命令を備えたコンピュータ読取可能な記憶媒体であって、前記命令は、実行されると、タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するためのデバイスの１つ以上のプロセッサに対して、
フレームをレンダリングする前に、前記フレームのタイルごとに入力可視性ストリームを生成させ、ここで、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、
前記フレームをレンダリングする前に、前記フレームのタイルごとに出力可視性ストリームを生成させ、ここで、前記出力可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成され、前記出力可視性ストリームおよび前記入力可視性ストリームの各々は、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットを備える、
前記入力可視性ストリームおよび前記出力可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートさせ、
前記入力プリミティブをテッセレートすることは
前記入力可視性ストリームによって、前記現在のタイルに寄与しないと示された前記入力プリミティブについてテッセレーションを省略することと、
前記入力可視性ストリームによって前記現在のタイルに寄与すると示された入力プリミティブについて、前記出力可視性ストリームに基づいてテッセレーションを行うことと
を含み、テッセレーションは、対応出力プリミティブが、前記出力可視性ストリームによって前記現在のタイルに寄与しないと示された前記入力プリミティブの一部について省略される、コンピュータ読取可能な記憶媒体。
【請求項３２】
前記１つ以上のプロセッサに、
前記入力プリミティブに対して頂点シェーディングを実行させ、
前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行させ、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートさせ、
前記複数の出力プリミティブに対してドメインシェーディングを実行させ、
画素を生成するために、前記複数の出力プリミティブをラスタライズさせ、
前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行させ、
前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成させる
命令を更に備え、前記入力プリミティブは、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、可視であると決定される、請求項３１に記載のコンピュータ読取可能な記憶媒体。
【請求項３３】
前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、又は等値線である、請求項３１に記載のコンピュータ読取可能な記憶媒体。
【請求項３４】
前記命令は更に、前記１つ以上のプロセッサに、
フレームの現在のタイルをレンダリングさせる、ここで、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略され、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項３１に記載のコンピュータ読取可能な記憶媒体。
【請求項３５】
命令を備えたコンピュータ読取可能な記憶媒体であって、前記命令は、実行されると、タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するためのデバイスの１つ以上のプロセッサに対して、
フレームをレンダリングする前に、前記フレームのタイルごとに、各入力プリミティブについて可視性ストリームを生成させ、ここで、前記可視性ストリームは、深度テストに基づいて前記タイルにおいて出力プリミティブが可視であるか否かを示すインジケーションを含み、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定され、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいてそれぞれの出力プリミティブが可視であるか否かを示し、前記可視性ストリームは、すべてのプリミティブについて、それが前記レンダリングされたタイルに寄与するか否かを示す一連のビットであり、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、
前記可視性ストリームに基づいて現在のタイルについての前記出力プリミティブを作り出すために前記入力プリミティブをテッセレートさせ、
前記入力プリミティブをテッセレートすることは、対応出力プリミティブが、前記可視性ストリームよって、前記現在のタイルに寄与しないと示された前記入力プリミティブの一部についてのテッセレーションを省略することを含む、コンピュータ読取可能な記憶媒体。
【請求項３６】
前記長さＮは、前記レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、請求項３５に記載のコンピュータ読取可能な記憶媒体。
【請求項３７】
前記命令は更に、前記１つ以上のプロセッサに、
前記入力プリミティブに対して頂点シェーディングを実行させ、
前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行させ、
複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートさせ、
前記複数の出力プリミティブに対してドメインシェーディングを実行させ、
画素を生成するために、前記複数の出力プリミティブをラスタライズさせ、
前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行させ、
前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記可視性ストリーム内の前記インジケーションを生成させ、
前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、請求項３５に記載のコンピュータ読取可能な記憶媒体。
【請求項３８】
前記命令は更に、前記１つ以上のプロセッサに、前記フレームの前記現在のタイルをレンダリングさせる、ここで、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、請求項３５に記載のコンピュータ読取可能な記憶媒体。
【請求項３９】
レンダリングすることは、前記可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、請求項３５に記載のコンピュータ読取可能な記憶媒体。
【請求項４０】
前記命令は更に、前記プロセッサ
に、ジオメトリシェーダを含むレンダリングパイプラインを実行させ、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、前記命令は更に、前記プロセッサに、ドメインシェーディングを実行した後に、複数の出力プリミティブに対してジオメトリシェーディングを実行させる、請求項３５に記載のコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、グラフィックス処理についての技法に関し、より詳細には、タイルベースのレンダリングアーキテクチャを用いる際のテッセレーション（tessellation）についての技法に関する。
【背景技術】
【０００２】
グラフィカルユーザインターフェース及びビデオゲーム用のコンテンツのような、表示用のビジュアルコンテンツは、グラフィックス処理単位（ＧＰＵ)によって生成されうる。ＧＰＵは、２次元又は３次元（３Ｄ）のオブジェクトを、表示されうる２次元（２Ｄ）の画素表現へと変換しうる。３Ｄオブジェクトについての情報を、表示されることができるビットマップへと変換することは、画素レンダリングとして知られており、大量のメモリ及び処理電力とを要求する。これまで、３Ｄグラフィックス性能は、強力なワークステーション上でしか利用可能でなかった。しかしながら、現在、３Ｄグラフィックス加速器は、パーソナルコンピュータ（ＰＣ）だけでなく、スマートフォン、タブレットコンピュータ、ポータブルメディアプレーヤ、ポータブルビデオゲーミングコンソール、等、のような埋込式デバイスによく見られる。典型的に、埋込式デバイスは、従来のＰＣと比較して、より少ない計算電力とメモリ容量を有する。このように、３Ｄグラフィックスレンダリング技法における複雑性の増加は、そのような技法を埋込式システム上で実現する際に問題を引き起こす。
【発明の概要】
【０００３】
一般的に、本開示は、グラフィックス処理のための技法を説明し、より詳細には、テッセレーションを利用する、タイルベースのグラフィックス処理アーキテクチャを有するコンピューティングデバイスにおけるグラフィックス処理のための技法を説明する。本開示は、フレームのタイル内のグラフィックスプリミティブの可視性（visibility）を示す出力可視性ストリーム（output visibility stream）及び／又は入力可視性ストリーム（input visibility stream）の生成を提案する。そのような可視性ストリームにより、タイルベースのグラフィックス処理アーキテクチャは、フレームにおいて可視ではないグラフィックスプリミティブのレンダリングを省略することができる。この方法において、不必要な処理は回避されることができ、故に、性能を向上させる。
【０００４】
本開示の一例において、タイルベースのグラフィックスにおけるテッセレーションのための方法が提案される。方法は、フレームのタイルごとに入力可視性ストリームを生成することと、ここで、入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、フレームのタイルごとに出力可視性ストリームを生成することと、ここで、出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、出力プリミティブは、入力プリミティブをテッセレート（tessellate）することによって生成される、を含む。
【０００５】
本開示の別の例において、タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置が提案される。装置は、フレームのタイルごとに入力可視性ストリームを生成するように構成されたビニング（binning）パイプラインを含む。入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す。ビニングパイプラインはさらに、フレームのタイルごとに出力可視性ストリームを生成するように構成される。出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、出力プリミティブは、入力プリミティブをテッセレートすることによって生成される。
【０００６】
本開示の別の例において、タイルベースのレンダリングパイプラインにおけるテッセレーションのための方法が提案される。方法は、フレームのタイルごとに各入力プリミティブのための可視性ストリームを生成することを含み、ここで、可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、出力プリミティブは、入力プリミティブをテッセレートすることによって生成される。
【０００７】
本開示の別の例において、タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置が提案される。装置は、フレームのタイルごとに、各入力プリミティブについての可視性ストリームを生成するように構成されたビニングパイプラインを含み、ここで、可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、出力プリミティブは、入力プリミティブをテッセレートすることによって生成される。
【０００８】
１つ以上の例の詳細は、添付の図面及び以下の説明において示される。他の特徴、目的、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】図１は、タイルベースのレンダリングアーキテクチャにおけるフレームのタイルを示す概念図である。
【図２】図２は、例示的なグラフィックス処理システムを示すブロック図である。
【図３】図３は、テッセレーションを用いた例示的なグラフィックスパイプラインを示すブロック図である。
【図４】図４は、入力可視性ストリーム及び出力可視性ストリームを生成する例示的なビニングパイプラインを示すブロック図である。
【図５】図５は、例示的な入力可視性ストリーム及び例示的な出力可視性ストリームを示す概念図である。
【図６】図６は、入力プリミティブをテッセレートするための例示的な技法を示す概念図である。
【図７】図７は、入力プリミティブをテッセレートするための例示的な技法を示す概念図である。
【図８】図８は、入力可視性ストリームを生成する例示的なビニングパイプラインを示すブロック図である。
【図９】図９は、例示的な単一の可視性ストリームを示す概念図である。
【図１０】図１０は、タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するための例示的な方法を示すフローチャートである。
【図１１】図１１は、タイルベースのレンダリングパイプラインにおけるビニングパスの例示的な方法を示すフローチャートである。
【図１２】図１２は、タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するための別の例示的な方法を示すフローチャートである。
【図１３】図１３は、タイルベースのレンダリングパイプラインにおけるビニングパスの別の例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
本開示は、グラフィックス処理のための技法に関し、より詳細には、タイルベースのレンダリングアーキテクチャを用いた場合のテッセレーション（tessellation）のための技法に関する。
【００１１】
マイクロソフトのＤｉｒｅｃｔＸ１１（ＤＸ１１）アプリケーションプログラミングインターフェース（ＡＰＩ）を含む幾つかのグラフィックスレンダリングパイプラインは、グラフィックスプリミティブのテッセレーションを可能にする追加の処理段(additional processing stages)を含む。テッセレーションは、それによってグラフィックスプリミティブがより小さいグラフィックスプリミティブへと分割され、結果、表示される画像でのより精細なディテールを可能にするプロセスである。
【００１２】
テッセレータ段(tessellator stage)での参照実装（reference implementation）は、マイクロソフトＤＸ１１ソフトウェア基準ラスタライザによって細かく定義されているが、そのような実現は、埋込式デバイス（例えば、タブレットコンピュータ、モバイル電話、モバイルゲーミングデバイス、モバイルメディアプレーヤ、等）内のグラフィックスプロセッサで使用されるもののようなタイルベースのレンダリングアーキテクチャに対して、それ程効率的にはマッピングしない。タイルベースのレンダリング（ビニングと呼ばれることもある）は、３Ｄシーンの１つのフレームをより小さい部分（例えば、矩形タイル）へと分解し、これらの部分のそれぞれを別々にレンダリングすることで、このフレームをレンダリングする。タイルベースのレンダリングは、モバイルアプリケーションの場合など、小型の専用グラフィックスメモリが利用可能なアプリケーションに有益である。図１は、タイルベースのレンダリングアーキテクチャにおけるフレームのタイルを示す概念図である。フレーム２２は、タイル２４のような複数のタイルへと分割されうる。次に、フレーム全体をレンダリングするために、タイル単位でグラフィックス処理が実行される。
【００１３】
マイクロソフトＤＸ１１ソフトウェア基準ラスタライザを含む、テッセレーション段でグラフィックスデータをレンダリングするための従来の技法は、３Ｄシーンのフレーム全体が全体としてレンダリングされるであろうという仮定の下で設計される。このように、そのような基準ラスタライザで使用されるテッセレーションアルゴリズムは常に、完全な（full）入力プリミティブを、出力プリミティブの完全なセットへとテッセレートする。タイルベースのレンダリングアーキテクチャにおいて、これは、テッセレートされた出力プリミティブのほんの一部が、実際に、現在レンダリングされているタイル（currently rendered tile）に寄与しうる（即ち、幾つかの出力プリミティブは、別のタイル内の現在レンダリングされているタイルの外側にあることとなる）ため、多くの不適切なグラフィックス処理単位（ＧＰＵ）及びテッセレーション処理をもたらす可能性がある。
【００１４】
この観点から、本開示は、タイルベースのグラフィックスレンダリングアーキテクチャにおけるテッセレーションのための方法及び装置を提案する。開示される技法は、フレームのタイルごとに入力可視性ストリームを生成することと、ここで、入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、フレームのタイルごとに出力可視性ストリームを生成することと、ここで、出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、出力プリミティブは、入力プリミティブをテッセレートすることによって生成される、を含む。このように、入力可視性ストリームに基づいて、テッセレーションは、タイルにおいて可視ではない入力プリミティブ全体について省略されうる。また、出力可視性ストリームに基づいて、テッセレーションは、入力プリミティブの幾つかが可視ではなかったとしても、タイルにおいて可視ではない出力プリミティブのうち特定のものについて、省略されうる。このように、不必要なテッセレーションは回避される。さらに、テッセレーションが省略されるため幾つかの出力プリミティブが作り出されず、よって、作り出されていない出力プリミティブの処理は、グラフィックスパイプラインのそれ以降の段(later stages)で回避される。
【００１５】
本開示の別の例において、単一の可視性ストリームが、フレームの格タイルについての各入力プリミティブに対して生成される。可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、出力プリミティブは、入力プリミティブをテッセレートすることによって生成される。
【００１６】
図２は、本開示の技法を実現するように構成されうるデバイス２を示すブロック図である。デバイス２の例には、ワイヤレスデバイス、モバイル電話、携帯情報端末（ＰＤＡ）、ポータブルメディアプレーヤ、ビデオゲーミングコンソール（統合ディスプレイを備える又は備えない）、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビジョンセットトップボックス、タブレット計算デバイス、電子ブックリーダ、等が含まれるがそれらに限定されるわけではない。デバイス２には、プロセッサ４、グラフィックス処理単位（ＧＰＵ）６、ディスプレイ８、フレームバッファ１０、記憶デバイス１２、トランシーバモジュール１４、ユーザインターフェース１６、低解像度バッファ１８（これは、低解像度ｚバッファ又はＬＲＺバッファとも呼ばれる）、及びタイルメモリ２０が含まれうる。デバイス２は、明瞭さの目的で図２には示されていない追加のモジュール又はユニットを含みうる。例えば、デバイス２は、デバイス２がモバイルワイヤレス電話である例において電話通信を実現するためにスピーカ及びマイクロフォンを含みうるが、何れも図２には示されない。さらに、デバイス２内に示される様々なモジュール及びユニットは、デバイス２のすべての例に存在する必要はない。例えば、ユーザインターフェース１６及びディスプレイ８は、デバイス２がデスクトップコンピュータ又はビデオゲーミングコンソールである例においてデバイス２に外付けでありうる。
【００１７】
プロセッサ４は、１つ以上のアプリケーションを実行しうる。これらアプリケーションの例には、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、又は、表示するために、可視のオブジェクトを生成する他のアプリケーションが含まれる。１つ以上のアプリケーションは、記憶デバイス１２内に記憶されうる。幾つかの例において、プロセッサ４は、トランシーバモジュール１４を介して１つ以上のアプリケーションをダウンロードしうる（例えば、インターネット又は他のネットワークから）。プロセッサ４は、ユーザによるユーザインターフェース１６を介した選択に基づいて、１つ以上のアプリケーションを実行しうる。幾つかの例では、プロセッサ４は、ユーザ対話なく、１つ以上のアプリケーションを実行しうる。
【００１８】
プロセッサ４の例には、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、又は、他の等価的な統合又はディスクリート論理回路が含まれるがそれらに限定されるわけではない。記憶デバイス１２は、１つ以上のコンピュータ読取可能な媒体を備えうる。記憶デバイス１２の例には、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）、ＣＤ−ＲＯＭ、ブルーレイ又は他の光ディスク記憶装置、磁気ディスク記憶装置又はその他の磁気記憶デバイス、フラッシュメモリ、或いは、所望のプログラムコードを命令又はデータ構造の形式で搬送又は記憶するために使用可能であり、かつコンピュータ又はプロセッサによってアクセスされることができる任意の他の媒体が含まれるがそれらに限定されるわけではない。幾つかの態様において、記憶デバイス１２は、本開示においてホストプロセッサ４及びＧＰＵ ６に属する上述された機能を実行することをホストプロセッサ４及び／又はＧＰＵ６に行わせる命令を含みうる。
【００１９】
記憶デバイス１２は、幾つかの例では、非一時的な記憶媒体とみなされる。「非一時的な」という用語は、記憶媒体が、キャリア波又は伝播信号で具現化されないことを示しうる。しかしながら、「非一時的な」という用語は、記憶デバイス１２がモバイルでないことを意味すると解釈されるべきではない。一例として、記憶デバイス１２は、デバイス２から取り除かれ、別のデバイスに動かされうる。別の例として、実質的に記憶デバイス１２に類似しているある記憶デバイスが、デバイス２に挿入されうる。特定の例において、非一時的な記憶媒体は、経時的に変化しうるデータを記憶しうる（例えば、ＲＡＭに）。
【００２０】
ユーザインターフェース１６の例には、トラックボール、マウス、キーボード、ゲーミングコントローラ、及び他のタイプの入力デバイスが含まれるがそれらに限定されるわけではない。ユーザインターフェース１６はまた、タッチスクリーンであり、ディスプレイ８の一部として組み込まれうる。トランシーバモジュール１４は、デバイス２と別のデバイス又はネットワークとの間でのワイヤレス通信又はワイヤード通信を可能にする回路を含みうる。トランシーバモジュール１４は、変調器、復調器、増幅器、及び、ワイヤード通信又はワイヤレス通信のための他のそのような回路を含みうる。
【００２１】
ＧＰＵ ６は、高度な並列構造を用いてデータを素早く操作するように設計された専用プロセッサである。特に、ＧＰＵ ６は、グラフィカル処理を実行するために、レンダリングパイプラインのプログラマブルかつ固定の機能段(fixed function stages)を実行するように構成されうる。一例において、ＧＰＵ ６は、３次元グラフィックスレンダリングパイプラインを実行して、表示するために、３次元オブジェクトを２次元空間にレンダリングするように構成されうる。例えば、ＧＰＵ ６は、ディスプレイ８上に表示されるべき画素の画素値を生成するために、シェーディング、ブレンディング、イルミネーテリング、等の機能を実行しうる。ＧＰＵ ６によって生成される画素は、表示する前にフレームバッファ１０に記憶されうる。幾つかの例では、シェーディング、ブレンディング、イルミネーテリング、等の機能を実行する前に、ＧＰＵ ６は、タイル機能（tiling function）とも呼ばれるビニングパスを実行しうる。
【００２２】
図１には１つのＧＰＵ ６が示されているが、本開示の態様は、それに限定されるわけではない。幾つかの例では、デバイス２は、ＧＰＵ ６に類似した複数のＧＰＵ又はＧＰＵコアを含みうる。グラフィックス処理タスクは、これらのＧＰＵ又はＧＰＵコアの間で分けられうる。
【００２３】
ビニングパスを実行するために、ＧＰＵ ６は、図１に示されるように、ディスプレイ８上の画素を、タイルと呼ばれる、画素の複数のブロックへと分割しうる。例えば、ディスプレイ８が６４０×４８０の画素を含むように構成されると想定する。一例として、ＧＰＵ ６は、このディスプレイを、各タイルが６４×４８の画素を含む１０×１０のタイルへと分割しうる。
【００２４】
タイルメモリ２０は、ビニングパスの間、画像の表面が属する先の特定のタイルを示しうる。幾つかの例では、タイルメモリ２０は、記憶デバイス１２の一部として形成されうるが、本開示の態様はそれに限定されるわけではない。ＧＰＵ ６は、画像表面に対するビニングパス間、どのタイルにその画像表面が属するかに基づいて、タイルメモリ２０の適切な記憶位置内に、画像表面についての表面識別子値を記憶しうる。タイルメモリ２０は、複数のレイヤを含むものとみなされうる。各レイヤは、画像表面の１つに対応しうる。各レイヤは、複数の記憶位置を含む２次元レイヤでありうる。各記憶位置は、ディスプレイ８のタイルのうちの１つに対応しうる。
【００２５】
低解像度バッファ１８は、複数の記憶位置を有する２次元のバッファでありうる。幾つかの例では、低解像度バッファ１８は、記憶デバイス１２の一部として形成されうるが、本開示の態様はそれに限定されるわけではない。より詳細に以下で説明されるように、低解像度バッファ１８は、後にオクルードされる画素の不必要なレンダリングを回避するためにどの画素がレンダリングされるべきかを示す効率的なインジケーション(指標)を促進しうる。低解像度バッファ１８内の各記憶位置は、ディスプレイ８上で表される画素のブロックに対応しうる。例えば、ディスプレイ８上に表される４×４画素のブロックは、低解像度バッファ１８内の１つの記憶位置に対応しうる。４×４画素のブロックは、例示の目的で提供されており、限定するものとしてみなされるべきではない。低解像度バッファ１８は、低解像度バッファ１８の各記憶位置が、単一の画素というよりはむしろ複数の画素に対応するため、１つの低解像度バッファとみなされうる。
【００２６】
図３は、図２のＧＰＵ ６によって実行されうる例示的なグラフィックスパイプライン３０を描写する。  上述されたように、グラフィックスパイプライン３０は、フレーム全体のタイルが別々にレンダリングされ、その後表示のために組み合わせられるタイルベースのレンダリングアーキテクチャで実現されうる。グラフィックスパイプライン３０は、マイクロソフトのＤｉｒｅｃｔＸ１１ ＡＰＩに従って実現されうる。ＤｉｒｅｃｔＸ１１ ＡＰＩは、先行版のＤｉｒｅｃｔＸ ＡＰＩには存在しなかった３つの段(three stages)、プログラマブルハルシェーダ（ＨＳ）３６、固定機能テッセレータ（ＴＳ）３８、及びプログラマブルドメインシェーダ（ＤＳ）４０を含む。ハルシェーダ３６、テッセレータ３８、及びドメインシェーダ４０は、総称して「テッセレーションパイプライン」と呼ばれることもある。
【００２７】
入力アセンブラ（ＩＡ）３２は、基本プリミティブのために、メモリから複数の頂点を読み出す。基本プリミティブは、リソース５０のメモリ（例えば、図２のタイルメモリ２０）に記憶されうる。幾つかの例では、グラフィックスパイプラインの基本プリミティブは、三角形である。グラフィックスパイプライン３０のような、テッセレーション段を含むグラフィックスパイプラインの場合、基本プリミティブはパッチでありうる。パッチは本質的に、表面又はメッシュを表現する。１つのパッチは、表面を定義するために、１〜３２個の異なる制御点を含みうる。グラフィックスパイプラインに関する残りの説明は、基本プリミティブがパッチであるという憶測を立てて行うが、本開示の技法は、他の基本プリミティブタイプに対しても適用可能である。
【００２８】
頂点シェーダ(vertex shader)（ＶＳ）３４は、パッチの各制御点に対して動作を実行するプログラマブル段(programmable stage)である。頂点シェーダ３４は、仮想空間における各制御点の３Ｄ位置を、スクリーン上にそれが現れる２Ｄ座標と、深度値とに変換する。頂点シェーダは、位置、色、及びテキスチャ座標のようなプロパティを操作することができるが、新しい制御点は作り出さない。頂点シェーダ３４の出力制御点は、ハルシェーダ(hull shader)３６に進む。
【００２９】
ハルシェーダ３６は、２つの動作を実行する。殆どのパッチの場合、頂点シェーダからの変換済み制御点は、単純にドメインシェーダ４０に渡されうる。より複雑な表面を表すパッチの制御点は、ドメインシェーダ(domain shader)４０に渡される前に、ハルシェーダ３６による追加の処理を必要としうる。ハルシェーダはまた、各パッチに対して実行されるべきテッセレーションのレベルを決定し、この「テッセレーションファクタ」をテッセレータ３８に送る。
【００３０】
テッセレータ３８の基本機能は、３Ｄシーンの入力プリミティブ（例えば、パッチ）を、複数の出力プリミティブへとテッセレートする（即ち、さらに分割する）ことである。テッセレータ３８は、これらのパッチを、ハルシェーダ３６によって提供されたテッセレーションファクタに従って、三角形、四角形、又は等値線のようなより小さい出力プリミティブへとさらに分割する。テッセレータ３８の出力は、出力プリミティブを定義する頂点のセットである。テッセレーションは、より平滑な曲面（curved surface）のレンダリングを可能にし、それは、グラフィック的により詳細な画像に帰着する。
【００３１】
ドメインシェーダ４０は、テッセレーションパイプラインの最終段である。ドメインシェーダ４０は、テッセレータ３８によって作り出された出力頂点に対して動作する。ドメインシェーダ４０は、ハルシェーダ３６から受信された制御点から、最後の出力頂点位置及び属性を算出することを担う。
【００３２】
ジオメトリシェーダ(geometry shader)（ＧＳ）４２は、テッセレーションパイプラインから受信されたテッセレート済みの出力プリミティブから、追加のプリミティブを作り出すために使用されうるオプションのプログラマブル段である。ジオメトリシェーダ４２は、グラフィック的により一層詳細な画像を可能にする。
【００３３】
パイプラインの残りの段において、ラスタライザ(rasterizer)（ＲＳ）４４は、テッセレーションパイプライン及び／又はジオメトリシェーダ４２からの出力プリミティブを、３Ｄ空間から２Ｄ空間における画素値へと変換する。次に、プログラマブル画素シェーダ（ＰＳ）４６は、画素に対して、深度テスト、クリッピング(clipping)、シザリング(scissoring)、ブレンディング(blending)、等のような更なる動作を実行しうる。画素シェーダ４６の出力は、フレームバッファ１０に記憶され、次に、ディスプレイ８（図２参照）のようなディスプレイ上に表示されうる。
【００３４】
不必要なＧＰＵ処理を回避し、タイルベースのレンダリングアーキテクチャの限られたグラフィックスメモリを最も効率的に利用するために、本開示は、テッセレーション段を有するグラフィックスパイプライン（例えば、図３のグラフィックスパイプライン）での可視性ストリームの利用を提案する。可視性ストリームは、すべてのプリミティブについて、それがレンダリングされたタイルに寄与するか否かを説明する一連のビット（０／１）である。即ち、可視性ストリームは、レンダリングパイプラインの異なる段に、現在レンダリングされているフレームにおいてこのプリミティブが可視であるか否かを示す。可視性ストリームは、タイルをレンダリングする前に実行される「ビニング」パスにおいて各フレームの初めに生成される。１つ以上の可視性ストリームが、フレーム内のタイルごとに生成される。レンダリングされたタイルに寄与しない不適切なプリミティブ（即ち、これらは見えないであろう）を抜粋するために、タイルレンダリングの間、そのタイルについての対応可視性ストリームが、使用される。
【００３５】
本開示は、テッセレータ入力（即ちパッチ）と出力（即ち、三角形、四角形、又は等値線）プリミティブの両方を、タイルごとに１つ以上の可視性ストリームへと符号化する可視性ストリームの生成を提案する。入力プリミティブ及び出力プリミティブについて可視性情報を利用することで、そのようなテッセレーションアルゴリズムは、現在レンダリングされているタイルに寄与しない完全な入力パッチを（例えば、入力プリミティブ可視性ストリームを用いて）抜粋し、また、現在レンダリングされているタイルに寄与しないテッセレータ段の出力プリミティブを（例えば、出力プリミティブ可視性ストリームを用いて）抜粋する。これらの可視性ストリームをテッセレータ段の入力と出力の両方で用いることで、レンダリングパイプラインの後の段（例えば、ドメインシェーダ４０）における不適切な又は重複した呼出（invocation）の数の減少が達成されうる。本質的に、これら可視性ストリームにより、入力可視性ストリーム及び出力可視性ストリームによって可視ではないと示された入力プリミティブ又は出力プリミティブについて、レンダリングパイプラインの１つ以上の段を省略することができる。加えて、不適切な出力プリミティブ、即ち可視ではない出力プリミティブの処理が回避されうるため、テッセレータハードウェアが１つの入力パッチをテッセレートするのに消費する必要のあるクロックサイクルの数の減少が達成される。
【００３６】
本開示の一態様において、レンダリングの前にビニングパスにおいて２つの可視性ストリームがタイルごとに生成される。１つは、テッセレーション入力プリミティブ（パッチ）についてのものであり、１つは、テッセレーション出力プリミティブ（三角形）についてのものである。本開示の別の態様において、入力可視性ストリーム及び出力可視性ストリームは、単一の可視性ストリームへと融合されうるか、又は、ジオメトリシェーダに合わせて使用される。
【００３７】
図４は、入力可視性ストリーム及び出力可視性ストリームを生成する例示的なビニングパイプラインを示すブロック図である。ビニングパイプラインは、図２のＧＰＵ ６によって実行されうる。可視性ストリームを生成するために、ビニングパイプライン６０は、フレーム全体についての入力プリミティブを処理するビニングパスを実行する。ビニングパイプラインは、図３に示された完全なレンダリングパイプラインの簡略版である。テッセレーション段（即ち、ＨＳ／ＴＳ／ＤＳ）及びオプションのジオメトリシェーダを含むグラフィックスパイプラインの場合、ビニングパイプライン６０は、ビニング頂点シェーダ６２、ビニングハルシェーダ６４、ビニングテッセレータ６６、ビニングドメインシェーダ６８、オプションのビニングジオメトリシェーダ７０、ビニングラスタライザ７２、及びビニング深度テスト７４を含みうる。
【００３８】
ビニング頂点シェーダ６２はまた、ビニングシェーダとも呼ばれうる。ビニングシェーダは、唯一の出力が頂点位置である、頂点シェーダの修正版でありうる。典型的に頂点シェーダによって実行されるすべてのパラメータエクスポートは、ビニングシェーダだけでなく、それらに関連したあらゆる算出から取り除かれうる。
【００３９】
ビニング頂点シェーダ６２によって出力された頂点から、ビニングハルシェーダ６４、ビニングテッセレータ６８、及びビニングドメインシェーダは、図３のテッセレーションパイプラインと同じ方法でテッセレートされた出力プリミティブを生成する。ビニングハルシェーダ６４及びビニングテッセレータ６８は、図３のテッセレーションパイプラインにおける対応段に関して、最適化されうる。特に、ビニングハルシェーダ６４及びビニングテッセレータ６８は、位置関連変数だけを計算するように最適化されうる。
【００４０】
完全なレンダリングパイプラインに対してジオメトリシェーダがイネーブルにされる場合、ビニングパイプライン６０もまた、ビニングテッセレータによって生成されたテッセレート済みの出力プリミティブから追加の出力プリミティブを生成するビニングジオメトリシェーダ７０を含みうる。
【００４１】
ビニングラスタライザ７２は、２Ｄ空間での出力プリミティブの低解像度表現（即ち画素）を生成する。各画素は、最終画像における画素エリア（例えば、４×４の画素エリア）を表す。生成された低解像度画素は、部分的にカバーされたもの又は完全にカバーされたものという２つの値を有しうる。ビニングラスタライザ７２は、通常のラスタライズ段と同じ抜粋ルール（フェイスネス（faceness）、錐台、等）を用い、それによって、シーンに対して実際に可視であるこれらの三角形だけを生成する。
【００４２】
ビニングパスの最終段は、ビニング深度テストユニット７４（低解像度Ｚテストとも呼ばれる）である。ビニング深度テストユニット７４は、出力プリミティブからラスタライズされた画素が最後のシーンで可視であるか否かを決定する。ビニング深度テストユニット７４は、画素が三角形によって完全にカバーされる状況でのみ、低解像度バッファ１８（図２参照、低解像度ｚバッファとも呼ばれる）に書き込む。部分的にカバーされた画素は、低解像度バッファに書き込まれない。ビニングパスの最後に、低解像度バッファ１８は、外部のメモリへと書き込まれることができ、レンダリングパスの間に使用するためのＺバッファを初期化するために後に使用されうる。これは、レンダリング（例えば、図３の画素シェーダ４６における）の間の、改善された深度テストを提供する。ＧＰＵ ６の内蔵グラフィックスメモリは、ビニングパスの間、低解像度バッファとしても使用されうる。レンダリングパスが４×４の画素ブロックで行われるため、グラフィックスメモリ内のＺバッファもまた、この解像度でありうる。更に、グラフィックスメモリ内の色の付いていないバッファが必要とされうる。これは、低解像度バッファ１８が、フル解像度に比べて、非常に大きいオンスクリーンエリアをカバーできることを意味する。
【００４３】
特定のタイルについてのビニング深度テストを通過したプリミティブ（即ち、このプリミティブをラスタライズすることによって生成された画素は、そのタイルで可視である）は、可視性ストリームにおいて可視であると印付けされる。特定のタイルについての低解像度Ｚテストを通過しなかったプリミティブ（即ち、このプリミティブをラスタライズすることによって生成された画素は、そのタイルで可視ではない）は、可視性ストリームにおいて可視ではないと印付けされる。大半の三角形からラスタライズされた殆どの画素が、任意の所与のタイルについて可視ではないため、各タイルについての可視性ストリームは、それぞれのプリミティブが可視ではないことを示す多数の０から構成されうる。このように、可視性ストリームは、ランレングス圧縮アルゴリズム（run length compression algorithm）を使用して圧縮されうる。
【００４４】
出力可視性ストリーム８２は、出力プリミティブ（例えば、三角形）の可視性を符号化する。出力可視性ストリームは、対応するタイルにおいて出力プリミティブが可視であるか否かを示す１ビットを出力プリミティブごとに含む。（例えば、１は可視であることを示し、０は可視でないことを示す、また逆も同様である。）入力可視性ストリーム８０は、入力プリミティブ（例えば、ＤＸ１１におけるパッチ）の可視性を符号化する。パッチは、パッチから形成された少なくとも１つの出力プリミティブが、ビニング深度テストユニット７４によって可視であると決定されると、可視であるとみなされる。パッチから形成された出力プリミティブが何れも可視でない場合、そのパッチ全体が、入力可視性ストリームにおいて可視ではないと示されうる。このケースでは、入力可視性ストリーム内の対応ビットは、ゼロに設定されうる。代替的に、パッチから形成された少なくとも１つの出力プリミティブが可視である場合、そのパッチ全体が、例えば、対応ビットを１に設定することで、入力可視性ストリームにおいて可視であると示されうる。
【００４５】
図５は、例示的な入力可視性ストリーム及び例示的な出力可視性ストリームを示す概念図である。入力可視性ストリーム８０は、パッチごとに、１及び０からなる文字列を含み、ここで、あるビットは、パッチの少なくとも一部が最終シーンにおいて可視であることを示し（例えば、パッチ３のビット１）、別のビットは、パッチ全体が最終シーンにおいて可視ではないことを示す（例えばパッチ０のビット０）。出力可視性ストリーム８２は、三角形ごとに、１及び０から成る文字列を含み、ここで、あるビットは、三角形が最終シーンにおいて可視である画素に寄与することを示し（例えば、三角形０のビット１）、別のビットは、三角形が最終シーンにおいて可視である画素に寄与しないことを示す（例えば、三角形２のビット０）。図５に示されるように、出力可視性ストリームは、パッチ単位で作り出されうる。即ち、各タイルのパッチごとに１つの出力可視性ストリームが存在する。別の例において、各タイルは、入力プリミティブから形成されたすべての出力プリミティブを互いに連結させる１つの出力可視性ストリームを有しうる。
【００４６】
図３に戻り、出力可視性ストリーム及び入力可視性ストリームは、メモリ（例えば、タイルメモリ２０）に記憶され、リソース５０を通してレンダリングパイプライン段に利用可能にされうる。１つ以上のレンダリング段は、入力プリミティブ又は出力プリミティブをレンダリングする際に、それぞれ入力可視性ストリーム及び出力可視性ストリームによって示される可視性に基づいて省略されうる。
【００４７】
一例として、出力可視性ストリームを利用して、テッセレータ３８は、多数の出力三角形を、それらが可視ではない場合又は現在レンダリングされているタイルに位置づけられていない場合に省略することができる。同様に、パッチが可視であることを入力可視性ストリームが示す場合、レンダリングパスの間、現在のタイルについて、そのパッチは処理され、示さない場合は、そのパッチは、抜粋される（即ち、レンダリングがそのパッチについて省略される）。
【００４８】
具体的に、可視ではない入力についてレンダリングを省略することは、入力プリミティブが可視ではないと入力可視性ストリームが示す場合に、入力プリミティブ全体のテッセレーションを回避することを含みうる。このように、その入力プリミティブについての出力プリミティブは作り出されず、よって、パイプラインの更なる段による処理に利用可能ではない。同様に、可視ではない出力プリミティブについてレンダリングを省略することは、可視ではない出力プリミティブを生成するであろうパッチの特定の部分についてテッセレーションを省略することを含みうる。使用される省略プロセスは、テッセレーションハードウェア依存でありうる。一例が、図６及び７に関連して以下に説明される。図６及び７は、入力プリミティブをテッセレートするための例示的な技法を示す概念図である。
【００４９】
入力パッチテッセレーションは典型的に、入力三角形の中により小さい三角形を追加すること、及び、両方の三角形の１つのエッジ（即ち、同じ方向に向けられたより大きい三角形の１つのエッジとより小さい三角形の１つのエッジ）をペアワイズに考えることで、２つの三角形の間のエリアをテッセレートすることを含む。図６に示されるように、テッセレーションは、エッジペア８３ａと８３ｂとの間、エッジペア８４ａと８４ｂとの間、及びエッジペア８５ａと８５ｂとの間で行われうる。テッセレーションが３つのエッジペアについて完了した後、新しいより小さい入力三角形が、以前のより小さい三角形の内側に挿入される（図７参照）。図７に示されるように、エッジ８３ｂ、８４ｂ、及び８５ｂは、次に、それぞれ、エッジ８３ｃ、８４ｃ、及び８５ｃとペアリングされている。このプロセスは、入力三角形が完全にテッセレートされるまで続く。テッセレーションの量（即ち、テッセレーションレベル）は、ハルシェーダ３６（図３参照）によって生成されるテッセレーションファクタによって定義される。
【００５０】
上の例示的なテッセレーションプロシージャから留意されうるように、テッセレーションプロセスは、一回に１つのエッジペアずつ進む。出力可視性ストリームからの三角形可視性情報を使用することによって、高められたテッセレータ実現は、現在テッセレートされているエリアの出力三角形の何れもが、現在レンダリングされているタイルにおいて可視とはならない場合、エッジペア全体の処理を省略することができる。例えば、エッジペア８５ｂと８５ｃとの間のエリアは、出力可視性ストリームにより可視ではないと示される出力プリミティブを含みうる。このように、テッセレーションは、このエッジペアについて省略され、図７に示されるように、何れの出力三角形も作り出されない可能性がある。１つの三角形ペアについて、セットアップ段の後に、ハルシェーダから受信されたテッセレーションファクタに基づき、いくつの三角形が、２つの三角形の間のエリアで生成されることとなるかが知られているため（複数のエッジペアは、並列とみなされるか、又は一体としてみなされうる可能性がある）、単一のテストで幾つかのエッジペアを省略することも可能である。
【００５１】
本開示の別の例において、入力プリミティブについて１つの可視性ストリームを、出力プリミティブについての別個の可視性ストリームを作り出すというよりはむしろ、単一の可視性ストリームが作り出される。そのようなケースにおいて、単一の可視性ストリームは、最大テッセレーション出力のために、符号化されるだろう。即ち、可視性ストリームの長さは、特定のレンダリングパイプラインについて定義されたような、可能な最大テッセレーションファクタ及びパッチサイズを前提として、テッセレートされたプリミティブの最大量によって定義されるだろう。例えば、最大テッセレーション出力は、ＤｉｒｅｃｔＸ１１ ＡＰＩによって定義されうる。単一の可視性ストリームは、各タイルについてパッチごとに出力プリミティブの可視性を示すだろう。１つのパッチについての単一の可視性ストリーム内の１つの出力プリミティブが可視である場合、このパッチもまた可視である。各パッチについての可視性ストリームは、長さＮを有するだろう。ここで、Ｎは、最大テッセレーション出力（即ち、可能な出力三角形の最大数）に対応する。
【００５２】
図８は、単一の可視性ストリームを生成する例示的なビニングパイプラインを示すブロック図である。ビニングパイプライン９０は、図４のビニングパイプライン６０と同様の方式で動作するだろう。しかしながら、２つの可視性ストリームを作り出す代わりに、ビニングパイプライン９０は、単一の可視性ストリーム１０４を作り出す。デフォルト設定で、パッチ全体についての可視性ストリーム１０４内の各ビットは、０で符号化されるだろう（即ち、テッセレータの出力三角形は、何れも可視ではないと想定される）。ビニング深度テストユニット７４によって、任意のテッセレータ出力三角形が、現在レンダリングされているタイルにおいて可視であるとわかると、可視性ストリームの対応ビットは、１に設定される。タイルがレンダリングされる際、可視性ストリームは、単一の可視性ストリームの単一のパッチエリア内の可視性ビットの何れかが１であるか否かを決定するために、簡単にチェックされうる。パッチ内のすべての値が０である場合、これは、例えば、１つのクロックサイクルで、決定されうる。パッチについてのすべての可視性ビットが０である場合、頂点シェーダ及びテッセレーションパイプラインは両方とも、このパッチについて省略されうる。可視性ストリーム内の可視性ビットの何れかが１である場合、このパッチは通常どおり処理される。しかしながら、現在、テッセレータは、可視性ストリームによって可視ではない（０）と定義された特定の出力プリミティブのテッセレーションを省略するように構成されうる。このように、可視ではないパッチと三角形を両方とも省略することで、頂点シェーダ、テッセレーションパイプラインだけでなくラスタライザについて不必要な処理が回避される。
【００５３】
図９は、例示的な単一の可視性ストリームを示す概念図である。可視性ストリーム１０４は、長さＮであり、ここで、Ｎは、レンダリングパイプラインによって定義されたような、パッチごとの出力プリミティブの最大数を定義する。
【００５４】
図８に戻り、本開示の別の例では、ジオメトリシェーダがイネーブルである場合、単一の可視性ストリームも使用されうる。上述されたように、ジオメトリシェーダは、テッセレーションパイプラインによって出力されたプリミティブから、更に多くのプリミティブを生成しうる。単一のジオメトリシェーダの起動が生成することができるデータの最大量は、ＤＸ１１ ＡＰＩに準拠して４ｋに制限される。上述された最大テッセレーション出力に基づいて、入力可視性ストリームと出力可視性ストリームとを互いに融合させることに類似して、ジオメトリシェーダがイネーブルである場合の単一の出力可視性ストリームは、ジオメトリシェーダが生成したプリミティブの最大数を乗じた、テッセレート済みのプリミティブの最大値を符号化するだろう。即ち、テッセレーション出力プリミティブの最大数がＮであり、ジオメトリシェーダからの出力プリミティブの最大数がＭである場合、ジオメトリシェーダがイネーブルな場合の可視性ストリームの長さは、Ｎ×Ｍであろう。この例において、ビニングジオメトリシェーダ７０は、ジオメトリシェーダによって生成されたプリミティブが最終シーンで可視であるか否かをビニング深度テストユニット７４が決定できるようにイネーブルにされるだろう。
【００５５】
この場合も同様に、この単一の可視性ストリームについてのデフォルト値は、０である。任意のジオメトリシェーダ出力三角形が、ビニング深度テストユニット７４によって、ビニングパスの間に、現在レンダリングされているタイルにおいて可視であると決定されると、その対応可視性ビットは、１に設定されるだろう。タイルがレンダリングされる際、可視性ストリームがチェックされ、単一の可視性ストリームにおける単一のパッチエリア内の可視性ビットの何れかが１に設定されたか否かが決定される。パッチ内のすべての値が０である場合、これは、１つのクロックサイクルで決定されうる。これに応じて、テッセレータ３８（図３参照）は、任意のジオメトリシェーダ出力プリミティブが可視であった場合に、すべてのジオメトリシェーダ出力可視性ビットレンジ（レンジサイズは、ジオメトリシェーダ出力プリミティブの最大数である）をチェックして、ドメインシェーダ４０又はジオメトリシェーダ４２による処理のために現在テッセレートされている三角形が生成され送られる必要があるか否かを決定しうる。
【００５６】
図９に戻り、単一の可視性ストリーム１０４’は、テッセレーション段だけでなく、イネーブルなジオメトリシェーダも有するグラフィックスパイプラインに使用される。単一の可視性ストリーム１０４’は、長さがＮ×Ｍであり、Ｎは、レンダリングパイプラインによって定義されたようなパッチごとの出力プリミティブの最大数を定義し、Ｍは、ジオメトリシェーダによって生成されうる出力プリミティブの最大数を定義する。
【００５７】
図１０は、タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するための例示的な方法を示すフローチャートである。一例として、方法は、図２のＧＰＵ ６によって実行されうる。ＧＰＵ ６は、フレームのタイルごとに入力可視性ストリームを生成し（１１０）、フレームのタイルごとに出力可視性ストリームを生成する（１１２）ように構成されうる。入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す。出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示す。出力プリミティブは、入力プリミティブをテッセレートすることで生成される。
【００５８】
ＧＰＵ ６は更に、フレームの現在のタイルをレンダリングするように構成され、ここで、レンダリングすることは、入力可視性ストリーム及び出力可視性ストリームにそれぞれ基づいて、入力プリミティブ及び出力プリミティブについて省略される（１１４）。特に、出力プリミティブについてのレンダリングを省略することは、出力可視性ストリームによって、現在のフレームにおいて可視ではないと示された出力プリミティブについてのテッセレーションを省略することを含みうる。
【００５９】
入力可視性ストリームを生成し（１１０）、出力可視性ストリームを生成する（１１２）ステップは、ビニングパスにおいてまとめて実行されうる（１１６）。図１１は、タイルベースのレンダリングパイプラインにおけるビニングパスの例示的な方法を示すフローチャートである。ＧＰＵ ６はまた、ビニングパス１１６を実行するように構成されうる。ＧＰＵ ６は更に、入力プリミティブを頂点シェーディングし（１１８）、複数の出力プリミティブを生成するために頂点シェーディングされた入力プリミティブをテッセレートし（１２０）、複数の出力プリミティブをラスタライズし（１２２）、出力プリミティブがフレームのタイルについて可視であるか否かを決定するために、ラスタライズされた出力プリミティブに対して深度テストを実行する（１２４）ように構成されうる。
【００６０】
ＧＰＵ ６は、深度テストに基づいて入力プリミティブがタイルにおいて可視であるか否かを示す、入力可視性ストリーム内のインジケーションを生成し、ここにおいて、入力プリミティブは、その入力プリミティブをテッセレートすることで生成された出力プリミティブの何れかが可視であると決定された場合に、可視であると決定される（１２６）。同様に、ＧＰＵ ６は、深度テストに基づいて出力プリミティブがタイルにおいて可視であるか否かを示す、出力可視性ストリーム内のインジケーションを生成する（１２８）。
【００６１】
図１２は、タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するための別の例示的な方法を示すフローチャートである。この例において、単一の可視性ストリームは、入力プリミティブから形成されうる出力プリミティブの可視性を示す入力プリミティブごとに生成される。ＧＰＵ ６は、入力プリミティブを頂点シェーディングし（１４０）、複数の出力プリミティブを生成するために、頂点シェーディングされた入力プリミティブをテッセレートし（１４２）、複数の出力プリミティブをラスタライズし（１４４）、出力プリミティブがフレームのタイルについて可視であるか否かを決定するために、ラスタライズされた出力プリミティブに対して深度テストを実行する（１４６）ように構成されうる。
【００６２】
ＧＰＵ ６は更に、深度テストに基づいて出力プリミティブがタイルにおいて可視であるか否かを示す、可視性ストリーム内のインジケーションを生成する（１４８）ように構成されうる。可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示す。長さＮは、レンダリングパイプラインによって定義されるように、入力プリミティブに対する出力プリミティブの最大数によって決定される。ＧＰＵ ６はまた、フレームの現在のタイルをレンダリングするように構成され、ここで、レンダリングすることは、可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースにでは入力プリミティブについて省略され、レンダリングするとは、可視性ストリームによって現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される（１５０）。
【００６３】
図１３は、タイルベースのレンダリングパイプラインにおけるビニングパスの別の例示的な方法を示すフローチャートである。図１３に示されるプロセスは、ジオメトリステップ（１５２）が追加されていることを除き、図１２に示されたものと同じである。ＧＰＵ ６がイネーブルなジオメトリシェーダを有するケースにおいて、追加の出力プリミティブを生成するために、複数の出力プリミティブのジオメトリシェーディングを実行する追加のステップ（１５２）が、テッセレーションステップ（１４２）とラスタライゼーションステップ（１４４）との間で実行される。この例において、可視性ストリームは、増大された長さのＮ×Ｍビットを有するであろう。ここで、Ｍは、ジオメトリシェーダによって生成された出力プリミティブの最大数である。
【００６４】
１つ以上の例において、上述された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせで実現されうる。ソフトウェアで実現された場合、これら機能は、１つ以上の命令又はコードとして、非一時的なコンピュータ読取可能な媒体を備える製品（article of manufacture）に記憶されうる。コンピュータ読取可能な媒体は、コンピュータデータ記憶媒体を含みうる。データ記憶媒体は、本開示で説明された技法を実現するための命令、コード、及び／又はデータ構造を検索するために、１つ以上のコンピュータ又は１つ以上のプロセッサによってアクセスされることができる任意の利用可能な媒体でありうる。限定ではなく例として、このようなコンピュータ読取可能な媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶デバイス、フラッシュメモリ、或いはデータ構造又は命令の形式で所望のプログラムコードを記憶又は搬送するために使用可能であり、かつコンピュータによってアクセスされることができる任意の他の媒体を備えうる。本明細書で使用される場合、ディスク（disk）及びディスク（disc）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー（登録商標）ディスク、及びブルーレイ（登録商標）ディスクを含み、ここでディスク（disk）は、通常磁気的にデータを再生し、ディスク（disc）は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
【００６５】
コードは、１つ以上のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、又は、他の同等な集積又はディスクリートな論理回路のような１つ以上のプロセッサによって実行されうる。加えて、幾つかの態様では、本明細書で説明された機能性は、専用のハードウェアモジュール及び／又はソフトウェアモジュール内で提供されうる。また、本技法は、１つ以上の回路又は論理エレメントで十分に実現されることができる。
【００６６】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、又はＩＣのセット（例えば、チップセット）を含む多種多様なデバイス又は装置で実現されうる。様々なコンポーネント、モジュール、又はユニットは、本開示において、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために説明されているが、それらは、異なるハードウェアユニットによる実現を必ずしも要求するわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わせられうるか、上述された１つ以上のプロセッサを適切なソフトウェア及び／又はファームウェアとともに含む、相互動作ハードウェアユニットの集合によって提供されうる。
【００６７】
様々な例が説明されている。これらの例及び他の例は、以下の特許請求の範囲の範囲内にある。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
［１］  グラフィックスプロセッサによる、タイルベースのグラフィックスレンダリングパイプラインにおけるテッセレーションのための方法であって、フレームのタイルごとに入力可視性ストリームを生成することと、ここで、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、前記フレームのタイルごとに出力可視性ストリームを生成することと、ここで、前記出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることで生成される、を備える方法。
［２］  前記入力可視性ストリーム及び前記出力可視性ストリームを生成することは、前記入力プリミティブを頂点シェーディングすることと、前記頂点シェーディングされた入力プリミティブをハルシェーディングすることと、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートすることと、前記複数の出力プリミティブをドメインシェーディングすることと、画素を生成するために、前記複数の出力プリミティブをラスタライズすることと、前記画素がフレームのタイルについて可視であるか否かを決定するために、深度テストを実行することと、前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成することとを備え、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、前記入力プリミティブは、可視であると決定される、［１］に記載の方法。
［３］  前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記出力可視性ストリーム内のインジケーションを生成することとを更に備え、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合、前記出力プリミティブは可視であると決定される、［２］に記載の方法。
［４］  前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、又は等値線である、［１］に記載の方法。
［５］  フレームの現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略される、［１］に記載の方法。
［６］  フレームの現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［１］に記載の方法。
［７］  前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについてテッセレーションを省略することを更に備える、［６］に記載の方法。
［８］  グラフィックスプロセッサによる、タイルベースのグラフィックスレンダリングパイプラインにおけるテッセレーションのための方法であって、フレームのタイルごとに、各入力プリミティブについての可視性ストリームを生成することを備え、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、方法。
［９］  前記長さＮは、レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、［８］に記載の方法。
［１０］  可視性ストリームを生成することは、前記入力プリミティブを頂点シェーディングすることと、前記頂点シェーディングされた入力プリミティブをハルシェーディングすることと、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートすることと、前記複数の出力プリミティブをドメインシェーディングすることと、画素を生成するために、前記複数の出力プリミティブをラスタライズすることと、前記画素がフレームのタイルについて可視であるか否かを決定するために、深度テストを実行することと、前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記可視性ストリーム内のインジケーションを生成することとを備え、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［８］に記載の方法。
［１１］  フレームの現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、［８］に記載の方法。
［１２］  フレームの現在のタイルをレンダリングすることを更に備え、レンダリングすることは、前記可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［８］に記載の方法。
［１３］  前記タイルベースのレンダリングアーキテクチャは、イネーブルなジオメトリシェーダを有し、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、可視性ストリームを生成することは更に、前記出力プリミティブをドメインシェーディングした後に、前記複数の出力プリミティブをジオメトリシェーディングすることを備える、［８］に記載の方法。
［１４］  タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、ビニングパイプラインを実行するように構成されたグラフィックスプロセッサを備え、前記ビニングパイプラインは、フレームのタイルごとに入力可視性ストリームを生成するように構成され、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示し、前記ビニングパイプラインは更に、前記フレームのタイルごとに出力可視性ストリームを生成するように構成され、前記出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、装置。
［１５］  前記ビニングパイプラインは、前記入力プリミティブに対して頂点シェーディングを実行するように構成されたビニング頂点シェーダと、前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行するように構成されたビニングハルシェーダと、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするように構成されたビニングテッセレータ段と、前記複数の出力プリミティブに対してドメインシェーディングを実行するように構成されたビニングドメインシェーダと、画素を生成するために、前記複数の出力プリミティブをラスタライズするように構成されたビニングラスタライザと、前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するように構成されたビニング深度テスト段とを備え、前記ビニングパイプラインは、前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成し、前記入力プリミティブは、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、可視であると決定され、前記ビニングパイプラインは、前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記出力可視性ストリーム内のインジケーションを生成し、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［１４］に記載の装置。
［１６］  前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、等値線である、［１４］に記載の装置。
［１７］  フレームの現在のタイルをレンダリングするように構成されたレンダリングパイプラインを更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略され、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［１４］に記載の装置。
［１８］  前記レンダリングパイプラインは、レンダリングテッセレータ段を含み、前記レンダリングテッセレータ段は、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示される出力プリミティブについて省略される、［１７］に記載の装置。
［１９］  タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、ビニングパイプラインを実行するように構成されたグラフィックスプロセッサを備え、前記ビニングパイプラインは、フレームのタイルごとに、各入力プリミティブについて可視性ストリームを生成するように構成され、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、装置。
［２０］  前記長さＮは、レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、［１９］に記載の装置。
［２１］  前記ビニングパイプラインは、前記入力プリミティブに対して頂点シェーディングを実行するように構成されたビニング頂点シェーダと、前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行するように構成されたビニングハルシェーダと、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするように構成されたビニングテッセレータ段と、前記複数の出力プリミティブに対してドメインシェーディングを実行するように構成されたビニングドメインシェーダと、画素を生成するために、前記複数の出力プリミティブをラスタライズするように構成されたビニングラスタライザと、前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するように構成されたビニング深度テスト段とを備え、前記ビニングパイプラインは、前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記可視性ストリーム内のインジケーションを生成し、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［１９］に記載の装置。
［２２］  フレームの現在のタイルをレンダリングするように構成されたレンダリングパイプラインを更に備え、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、［１９］に記載の装置。
［２３］  レンダリングすることは、前記可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［１９］に記載の装置。
［２４］  前記レンダリングパイプラインは、ジオメトリシェーダを含み、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、前記ビニングパイプラインは更に、前記ビニングドメインシェーダの後に、前記複数の出力プリミティブに対してジオメトリシェーディングを実行するように構成されたビニングジオメトリシェーダを備える、［１９］に記載の装置。
［２５］  タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、フレームのタイルごとに入力可視性ストリームを生成するための手段と、ここで、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示す、前記フレームのタイルごとに出力可視性ストリームを生成するための手段と、ここで、前記出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることで生成される、を備える装置。
［２６］  前記入力可視性ストリーム及び前記出力可視性ストリームを生成するための手段は、前記入力プリミティブを頂点シェーディングするための手段と、前記頂点シェーディングされた入力プリミティブをハルシェーディングするための手段と、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするための手段と、前記複数の出力プリミティブをドメインシェーディングするための手段と、画素を生成するために、前記複数の出力プリミティブをラスタライズするための手段と、前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するための手段と、前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成するための手段とを備え、前記入力プリミティブは、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、可視であると決定される、［２５］に記載の装置。
［２７］  前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、出力可視性ストリーム内のインジケーションを生成するための手段とを更に備え、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［２６］に記載の装置。
［２８］  前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、等値線である、［２５］に記載の装置。
［２９］  フレームの現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略される、［２５］に記載の装置。
［３０］  フレームの現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［２５］に記載の装置。
［３１］  前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについてのテッセレーションを省略するための手段を更に備える、［３０］に記載の装置。
［３２］  タイルベースのレンダリングパイプラインにおいてテッセレーションを実行するように構成された装置であって、フレームのタイルごとに、各入力プリミティブについて可視性ストリームを生成するための手段を備え、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、装置。
［３３］  前記長さＮは、レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、［３２］に記載の装置。
［３４］  可視性ストリームを生成するための手段は、前記入力プリミティブを頂点シェーディングするための手段と、前記頂点シェーディングされた入力プリミティブをハルシェーディングするための手段と、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートするための手段と、前記複数の出力プリミティブをドメインシェーディングするための手段と、画素を生成するために、前記複数の出力プリミティブをラスタライズするための手段と、前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行するための手段と、前記深度テストに基づいて前記タイルにおいて前記出力プリミティブが可視であるか否かを示す、前記可視性ストリーム内のインジケーションを生成するための手段とを備え、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［３２］に記載の装置。
［３５］  フレームの現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、［３２］に記載の装置。
［３６］  フレームの現在のタイルをレンダリングするための手段を更に備え、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［３２］に記載の装置。
［３７］  前記タイルベースのレンダリングアーキテクチャは、イネーブルなジオメトリシェーダを有し、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、可視性ストリームを生成するための手段は更に、前記出力プリミティブをドメインシェーディングするための手段の後に、前記複数の出力プリミティブをジオメトリシェーディングするための手段を備える、［３２］に記載の装置。
［３８］  コンピュータ読取可能な記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ読取可能な媒体は命令を備え、前記命令は、実行されると、タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するためのデバイスのプロセッサに対して、フレームのタイルごとに入力可視性ストリームを生成させるように構成される、ここで、前記入力可視性ストリームは、レンダリングされる際に各タイルにおいて入力プリミティブが可視であるか否かを示し、前記ビニングパイプラインは更に、フレームのタイルごとに出力可視性ストリームを生成するように構成され、前記出力可視性ストリームは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、コンピュータプログラム製品。
［３９］  プロセッサに更に、前記入力プリミティブに対して頂点シェーディングを実行させ、前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行させ、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートさせ、前記複数の出力プリミティブに対してドメインシェーディングを実行させ、画素を生成するために、前記複数の出力プリミティブをラスタライズさせ、前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行させる、ここにおいて、前記プロセッサは、前記深度テストに基づいて前記入力プリミティブが前記タイルにおいて可視であるか否かを示す、前記入力可視性ストリーム内のインジケーションを生成し、前記入力プリミティブは、前記入力プリミティブに関連付けられた前記出力プリミティブをラスタライズすることで生成された前記画素のうちの何れかが可視であると決定された場合に、可視であると決定され、前記プロセッサは、前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記出力可視性ストリーム内のインジケーションを生成し、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［３８］に記載のコンピュータプログラム製品。
［４０］  前記入力プリミティブはパッチであり、前記出力プリミティブは三角形、四角形、等値線である、［３８］に記載のコンピュータプログラム製品。
［４１］  プロセッサに更に、フレームの現在のタイルをレンダリングさせる、ここで、レンダリングすることは、前記入力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された入力プリミティブについて省略され、レンダリングすることは、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［３８］に記載のコンピュータプログラム製品。
［４２］  前記命令は更に、前記プロセッサに、レンダリングテッセレータ段を含むレンダリングパイプラインを実行させ、前記レンダリングテッセレータ段は、前記出力可視性ストリームによって、前記現在のフレームにおいて可視ではないと示される出力プリミティブについて省略される、［４１］に記載のコンピュータプログラム製品。
［４３］  コンピュータ読取可能な記憶媒体を備えるコンピュータプログラム製品であって、前記コンピュータ読取可能な媒体は命令を備え、前記命令は、実行されると、タイルベースのグラフィックスレンダリングパイプラインにおいてテッセレーションを実行するためのデバイスのプロセッサに対して、フレームのタイルごとに、各入力プリミティブについて可視性ストリームを生成させる、ここで、前記可視性ストリームは、Ｎビットの長さを有し、各ビットは、レンダリングされる際に各タイルにおいて出力プリミティブが可視であるか否かを示し、前記出力プリミティブは、前記入力プリミティブをテッセレートすることによって生成される、コンピュータプログラム製品。
［４４］  前記長さＮは、レンダリングパイプラインによって定義されるような、入力プリミティブに対する出力プリミティブの最大数によって決定される、［４３］に記載のコンピュータプログラム製品。
［４５］  プロセッサに更に、前記入力プリミティブに対して頂点シェーディングを実行させ、前記頂点シェーディングされた入力プリミティブに対してハルシェーディングを実行させ、複数の出力プリミティブを生成するために、前記ハルシェーディングされた入力プリミティブをテッセレートさせ、前記複数の出力プリミティブに対してドメインシェーディングを実行させ、画素を生成するために、前記複数の出力プリミティブをラスタライズさせ、前記画素がフレームのタイルについて可視であるか否かを決定するために、前記画素に対して深度テストを実行させ、前記プロセッサは、前記深度テストに基づいて前記出力プリミティブが前記タイルにおいて可視であるか否かを示す、前記可視性ストリーム内のインジケーションを生成し、前記出力プリミティブは、前記出力プリミティブをラスタライズすることで生成された任意の画素が可視であると決定された場合に、可視であると決定される、［４３］に記載のコンピュータプログラム製品。
［４６］  プロセッサに更に、フレームの現在のタイルをレンダリングさせる、ここにおいて、レンダリングすることは、前記可視性ストリーム内のすべてのビットが可視ではない出力プリミティブを示すケースでは、入力プリミティブについて省略される、［４３］に記載のコンピュータプログラム製品。
［４７］  レンダリングすることは、前記可視性ストリームによって、前記現在のフレームにおいて可視ではないと示された出力プリミティブについて省略される、［４３］に記載のコンピュータプログラム製品。
［４８］  前記命令は更に、前記プロセッサに、ジオメトリシェーダを含むレンダリングパイプラインを実行させ、前記可視性ストリームは、Ｎ×Ｍビットの長さを有し、ここで、Ｍは、前記ジオメトリシェーダによって生成される出力プリミティブの最大数であり、前記命令は更に、前記プロセッサに、ドメインシェーディングを実行した後に、前記複数の出力プリミティブに対してジオメトリシェーディングを実行させる、［４３］に記載のコンピュータプログラム製品。
【図１】
0005837221.tif 000002
【図２】
0005837221.tif 000003
【図３】
0005837221.tif 000004
【図４】
0005837221.tif 000005
【図５】
0005837221.tif 000006
【図６】
0005837221.tif 000007
【図７】
0005837221.tif 000008
【図８】
0005837221.tif 000009
【図９】
0005837221.tif 000010
【図１０】
0005837221.tif 000011
【図１１】
0005837221.tif 000012
【図１２】
0005837221.tif 000013
【図１３】
0005837221.tif 000014