Я пытаюсь отобразить матрицу значений яркости на холсте в качестве изображения, когда значения яркости находятся между 0 и 4000. Я использую двумерную плавающую точку чтобы сделать это, потому что я слышал, что они предлагают диапазоны между [-inf, inf].Доступ к unclamped значениям из текстур с плавающей запятой в шейдере фрагмента WebGL
gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE, ct.columns, ct.rows, 0, gl.LUMINANCE, gl.FLOAT, new Float32Array(ct.grid[i]));
Однако, когда я иду и получить значение текстуры в моем пиксельном шейдере, они всегда зажаты между [0, 1,0]. В частности,
vec4 texcolour = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
texcolour.rgb всегда будет находиться в пределах от 0 до 1.0. Как я могу получить доступ к unclamped значениям внутри моего шейдера фрагментов, чтобы я мог нормально нормализовать себя?
Спасибо
Я испытывал его, видя, что весь мой образом был белым (потому что я делаю свою собственную фильтрацию на основе оконных и уровень значений), но после запуска кода я получаю чистый красный блок. – Marc
О, и я забыл добавить, что когда я нормализую свою матрицу значений между 0 и 1 перед созданием своих текстур, я отлично вижу изображение, поэтому я пришел к выводу, что это проблема с фиксацией, а не какая-то не связанная с проблемой webGL проблема. – Marc
Вот рабочий пример http://jsfiddle.net/greggman/LMbhk/ Я помещаю значения от 0 до 256000, а затем делясь на 256000 в шейдере и получая то, что ожидаю. Может быть, вы можете изменить его, чтобы он провалился? – gman