Буферы рендеринга WebGL, получающие искаженные значения пикселей из шейдера - PullRequest
3 голосов
/ 24 января 2012

Я рендеринг сцены полигонов для нескольких целей рендеринга, чтобы я мог выполнять эффекты постобработки.Однако значения, которые я устанавливаю в фрагментном шейдере, похоже, не отражаются точно в пиксельном шейдере.

Сейчас конвейер выглядит следующим образом:

  • 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) - вдвое меньше альфы, чем ожидалось.

Программа довольно большая и запутанная, поэтому я уточню пост с конкретными деталями, если ответ не сразу очевиден.

Спасибо!

1 Ответ

1 голос
/ 27 января 2012

У вас есть PremultiplyAlpha, установленный в true?Возиться с этим - первое, что пришло в голову: странные альфа-значения.

...