Какое значение x будет иметь значение true для (x> 0. && x <= 0.) в webgl / glsl? - PullRequest
0 голосов
/ 27 апреля 2019

У меня острая проблема, которую я пытаюсь решить в фрагментном шейдере webgl GLSL.Для контекста я реализую симуляцию flocking с использованием техники ping-pong .На ПК и Mac все работает нормально, но на IOS глючит (в Safari / Chrome / Firefox).Нет ошибки, только неправильное поведение.

Я отследил его до места, где я использую vec4, который взят из текстуры, и это значение каким-то образом кажется поврежденным.Если я не использую выборочное значение, результаты на IOS аналогичны другим устройствам.

Я считаю, что выборочное значение имеет поврежденное или иное неожиданное значение из-за такого поведения:

vec4 sampled = texture2D( inputTexture, textureCoordinate);

// a condition that shouldn't fire
// except perhaps for a 'special value' -
// (e.g. something like nil, null, NaN, undefined)
if (sampled.x > 0.0 && sampled.x <= 0.0) {
    // do something that modifies behavior
    // THIS FIRES! WHY!
}

У кого-нибудь есть какие-нибудь подсказки, которые могут указать мне правильное направление?Есть ли хороший способ отладки значений в фрагментных шейдерах, которые могут помочь?

...