правильное смешивание между несколькими томами в opengl

#opengl #fragment-shader #raycasting #alphablending #blending

#opengl #фрагмент-шейдер #raycasting #алфавитный перевод #смешивание

Вопрос:

Я рисую несколько 3D-фигур в объемах куба с помощью raycasting во фрагментном шейдере, как описано здесь: https://github.com/bagobor/opengl33_dev_cookbook_2013/blob/master/Chapter7/GPURaycasting/shaders/raycaster.frag

     float prev_alpha = sample - (sample * vFragColor.a);
    vFragColor.rgb = prev_alpha * vec3(sample)   vFragColor.rgb; 
    vFragColor.a  = prev_alpha;
  

Он проходит от начала до конца raycast и накапливает альфа-версию на каждом шаге.
Для альфа-смешивания я использую следующие настройки:

 glAlphaFunc(GL_GREATER, 0.01);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  

У меня проблема со смешиванием, когда я рисую несколько томов. Полностью прозрачные части кубов отображаются перед непрозрачными частями других. Как я могу это исправить, отказаться от прозрачных частей кубов?
(Перестановка массива томов в положение xyz не работает, потому что я могу повернуть камеру)

введите описание изображения здесь

Комментарии:

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

2. Если ваш ответ решен, пожалуйста, опубликуйте ответ или удалите его полностью.

3. Даже при отключенном тестировании глубины результаты все равно будут зависеть от порядка прорисовки.

4. @derhass правильно. знаете ли вы лучшее решение без изменения порядка рисования?