メモ代わり

Feed Rss

lowp mediump highp の使い分け。

08.22.2011, know how, by .

まず lowp mediump highp は小数点の精度を表します。どれも同じように使えます。 C 言語での char short long に似ています。

ただし、これらの宣言は GLSL コンパイラや GPU に依存します。 GLSL 内でのみ有効であり、アプリケーションから意識する必要はありません。
以下は PowerVR 系についてになりますが、一つの目安として良いでしょう。

lowp

  • 10bit 固定少数
  • 8bit 精度
  • 大きな値はほぼ使えません。たぶん -2.0 ~ +2.0 まで。
  • 8BPP 以下の色の表現

mediump

  • 16bit 浮動少数
  • 10bit 精度
  • 大きな値は精度が落ちます。目安として -10.0 ~ +10.0 ぐらい、 -1.0 ~ +1.0 内でも精度が重要なもの。
  • 頂点法線
  • テクスチャ座標
  • 回転行列
  • クォータニオン

highp

  • 32bit 浮動少数
  • 大きな値も十分使えます。
  • 頂点座標
  • アフィン変換行列
  • IEEE754 と同じ。よって float と概ね同じ。

まとめ

概ね mediump を使い、確実に精度が不要なものは lowp 、ワールド座標などを扱うものは highp と大雑把に分ければ良いと考えられます。

値が丸め込まれても例外などにはならなく、プログラムは動作します。フレームレートは十分なのに、カクカクした動きの場合は精度不足が明らかになります。