Назначение шейдеров в качестве параметров других шейдеров в 3ds max
В 3ds max принята классификация шейдеров по назначению, вследствие которой работают дополнительные ограничения на подключение шейдеров. Реализовано это при помощи оператора apply в декларации шейдеров. Например, если шейдер при декларации имеет строчку "apply material", то он будет виден только в редакторе материалов и недоступен для назначения в качестве shadow шейдера (хотя mental ray это допускает). В mental ray такие ограничения не используются и директива apply просто игнорируется (действует только правило соответствия типов). Поэтому, если шейдер не виден в какой-либо категории, исправить положение просто - нужно отредактировать декларацию этого шейдера, добавив нужную категорию в apply.
Например, в декларации всех материальных шейдеров присутствует "apply material". Если дописать "apply material, shadow, photon", то материальные шейдеры станут доступны не только для слота surface, но и для shadow, и для photon - то есть с их помощью можно будет определять тени и фотонные свойства материалов.
Оператор apply является функцией mental ray и предназначен для описания возможной области применения шейдера, носит исключительно рекомендательный и информационный характер. В mental ray также регламентированы и ключи этого оператора (типы шейдеров по назначению):
lens: линзовый шейдер для камеры
material: материальный шейдер
light: шейдер источника света
shadow: теневой шейдер для материалов
environment: шейдер окружения для материалов или камер
volume: объемный шейдер для материалов или камер
texture: текстурный шейдер
photon: фотонный шейдер для материала
geometry: геометрический шейдер
displace: displacement шейдер для материала
lightmap: шейдер запекания освещения в текстуру для материала
emitter: шейдер фотонного эмиттера, управляющий испусканием фотонов от источников света
output: шейдер вывода для камер
state: шейдер состояния
В 3ds max использование оператора apply в декларации шейдера с указанием его ключей является обязательным требованием и вызывает сообщение об ошибке, если оператор или его ключи не указаны.
Хотя mental ray и разрешает подключение произвольных шейдеров, если они совместимы по типу, следует четко понимать смысл и последствия создаваемой цепочки.
Подключение шейдеров в mi файле рассмотрим на примере назначения шейдера mib_cie_d в качестве цвета для светового шейдера точечного источника mib_light_point.
1. Прежде чем шейдера могут быть использованы в сцене, они должны быть декларированы:
declare shader |
|
|
| color | "mib_light_point" ( |
| color | "color", |
| boolean | "shadow", |
| scalar | "factor", |
| boolean | "atten", |
| scalar | "start", |
| scalar | "stop" |
| ) |
|
| version 1 |
|
| apply light |
|
end declare |
|
|
declare shader |
|
|
| color | "mib_cie_d" ( |
| scalar | "temperature", |
| scalar | "intensity" |
| ) |
|
| version 1 | apply light |
end declare |
|
|
Мы хотим использовать mib_cie_d для определения параметра "color" у mib_light_point. Обратите внимание, что тип результата, возвращаемого mib_cie_d и тип параметра "color" у mib_light_point одинаковы - это цвет (color).
2. Шейдер, назначаемый в качестве параметра другого шейдера должен быть предварительно определен - значениям его параметров должны быть указаны определенные величины:
shader | "color_light" | "mib_cie_d" ( |
| "temperature" | 2700, |
| "intensity" | 1) |
Здесь мы определили шейдер типа mib_cie_d с именем "color_light" и присвоили его параметрам "temperature" и "intensity" значения.
3. Теперь шейдер может быть использован как параметр другого шейдера, для этого достаточно в поле значения соответствующего параметра указать имя определенного ранее шейдера без параметров:
shader | "my_light" | "mib_light_point" ( |
| "color" | ; = "color_light", |
| "shadow" | off, |
| "factor" | 0, |
| "atten" | off, |
| "start" | 0, |
| "stop" | 40) |
Аналогичную цепочку можно построить и средствами 3ds max, но потребуется отредактировать оператор apply в декларации mib_cie_d - дописать для apply light новый ключ material, вот так: apply light, material. После этого шейдер станет доступен для определения цвета точечного источника.
- Рендер простой сцены
- Часть 2. Options и ключи рендеринга командной строки
- Группа операторов сэмплирования
- Группа операторов рендеринга с использованием аппаратных возможностей видеокарты
- Группа операторов тесселяции
- Группа операторов Motion Blur
- Группа параметров Shadows
- Группа параметров Rendering Algorithms
- Группа операторов Feature Disabling
- Группа параметров Caustics
- Группа параметров Global Illumination
- Группа операторов Frame Buffer Control
- Группа параметров Scene Geometry
- Группа операторов Contours
- Группа операторов Diagnostic Modes
- Группа дополнительных операторов
- Ключи рендеринга командной строки ray.Exe
- Часть 3. Источники освещения
- Параметры шейдера ctrl_objectlights
- Только прямое освещение от протяженного источника-полусферы, имитирующего Sky light
- Часть 4. Геометрические объекты
- Тестовая сцена
- У стеклянного бокала visible off и в камеру он не виден. Но его тени и отражения в шейкере присутствуют
- В свойствах подложки установлено reflection 6 и refraction 6, поэтому ни шейкер, ни бокал ее не "видят"
- Для подложки refraction 12 и поэтому бокал ее не "видит", а reflection 3 и шейкер отражает подложку Обратная ситуация: для подложки refraction 3, reflection 12
- Fg Accuracy 280 сэмплов, радиусы 100 - 10 см
- У одного из объектов сцены finalgather 9, у остальных 3
- Противоположная ситуация: тумба не отражает вторичный свет, но сама его "видит"
- Расчет вторичного освещения методом fg, выполненный только для одного объекта сцены - шара. Fg accuracy: 1200 сэмплов на точку, минимальный радиус 1 см, максимальный - 10 см
- Часть 5. Камеры
- Часть 6. Материалы
- Конструкция стандартного материала
- Конструкция материала типа mental ray mental ray Connection стандартных материалов
- Шейдеры и параметры
- Назначение шейдеров в качестве параметров других шейдеров в 3ds max
- Назначение mib_cie_d в качестве параметра цвета светового шейдера точечного источника в 3ds max
- Phenomena в 3ds max виден как обычный шейдер заданного apply типа
- Is_mat_irradiance - шейдер расчета вторичного освещения индивидуально для материалов
- Интерфейс шейдера is_mat_irradiance
- Расчет освещения методом fg с глобальными настройками
- Расчет вторичного освещения с индивидуальными настройками fg для материала чайника и цилиндрической подставки (увеличено число сэмплов)
- Расчет вторичного освещения с индивидуальными настройками fg для материала чайника и цилиндрической подставки (увеличено число сэмплов) и материала конуса и земли (увеличены только радиусы)
- Рендеринг с Fast Sky