logo
Как использовать все возможности mental ray в р

Is_mat_irradiance - шейдер расчета вторичного освещения индивидуально для материалов

Как мы теперь уже знаем, расчет вторичного освещения методами final gathering, global photon map (GI) и caustic photon map, является неотъемлемой и обязательной частью любого стандартного материального шейдера. Настройки расчетов задаются в 3ds max в секции Indirect Illumination панели Rendering или блока Options в mi-файле сцены. Эти настройки являются "глобальными" в том смысле, что они имеют силу для всех объектов - расчет вторичного освещения всех объектов сцены будет выполнен с одними и теми же настройками качества расчетов. Однако, часто имеет место ситуация, когда одни части сцены требуют высокого качества, например там где освещение меняется быстро или есть важные мелкие детали геометрии, тогда как другие объекты сцены не требуют высокого качества (например, плоские ровные поверхности с медленно меняющимся освещением). Хотя алгоритм расчетов умеет правильно учитывать такие ситуации при помощи механизма адаптивности, все же хотелось бы иметь возможность индивидуальной по-объектной настройки качества расчетов. Это может быть весьма полезно для сокращения общего времени расчетов или для локального разрешения ошибок расчета освещения.

Начиная с версии mental ray 3.3, такая возможность предоставлена - введена новая функция расчета вторичного освещения, которая может быть настроена индивидуально для каждого материала. Индивидуальная настройка расчетов для материалов является еще более мощным инструментом, чем по-объектная настройка, поскольку позволяет управлять расчетом на уровне отдельных полигонов.

Но, с использованием этого нового метода связана определенная проблема. Поскольку старая функция расчета "зашита" в код материальных шейдеров, просто так заменить ее новым методом не удастся, потребуется перепрограммирование всех материальных шейдеров.

Предлагаемый вашему вниманию шейдер is_mat_irradiance является одним из возможных способов реализации новой возможности по-материального расчета вторичного освещения. Его основная идея вытекает из вышеописанной проблемы - не программируя заново все материальные шейдера отключить встроенный расчет вторичного освещения и заменить его новым. Такую возможность предоставляет манипулирование с данными state.

Принцип работы этого шейдера прост - is_mat_irradiance назначается в слот поверхности (Surface материала типа mental ray или mental ray Connection стандартных материалов 3ds max), вместо материального шейдера, а сам материальный шейдер назначается в качестве одного из параметров is_mat_irradiance. Таким образом, is_mat_irradiance действует как своеобразный переходник, выполняющий необходимые манипуляции, чтобы реализовать по-материальный расчет вторичного освещения. Необходимость в перепрограммировании шейдеров отпадает - можно как и раньше использовать любые стандартные материальные шейдера или материалы 3ds max (через дополнительный стандартный Material to Shader).

Настроечные параметры is_mat_irradiance: