- о, вспомнил! О пункте меню File=> Import.
Найдите на диске один из шейдеров, с которыми мы экспериментировали раньше, например, textured_noise.sl:
surface textured_noise ( float freq=100; )
I
Ci = texture(“texture.tx”, s, t)*noise(freq*s,freq*t);
}
Вызываем из главного меню ShaderMan File=>lmport=>Shader source as new brick…, выбираем только что найденный нами файл и через несколько секунд (в течение которых запускается и выполняется конвертер из шейдера SL в формат брика BR) на рабочем столе ShaderMan появляется новый брик - texturedjnoise. Присоединяем его к Surface Color кирпичика Oren-Nayar и немедленно получаем:
Таким образом мы можем загрузить в виде нового брика практически любой готовый шейдер, написанный на языке Renderman SL, и в дальнейшем использовать его как часть своих собственных шейдеров. Но это еще не все. В том же меню ShaderMan File=>lmport выбираем другой подпункт - RIB file as template. Находим нашего первенца, testl .rib - это тот самый, неосвещенный, с единственным одиноким полигоном перпендикулярно камере:
Display “RenderMan” “framebuffer” “rgb”
Format 256 192 -1 ShadingRate 1 WorldBegin Surface “plastic”
Polygon “P” [0.5 0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5]
WorldEnd
Пока не случилось непоправимое, быстренько открываем этот файл в тектовом редакторе, вспоминаем, чему мы учились всю эту главу, и добавляем источники света (для ленивых или тех, кто читает книжку, только сидя в метро - файл test_shaderman.rib):
Display “RenderMan” “framebuffer” “rgb”
Format 256 192 -1 ShadingRate 1 WorldBegin
LightSource “ambientlight” 500
“lightcolor” [0.051 0.051 0.051]
LightSource “distantlight” 501 “from” [1 1.5 -1] “to” [0 0 0]
LightSource “distantlight” 502 “lightcolor” [0.2 0.2 0.2]
“from” [-1.3 -1.2 -1.0] “to” [0 0 0]
AttributeBegin
Attribute “identifier” “name” [“polyShape”]
Surface “plastic”
Polygon “P” [0.5 0.5 0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5]
AttributeEnd
WorldEnd
Кроме источников света мы также добавили аттрибут “identifier”, который позволяет нам дать имя объекту - такие аттрибуты добавляют, в том числе, все экспортеры из AAAYA в RIB. И только теперь импортируем в ShaderMan.
Для продвинутых. Те же самые операции по импорту файлов можно проделать, просто перетянув их мышкой из Windows Explorer.
Вроде бы ничего не поменялось и не произошло, кроме разве что сообщения в консольном окне (и строке статуса) ShaderMan - \rib_example\test_shaderman.rib : done. Для того, чтобы понять всю важность произошедшего, включите обратно область preview и попробуйте выбрать в выпадающем списке объект:
Мы только что загрузили внешний RIB файл в качестве сцены для использования в ShaderMan
- и программа предоставила нам возможность выбрать объект, на котором мы будем тестировать наш шейдер (не случайно мы дали нашему объекту имя).
Попробуем проиллюстрировать все эти возможности, модицифировав диаграмму передачи данных и файлов в рамках RAT. Стоит обратить внимание на то, что некоторые стрелочки в схеме
- двунаправленные; это означает, например, что ShaderMan может как экспортировать, так и импортировать файлы SL.