В моем шейдере WEBGL я использую цикл неизвестной длины (при компиляции).
do {
sample = texture(uTex, posXY).a;
accumulated += aSample * uAMultiplier;
} while (accumulated < 0.8);
Это работает, как и ожидалось, в браузерах OpenGL, но по умолчанию windows chrome / ff использует угол, который развертывает циклы, что в данном случае невозможно, что приводит к ошибкам компиляции.
Ошибка: ошибка компиляции генерирует
Ошибка: не удается связать программу
Информационный журнал:
C: \ fakepath (110,28-106): ошибка X4014: невозможно выполнить операции градиента внутри циклов с управлением расходящимся расходом
C: \ fakepath (59,12-96): предупреждение X3570: инструкция градиента, используемая в цикле с изменяющейся итерацией, заставляющая цикл развернуться
C: \ fakepath (118,1-82): ошибка X3511: невозможно развернуть цикл, цикл не завершается своевременно (1024 итерации)
Есть ли решение для предотвращения развертывания или иного обхода при необходимости зацикливания?