Я рендеринг сцены полигонов для нескольких целей рендеринга, чтобы я мог выполнять эффекты постобработки.Однако значения, которые я устанавливаю в фрагментном шейдере, похоже, не отражаются точно в пиксельном шейдере.
Сейчас конвейер выглядит следующим образом:
- Render basicполигоны (с помощью простого шейдера, ниже) в промежуточный буфер
- Визуализация буфера в виде квадрата размером с экран на экран.
Я использую 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) - вдвое меньше альфы, чем ожидалось.
Программа довольно большая и запутанная, поэтому я уточню пост с конкретными деталями, если ответ не сразу очевиден.
Спасибо!