Render.ru

Multipass rendering

#1
Честно говоря, после предыдущего поста от kidd-a, даже не знаю, уместно-ли снова спрашивать про alfred ;-)
Но просто очень хотелось выяснить, кто как обустраивает subj в RAT-e.
Проект -- 3D фона в cartoon-like стиле.
Пока я использую такую схему для одной и той-же сцены:
1. Рендерю сцену с cartoon shader (color pass)
2. Для обработки контуров в Custom Renderer прописываю toon.bat файл, вызывающий prepare.pl perl-script (thanks to kidd!!!), заменяющий все поверхности на nizid: -->(prepare.pl %1|prman -progress)
В Rendering Service -->pixarRender (иначе запускается одновременно для всех кадров несколько prman-ов !!!)
В Custom Imager: -->(toonline.bat "50%%" ) батник, в котором вызывается perl-script, обрабатываюший и уменьшающий картинку на 50%. (ink pass)
3. Для просчета теней опять в Custom Renderer -- shadow.bat
-->(shadow.pl %1|prman -progress), shadow.pl заменяет все поверхности на ratBackplaneS (shadow pass).

Несколько наворочано получается :-(
Возможно по неведению....
Может, кто поделится более оптимальными решениями?
 
#2
Незнаю насчет оптимальности и скорости но поскольку
сведение всеравно осуществляется в композере то почему бы
просто не написать шейдер который просчитывал бы необходимую
инфу в дополнительные файлы (ID, Normal, а ля ratBackplaneS и
все что еще может пригодиться) одновременно с основным (Toon)
и поручить всю работу композеру (в том числе и соболиную)
Имеем всего 1 проход и свободу эксперементов с композеровским
соболем.
P.S
А вот скейлить до 50% помоему лучше уже сведенную картинку
 
#3
В общем случае Андрей, конечно, прав: удобнее сразу из одного риба через шейдер сразу считать в несколько файлов. Другой момент, что я, например, не знаю, как RAT'у дать понять, что надо считать в несколько файлов - RIB боксом?

А композеровский собель имхо не лучший вариант, поскольку универсальный. Я бы предпочел что-либо более скоростное и заточенное - например, собственные программы ;-))
 
#4
Я так понимаю, Андрей имеет в виду Display->Secondary и имя файла на User Defined variable в Mode. Так?
Но смущает излишняя продвинутость всех шейдеров в сцене, чтобы они все отрабатывали свой результат в отдельных переменных.
К тому же я, честно говоря, не знаю, как реализовать аналог ratBackplaneS, чтобы иметь информацию о тени :-(
 
#5
Именно это я имел ввиду.
Но какая там продвинутость...все очень просто и быстро.
Простейший пример:
http://www.render.ru/forum/read.php?f=13&i=815&t=799
Я немного невкурсе....что делает ratBackplaneS ?
Я как то давно делал что то типа ShadowMate (считает только тени)
но он работал только со спецательным источником света (делается из любого методом вставки 2 строк) так как инфа о тени передавалась в сурфшейдер
через mesage passing.
 
#6
В догонку....про mesage passing....

light
shadowspot(
....Параметры
....
....
....
....
output varying float __InShadow = 0; /*Первая строка*/
)

{
.....
.....
.....
.....
__InShadow = shadow(shadowname, Ps, "samples", samples,"swidth",width, "twidth", width); /*Вторая строка*/
}



surface
ShdCatch()
{
varying float Shadow;
Shadow = 0;
color Shd = 1;
illuminance( P ) {
lightsource("__InShadow", Shadow);
Shd *= 1-Shadow;
}
Ci = Shd;
}
 
#7
ratBackplaneS, насколько мне известно, собирает тени от всех источников.
Т.е. получается белая поверхность с черными тенями. Если все поверхности в сцене после рибогенерации заменить на subj. -- получим только картину с тенями.
Хотя версия ShadowMate с передачей параметров от спец. источников, действительно выглядит заманчиво...
 
#8
....и делает то же самое (чисто белая картинка и черные тени)
Я ее использовал в композе в режиме multipli
Хотя в шейдер можно вставить строчку и для альфаканала:
Oi = 1-Shd;
Кстати __InShadow кажется уже есть во всех слимовских light темплах.
 
#9
А ем сори.
Облажался...
С альфой будет бред так как ее устанавливает последний
источник учавствующий в illuminance цикле.
К тому же совсем забыл что источники могут быть цветными и
в сцене могут быть другие лампочки которые
имеют свойство убивать (высветлять) тени.
Помоему так будет правильнее:
surface
ShdCatch()
{
varying float Shadow;
Shadow = 1;
color Shd = 0;
float Mask = 1;
normal Nn = faceforward(normalize(N),I);
illuminance(P,Nn,PI/2) {
lightsource("__InShadow", Shadow);
Mask *= 1-Shadow;
extern color Cl;
Shd += Cl;
}
Ci = max(color Mask, Shd);
}

Делает белый фон с серо-черно-цветными тенями
(в зависимости от условий освещения)
 
#10
Вроде все стало ясно. Спасибо.
Однако на практике столкнулся с траблом -- как вставить из mtor-a
в RIB "Declare "myShadow" "varying color" ",
чтоб он оказался до объявления Display?
"frame" и "world" в названии RIBboxa не дотягиваются до самого начала ;-)
Навешивать скрипт на препроцесс -- не хотелось бы...
 
#12
Я так мыслю, что решение вполне нормальное. Разве что можно было бы по идее не делать два вызова двух батников, а сделать оба вызова в одном батнике, типа

prepare.pl %1|prman -progress
shadow.pl %1|prman -progress

чтобы оно сразу считало и инки, и тени.

Кстати, встречный вопрос. Ink-pass считается на перле? Каким образом? Вызывается ImageMagick? imconvert? С какими параметрами?

Ну и классический вопрос - можно посмотреть на результаты? ;-)
 
#13
kidd wrote:
>
> Я так мыслю, что решение вполне нормальное. Разве что можно
> было бы по идее не делать два вызова двух батников, а сделать
> оба вызова в одном батнике, типа
>
> prepare.pl %1|prman -progress
> shadow.pl %1|prman -progress
>
> чтобы оно сразу считало и инки, и тени.
Да, а как быть с именами просчитанных файлов в таком случае?
И кстати, prepare.pl %1|netrender %H
почему то рендерит только на localhost :-(

> Кстати, встречный вопрос. Ink-pass считается на перле? Каким
> образом? Вызывается ImageMagick? imconvert? С какими
> параметрами?
Из перла вызывается пока (пока не дошли руки отладить свою версию;-)
твой convert.exe, а за ним "imconvert.exe -geometry 50% ,$_,$_"

> Ну и классический вопрос - можно посмотреть на результаты? ;-)
Пока это на 90% готовые планы и не в финальном качестве,
но я думаю можно...
http://www.properstudio.com/3D/ChildRoomInkShadow.0010.jpg
http://www.properstudio.com/3D/ChildRoomAll.0010.jpg
http://www.properstudio.com/3D/ChildRoom-(00011).jpg
http://www.properstudio.com/3D/ChildRoom-(00018).jpg
 
Сверху