ユーザ用ツール

サイト用ツール


opengl:optimize

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opengl:optimize [2014/04/18 21:28] – [Vertex Cache と Primitive Type] ogaopengl:optimize [2014/04/20 04:32] (現在) – [Alpha Test (discard) の是非] oga
行 176: 行 176:
  
 ==== Alpha Test (discard) の是非 ==== ==== Alpha Test (discard) の是非 ====
- 
  
 新しい GPU では、Alpha Test (discard) はパフォーマンスの低下を招く要因であると言われています。 新しい GPU では、Alpha Test (discard) はパフォーマンスの低下を招く要因であると言われています。
-一般的には Eary Z culling を阻害するためで、 
-Face の Pixel に穴が開くとプリミティブ単位の代表 Z 値を使うことができなくなります。 
  
-特に PowerVR などの Deferred Rendering (TBDR) と相性が悪く、ハードウエアの利点をスポイルしてしまうことになります。 +例えば PowerVR などの Deferred Rendering (TBDR) と相性が悪くなります。 
-PowerVR は先に Depth Buffer を生成して隠面除去を行ってから、表面の必要なピクセルに対してのみ Pixel Shader (Fragment Shader) を走らせます。 +PowerVR は先に Depth Buffer を生成しておき、表面の必要なピクセルに対してのみ Pixel Shader (Fragment Shader) を走らせます。 
-ちょうど Desktop GPU で用いられる Deferred Lighting を、ハードウエアが自動的に行ってくれるわけです。 +ポリゴンが重なってもシェーダー負荷が一定以上上がらないので、効率よい描画ができることが特徴です。 
-もし Shader に discard 命令が含まれており、途中で pixel を捨てる可能性があるならば Pixel Shader を実行してみないと Depth Buffer が正しいらないことがわかります。+ちょうど Desktop GPU で用いられる Deferred Lighting を、ハードウエアが自動的に行ってくれていことになります。 
 +ところが、もし Shader に discard 命令が含まれてるならShader を実行してみないと正しい Depth Buffer を得ることができません。 
 +よってポリゴンりを効率良く取り除くことができなくなります。
  
- +古い GPU アーキテクチャにおいて必ずしも悪い面だけとは限りません。 
-ところが古い GPU アーキテクチャdiscard (texkill) によって早いタイミングで Pixel Shader を終了させることにより、 +discard (texkill) によって早いタイミングで Pixel Shader を終了させることにより、 
-無駄な Texture Fetch や演算を省くことが可能す。 +後続のシェーダーの演算や無駄な Texture Fetch を省くことが可能になります。 
-Tegra 2/3/4 の ULP GeForce は G70 世代の古い GPU core なので、使用した方がシェーダーの実行効率を上げることができると言われています。 +Tegra 2/3/4 の ULP GeForce は G70 世代の古い GPU core なので、適切に discard (texkill) を使用した方がシェーダーの実行効率を上げることができると言われています。 
-例えば半透明描画時に Alpha 値が 0 ならば、カラーを出力しないで discard (texkill) してピクセルを捨てることができます。+例えば半透明描画時にテクスチャの Alpha 値が 0 とわかっているならば、カラーの演算結果は最終的に無駄になります。 
 +カラーを出力しないで、テクスチャを読んだ直後に discard (texkill) してピクセルを捨てる都合が良いわけです。
  
 ただし他の GPU との互換性や今後のことを考えると、使わない方が良いと思われます。 ただし他の GPU との互換性や今後のことを考えると、使わない方が良いと思われます。
- 
  
  
opengl/optimize.1397824110.txt.gz · 最終更新: 2014/04/18 21:28 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki