ユーザ用ツール

サイト用ツール


opengl:glsl

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opengl:glsl [2014/03/17 19:19] – [GPU で端末を選ぶ] ogaopengl:glsl [2015/09/17 01:40] (現在) – [Tegra2 だけ Fragment Shader が動かない] oga
行 89: 行 89:
 ところが Mobile の世界では簡単には行きません。まず Desktop よりも GPU core の種類が多くなっています。代表的なものでも ところが Mobile の世界では簡単には行きません。まず Desktop よりも GPU core の種類が多くなっています。代表的なものでも
  
-  * Qualcomm Adreno 200 シリーズ +  * GLES 2.0 
-  * Imagination PowerVR SGX シリーズ +    * Qualcomm Adreno 200 シリーズ 
-  * NVIDIA Tegra (ULP GeForce) シリーズ +    * Imagination PowerVR SGX シリーズ 
-  * ARM Mali 200/400 シリーズ +    * NVIDIA Tegra2/3/(ULP GeForce) シリーズ 
-  * Vivante GC シリーズ+    * ARM Mali-200/400 シリーズ 
 +    * Vivante GC シリーズ 
 +  * GLES 3.0 
 +    * Qualcomm Adreno 300 シリーズ 
 +    * Imagination PowerVR G6000 シリーズ 
 +    * ARM Mali-T600 シリーズ 
  
 など など
  
-同じ GPU core であったとしても SoC が違えば本当同一機かどうかもわかりません。 +同じ GPU core であったとしても SoC が違えば異なる構成なっている可性がありま。 
-特に PowerVR や Mali は様々なメーカーに採用されており、組み合わせの種類も膨大です。+PowerVR や Mali、Vivante は様々なメーカーに採用されており、組み合わせの種類も膨大です。
  
 スマートフォンやタブレットなど、SoC を採用するメーカーもまたばらばらです。 スマートフォンやタブレットなど、SoC を採用するメーカーもまたばらばらです。
行 138: 行 144:
 ==== GPU Emulator を活用する ==== ==== GPU Emulator を活用する ====
  
-各 GPU メーカーは PC 上で動作する GPU Emulator (OpenGL ES 2.0 Emulator) をツールとして提供しています。+各 GPU メーカーは PC 上で動作する GPU Emulator (OpenGL ES 2.0 / 3.0 Emulator) をツールとして提供しています。
 できるだけ多くの GPU の GLSL をパスするためにはこれを活用しない手はありません。 できるだけ多くの GPU の GLSL をパスするためにはこれを活用しない手はありません。
 実端末の入手は難しいですが、 実端末の入手は難しいですが、
 これなら PC 上である程度の互換性テストができるようになります。 これなら PC 上である程度の互換性テストができるようになります。
  
-  * [[opengl:glesemulator|OpenGL ES 2.0 Emulator 一覧]] 
  
 +  * [[opengl:glesemulator|OpenGL ES 2.0/3.0 Emulator 一覧]]
  
-ただし問題もあります。 
-HOST PC の GPU の種類や OpenGL のドライバにかなり依存します。 
-NVIDIA / AMD でそれぞれ正しく動かない場合があるので注意が必要です。 
  
 +ただし問題もあります。
 +これらの Emulator は HOST PC の GPU の種類や OpenGL のドライバにかなり依存します。
 +NVIDIA / AMD / Intel でそれぞれ正しく動かない場合があるので注意が必要です。
  
 +また Mobile と同じシェーダーを走らせられるよう、PC (Windows/Mac OSX/Linux 等) 上にも実行環境を作っておく必要があります。
  
 ====== GLSL ES の問題情報共有用 ====== ====== GLSL ES の問題情報共有用 ======
行 166: 行 173:
  
  
- +(追記) Android 4.4 では修正されており、正しく動作するようになりました。 
 +ただし世の中には Android 4.3 のまま更新されていないデバイスも多いので、 
 +なんらかの対策は必要です。
  
 ===== OpenGL ES 2.0 GLSL 構文 ===== ===== OpenGL ES 2.0 GLSL 構文 =====
行 257: 行 265:
 </code> </code>
  
-==== GLSL ES 1.1 を返す ====+==== Tegra Emulator が GLSL ES 1.1 を返す ====
  
 PC の Tegra Emulator が GLSL の version 1.1 を返します。 PC の Tegra Emulator が GLSL の version 1.1 を返します。
行 577: 行 585:
 ==== Android PowerVR SGX GLSL ES 2.0 関数パラメータ inout が無効になる (2014/03/16 追加) ==== ==== Android PowerVR SGX GLSL ES 2.0 関数パラメータ inout が無効になる (2014/03/16 追加) ====
  
-  * PowerVR SGX 540 + Android 4.1 + OpenGL ES 2.0+  * PowerVR SGX540 + Android 4.1 + OpenGL ES 2.0 で再現 
 +  * PowerVR SGX543MP3 + iOS7.1 + OpenGL ES 2.0 では問題ない
  
  
 Android PowerVR SGX GLSL で、inout を使って関数から値を返すことができない。 Android PowerVR SGX GLSL で、inout を使って関数から値を返すことができない。
 +2つ以上 inout 宣言を行った場合に発生。
  
 <code glsl> <code glsl>
行 610: 行 620:
  
 PowerVR 以外の Adreno, Vivante, GeForce (desktop) などでは問題なく動作しています。 PowerVR 以外の Adreno, Vivante, GeForce (desktop) などでは問題なく動作しています。
 +また iOS の PowerVR では他の GPU と同じように正しく動いています。
  
 対策方法としては、hlsl でよく用いられるように構造体を使う方法があります。 対策方法としては、hlsl でよく用いられるように構造体を使う方法があります。
行 801: 行 812:
 Android OS 2.2 の Tegra2 では動作することが判明しました。 Android OS 2.2 の Tegra2 では動作することが判明しました。
 ハードウエアではなく、ドライバなど他に原因が有りそうです。 ハードウエアではなく、ドライバなど他に原因が有りそうです。
 +
 +
 +==== Tegra3 で OffScreen へのレンダリング時に Blend が有効にならない (2015/09/17) ====
 +
 +Android 4.0 の古いドライバで発生します。
 +OS 更新で新しいドライバが適用されると直ります。
 +
 +
 +==== Vivante GC4000 (K3V2) で動的に生成した Mipmap が有効にならない (2015/09/17) ====
 +
 +詳細は未確認です。使い方に問題がある可能性があります。
 +
 +
 +
 +
 +
 +
 +
 +
  
opengl/glsl.1395051541.txt.gz · 最終更新: 2014/03/17 19:19 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki