Есть метод "Marching cubes", который, как я понял, сначала создает из воксельной модели полигональную модель - изоповерхность, а потом получившаяся модель рендерится обычным способом. Я не разобрался в принципе, на котором построен алгоритм ( на русском на нашел статей). Так-же википедия поделилась другим методом - бросания снежков, в котором принцип, я как понимаю в следующем:
надо решить уравнение прямой [воксел - поверхность просмотра -точка камеры], определить точку пересечения с поверхностью просмотра, а потом этот "пиксель" закрашивается цветом ближайшего воксела, который на нее был спроецирован. Сложность тут заключается, как я понял. в том, что надо отсортировать вокселы в порядке удаленности от этой поверхности, а потом просто выбрать ближайшие на каждый пиксель.
Скачал
этот проект и пытался разбираться в коде, который на видеокарте выполняется, но без понимания принципа алгоритма, трудновато дается. Хотя тут видно, что в риалтайме обрабатывается сетка размером 20кХ10кХ20к, хоть и с плохим разрешением.
В общем нужны материалы на русском, или если кому не сложно, прям здесь написать базовые принципы этого алгоритма.