Render.ru

Вопрос по slim template

#1
Если кто знает, подскажите как создать template shadingmodel таким образом, чтобы при конвертации в шейдер нужный мне output параметр напрямую отображался в список аттрибутов этого шейдера. То есть как в следующем примере с MyColor:

surface MyShader(....; output color MyColor;....; )
{
/* begin referenced functions ----------------------*/
....
/* end referenced functions ----------------------*/
}

Дело в том, что обычно вызов идет через referenced function и tmp переменную и получается:

surface MyShader(.... )
{
/* begin referenced functions ----------------------*/
void pxslMyShader(....; output color MyColor;....;) {....}
/* end referenced functions ----------------------*/
....
color tmp0;
pxslMyShader(....; tmp0;....;)
.....
}
 
#2
Покажи тэмплйт а то так толком ничего непонятно.
Хотя можеш попробывать добавить
в описание своего параматра:
provider variable
 
#3
Я уже пробовал добавлять provider variable, однако это не работает с shadingmodel (с lights похоже работает, я так понял для разных типов темплейтов разные парсеры).
Темплейт показать не могу тк иначе не было бы вопросов :). А смысл такой: надо добавить выходной параметр к шейдеру чтобы после компиляции получилось приблизительно так:

surface
ShGlow(color Glow = color (1, 1, 1); output varying color GlowOut = color (1, 1, 1);)
{
Ci = Cs*Os ;
Oi = Os ;
GlowOut = Glow ; /* тут весь смысл*/
}

Смысл этого шейдера - вывести дополнительный параметр глоу в отдельный файл. Тогда можно будет постпроцессом делать глоу-обьекты (как в мае). Или, например, делать хитрый мэйт за один проход рендеринга. Темплейт нужен чтобы, использовать все преимущества mtor-a.

Кстати неплохо бы иметь софт позволяющий накладывать, например, AE-шные фильтры из командной строки ;), может кто знает такой?
 
#4
Возможно я сейчас скажу какуюнибудь глупость но....
Поскольку речь идет о законченом surface шейдере то
попробуй использовать метод Dinamic RSL chuncs
(output " бла бла бла ") . Собственно в доке так и написано что случай когда надо применять этод метод - RSL shaders
Смотри пример с blacklight
 
#5
Я идиот! (немного здоровой самокритики не помешает :)). Спасибо за то, что ткнул носом в доку.
Я по началу все сделал правильно, за исключением того, что по невнимательности описал динамический темплейт как статический: вместо "template surface ...." написал "template shadingmodel ....". Соответственно ни чего и не компилялось. А как прочитал: "..RSL shaders.." все сразу сообразил. Мои благодарности :)
 
Сверху