0

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) は正しくない値を返します。

誰かが私に理由を説明できますか?

4

1 に答える 1