Android ゲーム用に GLSL でシェーダーを作成しました。このシェーダーでは、現在のピクセルと FX の中心の間の長さを計算する必要があります。
このシェーダには次の行が含まれています。
//compute distance between current pixel and the center of the fx
highp vec2 tc = MCPosition - center;
int dist = int(length(tc));
if (length(tc) < 720.)
{
...
MCPosition は、現在のピクセルの座標を含む highp vec2 です。center は、FX の中心を含む highp vec2 です。
このシェーダーは多くのデバイス (Galaxy Nexus、kindle fire など) でうまく機能しますが、samsung galaxy S3 では、すべての float 値を mediump として管理する場合のように、期待される結果が 256 を超える場合、length(tc) は正しくない値を返します。
誰かが私に理由を説明できますか?