RenderMonkey был спроектирован с учетом расширяемости. Его основа - гибкая оболочка, которая позволяет встраивать поддержку шейдерных языков. Это среда, ориентированная на язык и позволяющая поддерживать практически любой высокоуровневый шейдерный язык, организованный в виде встраиваемых модулей. Сейчас он поддерживает разработку пиксельных и вершинных шейдеров из Microsoft DirectX 8.1 и 9.0, высокоуровневый язык шейдеров (HLSL), определенный в DirectX 9.0, и язык шейдеров OpenGL.

Инкапсуляция всех необходимых для создания эффекта данных называется рабочей средой эффекта (effect workspace). Эта среда состоит из узлов группировки эффектов, узлов для переменных и других узлов. Каждая группа эффектов состоит из нескольких узлов эффектов, а каждый узел эффекта может состоять из одного или нескольких проходов рендеринга. Каждый проход рендеринга может включать в себя состояние рендеринга, исходный код для вершинного и фрагментного шейдеров, геометрические фигуры и текстуры. Все данные для создания эффектов организованы в виде дерева, видимого в окне рабочей среды.

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

Узлы группировки эффектов объединяют всю информацию, необходимую для реализации визуального эффекта, формирование которого может происходить в несколько проходов. Начальное состояние эффекта унаследовано от эффекта по умолчанию, с его помощью задается какое-то известное начальное состояние для всех эффектов. Эффект по умолчанию можно использовать для хранения каких-либо данных, общих для всех эффектов.

Узлы проходов определяют операции рисования. Каждый проход наследует данные из предыдущих проходов, создающих этот эффект, а первый проход - из эффекта по умолчанию. Обычно проход состоит из пары «вершинный шейдер - фрагментный шейдер», блока состояния рендеринга, текстур, геометрических фигур и узлов других типов (например, узлов переменных). В этих проходах могут быть использованы различные геометрические фигуры, например, чтобы выполнять рендеринг эффекта меха.

В узлах переменных определяются параметры, доступные из шейдера. В языке шейдеров OpenGL узлы переменных - это механизм объявления uniform-переменных. Им можно назначать имена и типы, а содержимым узла переменных можно управлять через специальные графические элементы управления.

RenderMonkey полностью состоит из подключаемых модулей. Исходный код некоторых модулей находится в свободном доступе, к тому же для конкретных задач можно писать собственные модули, которые будут выполнять импорт и экспорт данных, работая с правильными форматами. Далее приведен список модулей RenderMonkey.

□ Редакторы шейдеров - интуитивный интерфейс смоделирован на примере Microsoft Visual Studio; поддерживают редактирование вершинных и фрагментных шейдеров, подсветку синтаксиса, создание шейдеров на языках OpenGL, HLSL, ассемблера.


⇐ вернуться назад | | далее ⇒