Я пишу некоторый код WebGL и должен визуализировать текстуру с плавающей точкой.
С расширениями gl.getExtension('OES_texture_float');
и gl.getExtension('OES_texture_float_linear');
Теперь я могу создать и нарисовать эту текстуру и использовать линейный фильтр.
Но это просто не кажется правильно рассчитанным.Отображение WebGL для текстуры с плавающей точкой
В основном значения должны получить суммироваться поэтому я использую
gl.blendEquation(gl.FUNC_ADD);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
gl.enable(gl.BLEND);
gl.disable(gl.DEPTH_TEST);
при визуализации в текстуру. Также может произойти добавление отрицательных значений.
Теперь после нескольких часов прибегая к помощи я наткнулся на это: WEBGL_color_buffer_float extension
До сих пор я использовал команду
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, rttFramebuffer.width, rttFramebuffer.height, 0, gl.RGBA, gl.FLOAT, null);
, но я думаю, что нужно использовать вместо RGBA32F
. Возможно ли это, и если да, то как я могу использовать формат расширения?
РЕШЕНИЕ: Как было предложено, ошибок в используемом формате не было. Я назначил некоторые неправильные значения шейдерной форме и использовал очень неблагоприятный цвет фона, который приводит к неправильной визуализации.
О да, я просто скопировал неправильное расширение из своего кода. Спасибо за точку на RGBA32F. У вас есть идеи, почему он не будет правильно рисовать текстуру? Похоже, что смешение не работает при записи float в текстуру. – phen