Я визуализирую сцену полигонов для нескольких целей рендеринга, чтобы выполнять эффекты постобработки. Однако значения, которые я устанавливаю во фрагментном шейдере, похоже, не совсем точно отражаются в пиксельном шейдере.
Сейчас пайплайн выглядит так:
- Рендерим базовые полигоны (используя простой шейдер, как показано ниже) в промежуточный буфер
- Визуализируйте буфер как четырехугольник размером с экран на экране.
Я использую WebGL Inspector (http://benvanik.github.com/WebGL-Inspector/) для просмотра промежуточных буферов (созданных с использованием gl.createFrameBuffer()
).
У меня есть очень простой фрагментный шейдер при рисовании полигонов, что-то вроде этого:
gl_FragColor = vec4(1, 0, 0, 0.5);
И это до моего вызова отрисовки:
gl.disable(gl.BLEND);
Я ожидал, что это создаст пиксель в буфере со значением точно (255,0,0,128), но на самом деле он создает пиксель со значением (255,0,0,64) - вдвое меньше. альфа, как и ожидалось.
Программа довольно большая и запутанная, поэтому я обновлю пост с конкретными подробностями, если ответ не очевиден сразу.
Спасибо!