Я сделал шейдер на GLSL для игры на Android. В этом шейдере я должен вычислить длину между текущим пикселем и центром 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 — это highp vec2, который содержит центр FX
Этот шейдер хорошо работает на многих устройствах (Galaxy Nexus, kindle fire, ...), но на Samsung Galaxy S3 length(tc) возвращает неверное значение, когда ожидаемый результат превышает 256, например, если он управляет всеми значениями с плавающей запятой как mediump.
Может кто-нибудь объяснить мне, почему?