2017-11-16 6 views
0

を無視しましたそして、ピクセルシェーダGLSL精度修飾子たちは、IOSとほとんどのAndroidデバイス上で正常に動作シェーダをOpenGLES2.0しているが、AmazonのKindleの火災7の上に、私たちの様々な要素の一つがその頂点シェーダで定義された精度</p> <p>を失っているようだ

varying highp vec4 v_worldposition; 

として、我々はまた、各ファイルの先頭に

precision highp float; 

を持っています。

しかし、この一つのデバイス上で、精度が高い数値であり悪いと悪化。そこ0の周りの精度の多くは、ですが、位置精度を200以上するにつれて約0.1台に低下する - シェーダが16ビットの浮動小数点を使用しているようです。私の心の中では、まったくハイパーではありませんが、それができることは多分でしょうか?

それはそれはすべてのさまざまなコンポーネントのための16ビット浮動小数点を使用していますが、我々はワールド座標に基づいて、ピクセルシェーダでテクスチャされているとして、それが本当にひどく我々のケースで現れている可能性があります。

シェーダやその他のコードの32ビット浮動小数点を強制する方法がある場合は誰もが知っているか、またはアマゾン火7場合は、でも、それをサポートすることができます。それはマニフェストの設定かもしれませんか?これは、この問題を抱えている唯一のAndroid搭載端末です。

おかげ

ショーンサザン

答えて

1

はOpenGLES 2仕様は、フラグメントシェーダでのみサポートmediump精度にデバイスを可能にします。

おそらくAmazonのKindleの火災7のマリ-450MP4 GPUは、そのようなデバイスです。実行時にglGetShaderPrecisionFormatで照会することは可能です。

単純なマニフェストオプションがないため、このようなデバイスのサポートを削除する必要があります(シンプルマニフェストオプションがないため簡単に実行できない)か、または高精度に依存しないようにシェーダをリファクタリングする必要があります。この種のデバイスの詳細ディテールシェーダ。私は後者をする傾向がある。

+0

私はそれが完全に「mediump」精度が続いているかに依存しますね。シェーダを変更しましたが、提案する精度もチェックします。ありがとう。 – user3162134

関連する問題