Изменение значения альфа-канала на лету для 3D-текстуры RGBA

Я использую 3D текстуры для объемного рендеринга необработанных данных. Необработанные данные могут быть Luminance-Alpha или RGBA.

В настоящее время я читаю необработанные данные и устанавливаю альфа-значение таким образом, чтобы самая дальняя строка (или срез) была непрозрачной (Альфа = 1), а ближайший срез был бы «прозрачным» (скажем, альфа = 0,1), а значения альфа интерполировались ,

Есть ли способ в OpenGL, я могу изменить эти альфа-значения динамически. то есть на основе таких событий, как ротация? Такой, что самый дальний срез всегда непрозрачен?

Я использую инструмент сцены (www.openrm.org) для объемного рендеринга на основе текстур.

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


Это говорит о «весе альфа-фрагмента», что я и собираюсь сделать (посмотрите на псевдокод в конце)

http://www.ifi.uzh.ch/staff/stern/SciVis_WS2004/chstern/v100105/VolumeRendering/kulick/

Теперь хитрость заключается в том, чтобы пересчитать для каждого среза альфа-вес при изменении ориентации.

11.12.2008 17:43:24
1 ОТВЕТ

Похоже, идеальная работа для шейдера ...

Однако, если вы используете выровненные по оси срезы и создаете их на ЦП, вы можете установить glColor4f с альфа-компонентом <= 1.0, а также установить для glTexEnv значение GL_MODULATE. Значение цвета будет затем умножено на значение цвета вашей текстуры.

3
11.12.2008 22:24:23