Я хочу составить обычные модели на основе треугольников и частицы с трассировкой лучей с разумной частотой кадров.
WebGL не позволяет вам писать gl_FragDepth
во фрагментном шейдере. У вас не может быть нескольких целей рендеринга, но вы можете рендерить в текстуру RGBA, а затем использовать эту текстуру в качестве входных данных для другой операции рисования. Таким образом, я могу визуализировать свою трассируемую лучом сцену и сохранить глубину в качестве входных данных для следующего этапа. Это явно далеко от идеала, но выполнимо.
Я хотел бы ошибаться в этом, и это собрано из проб и ошибок, а не из какого-либо определенного источника; пожалуйста, исправьте любые ошибочные предположения
Как вы можете эффективно упаковать / распаковать float и, в идеале, некоторые биты флага и тому подобное, в RGBA-текстуру в фрагментном шейдере GLSL?
Ответы:
Здесь представлены функции упаковки и распаковки, которые будут работать в WebGL и OpenGL ES 2.0, это только для значений в диапазоне 0 ... 1, поэтому вам следует позаботиться о том, чтобы расчет глубины находился в правильном пространстве.
Кодирование плавает в RGBA
источник