次のフラグメントシェーダーがあります。
precision highp float;
varying highp vec2 vTexCoord;
uniform sampler2D uColorTexture;
void main () {
highp vec4 tmp;
tmp = ((texture2D (uColorTexture, vTexCoord) + texture2D (uColorTexture, vTexCoord)) / 2.0);
gl_FragColor = tmp;
}
このシェーダがあまり意味をなさないことはわかっていますが、それでも正しく動作するはずであり、問題を再現しようとしています。Xcode OpenGL-ES アナライザーでこのシェーダーを分析すると、エラーが表示されます。
暗黙的な変換でのオーバーフロー。lowp float の最小範囲は (-2,2)
このエラーが表示されるだけでなく、レンダリング出力が壊れてオーバーフローします。したがって、実際にオーバーフローするのは、アナライザーからの単なる誤検知ではありません。
どこでもhighpを選択したのに、disがオーバーフローを生成する理由を誰かに説明できますか?