Изменение значения альфа-канала на лету для 3D-текстуры RGBA - PullRequest
1 голос
/ 11 декабря 2008

Я использую 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/

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

1 Ответ

3 голосов
/ 12 декабря 2008

Звучит как идеальная работа для шейдера ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...