Какой шейдер? Рэймаршевый - нет
Это всего лиш демо принципов рэймарша написаный специально для сферы.
Кажеться в последних курсах есть оптимизированая версия тех же
принципов но уже написаная специально для куба.
Заколбасить же реймарш на объекте произвольной формы
в прмене весьма проблематично. Основная проблем: зная точку входа в объект
найти точку выхода дабы определить расстояние для марша. Для сферы, куба,
конуса это решаеться математически. А вот с произвольными формами - грабли.
В энтропии в принципе можно поскольку она рэйтрейсер и у нее есть такая
волшебная функция (rayhitчототам кажеться) но остаеться проблема уменьшения
плотности при приближении к границе.
Являеться ли smokefire родичем гарднеру? Да являеться...принцип тот же, нойс другой.
Можно ли его нацепить на произвольную форму - можно.
На дальних дистанциях прокатит. При приближении будет выглядеть отстойно.
Лучше уж заполнить произвольную форму сферами (штук эдак 500)
и гарднером их, гарднером.
Токмо прибрать немного у гарднера общей прозрачности, исключить все лишние
источники сфета (нехилая прибавка в скорости) оставив только 1 для освещения
и несколько отрицательных внутри этого хозяйства для типа селфшедова.
Примерно так кажеться и делалась туманность в контакте.
Ну а по поводу способа...как это было раньше
(и как примерно это реализовано в мая4.5, гудини 5):
Объект произвольной формы представлялся в воксельном виде например если
bounding box объекта х=50 у=100 z= 220 то
из орто камеры по оси Z рендериться 220 картинок срезов объекта
(результат буля объекта с плоскостью XY) с разрешением 50х100 пикселей.
Затем эти 220 картинок блуряться (уменьшение плотности у границ объекта),
по желанию добавляеться нойс, дисторт и прочее.
Затем из этих 220 картинок
составляеться одна (стык встык либо n столбцов на m колонок).
Таким образом получаем текстуру которая (если знать как к ней обращаться)
несет в себе информацию о форме 3d объекта.
Черное - пусто, белое - внутри объекта, градация - близко к краю.
Эта текстура подсовываеться спецательному волум шейдеру который
проверяет "А пересекает ли текущий I некий воображаемый куб с координатами
того самого bounding box нашего объекта"
Если нет то баба з возу - кобыле легше. Если да то начинаеться марш на каждом
шаге которого координата точки пространства переводиться в воксельную
координату системы (относительно bounding box),
затем эта координата переводиться в координату текстыры из которой
береться плотность волума в данной точки пространства.
А там еще и интерполяция меж соседними...
Страшно? Такотож.
В новой майке и гудини - нажал на кнопку и усе.