ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2014年12月13日

[iOS] precision 精度

iOS8 が原因か iPhone6が原因かは定かではないが、
OpenGLES シェーダでの floatの精度関係に違いが出てる。
具体的に

precision mediump float;

を指定しているシェーダで、iPhone6( or iOS8 )では簡単にオーバーフロー(アンダーフロー)を起こすらしい。
理由はよくわからないが、

precision highp float;

としてやると治るので精度の問題であることは確かっぽい。

ところが highp指定すると、古めのiPadとかで相当処理速度が落ちる。
だからせめて部分的指定 float highp でなんとか回避しようとするのだが、うまくいかない。
宣言の部分だけ変えた シェーダを用意して切り分けるってのも手だけど、シェーダに結構チマチマ手を入れるので、ほとんど同じもの2本というのはメンテ上避けたい。

仕方なく Vertexシェーダのみ highp , Flagmentシェーダを midiump としたらまぁまぁの数値となったが
これでいいのかは情報が見つからずわからない。
posted by みこあいさ at 20:23| iOS開発