Theory/ExtendingslHorizons

Расширяем горизонты Shading Language


Порой, работая в области Компьютерной Графики мы ищем пути, которые позволяют улучшить или упростить нашу работу. Начиная разрабатывать технологии или дополнительные инструменты мы иногда не всегда замечаем полезности. Интернет, открыв поистине большие возможности, дал свободу выбора и общения но в таком огромном потоке еще больше начинаешь путаться. Говорить на тему полезности можно много и долго но не будем на этом останавливаться.


В данном уроке я хотел бы обратить ваше внимание на программу GrafEq версии 2.10, она будет полезна для тех, кто занимается Shading Language (далее SL). А также продемонстрировать некоторые примеры ее использования. Не будем сильно отвлекаться и пожалуй начнем. Для начала поставим себе задачу. Предположим, что нам жизненно необходимо сделать шейдер “Checker” для PIXAR Slim. Итак, запустим программу Graf Eq?.


 (17 Кб)


Принцип работы с Graf Eq? очень прост и интуитивно понятен. Вводите формулу и получаете рисунок. Если вы имеете Интернет, то на сайте, есть очень много примеров написания формул и скачать саму программу. Там же есть галерея результатов. Думаю что касается Graf Eq? в остальном вы сами разберетесь не будем сильно отходить от нашего урока, перейдем к SL и разделу как можно использовать полученный результат для написания шейдера.


Прежде чем приступить к написанию шейдера “Checker” для поверхности примитива, в журнале №2 2001 вы можете скопировать RIB file, который нам поможет поработать над технической частью. Вам только необходимо заменить surface “watermelon” на surface “Checker”. Итак, создадим файл с названием Checker.sl и поместим в него код Plastic шейдера.



Давайте еще раз посмотрим на (Рис. 01). Итак, мы видим, что у нас на картинке видна черно-белая шахматная доска. Значит нам нужно немного модифицировать наш шейдер.



Теперь можно приступить к главной части нашего шейдера, закладке формулы в шейдер, которую мы написали в программе Graf Eq?, а именно sinx*siny>0.


И получаем результат:


 (3 Кб)


Отличие SL от Slim формата практически не имеет, за исключением некоторых указывающих типов для TСL. Slim имеет собственную оболочку, то у него есть подключаемые типы (блоки). Template типы: Shadingmodel, Ensemble, Displacement, Light, Volume, Color, Float, Point, Vector, Normal, Manifold и т.д. Так же поддерживается тип Macro и Expression, но это уже относится к встроенному языку TCL. Рассмотрим немного внутреннюю структуру Slim файла.



Получив некоторые начальные знания по внутренней структуре Slim, можем приступить к конвертации шейдера под Slim. Создайте файл Checker.slim.



Если посмотрим на структуру Slim файла то мы заметим что практически ничего не изменилось за исключением некоторых типов. Сi стал CI и Oi стал OI в остальном мы ничего не меняли в структуре SL. Итак, мы написали Template для Slim. Теперь давайте его подключим и проверим, как он у нас работает.


Как и везде все требует порядка и культуры. Это подчеркивает ваш подход к работе. И так зайдем в папку D:\Pixar\Render Man? Artist Tools 4?.5\lib\ и создадим там папку my_slim. Скопируйте в нее файл Checker.slim. Теперь перейдем в папку D:\Pixar\Render Man? Artist Tools 4.5\etc\ и откроем фаил slim.ini для редактирования. И добавим следующую запись :



Сохраняем файл slim.ini и запускаем программу Slim. Создайте палитру и если вы все сделали правильно, то в разделе Surface появиться Checker.


 (32 Кб)" />""


И так общими усилиями мы создали шейдер для Slim. Но данная архитектура шейдера не очень гибкая. Давайте разберемся и попробуем усовершенствовать наш шейдер и сделать его более гибким и удобным для использования. Если мы посмотрим на внутреннюю структуру палитры Slim'а то мы найдем все типы Shadingmodel. Поэтому нет смысла создавать с одинаковой и зависимой внутренней структурой. В нашем случае это шейдер “Plastic”. Давайте доработаем наш Template сделаем его более удобным и простым. Сначала удалим все лишнее, что относится к шейдеру. Откройте Checker.slim и отредактируйте его как показано ниже.



И так удалив все лишнее приступим к доработке.



Проверяем сохраняем и запускаем Slim. Вы сразу пошли в Surface и обнаружили что Checker исчез. Что же с ним случилось? Ничего страшного, он просто сменил тип. Создайте Surface>Plastic. В блоке Surface Color укажите тип Connection и появиться меню выбора – там вы и найдете Checker.


 (35 Кб)


Давайте посмотрим, что же у нас изменилось. Тип template shadingmodel поменял значение на template color, тип CI на result. Теперь наш шейдер приобрел вид подключаемого блока. Результат остался тем же, а гибкости добавилось. Теперь мы при необходимости можем менять тип шейдера “Plastic” на любой другой. Давайте пойдем немного дальше и посмотрим, что можно еще сделать с нашим шейдером. Например представим, что хотим умножение поменять на сложение. Запустим программу Graf Eq? и посмотрим что у нас получится.


 (15 Кб)


На рисунке видно, что при изменении формулы рисунок поменялся. Значит в нашем шейдере, в строке multXY = (sine_X) * (sine_Y) значение * поменять на +, multXY = (sine_X) + (sine_Y). Мы можем просто поменять его и получим искомый результат. Но если нам придется вернуться к умножению нам опять придется менять значение в ручную. Давайте немного подкорректируем наш шейдер и посмотрим, что можно с этим сделать.



 (11 Кб)


Таким образом мы теперь в зависимости необходимости можем спокойно переключать значения нашего блока. А давайте пойдем еще чуточку дальше и научим наш шейдер работать с координатами.



И так можно совершенствовать до бесконечности:


 (25 Кб)


Но это больше дело уже личного характера чем необходимость. Поэтому остановимся и подведем итоги:


  1. Программа Graf Eq? работает с формулами и показывает результат сразу после его написания. Это позволяет нам подготовиться к написанию шейдера и избежать не нужных результатов.
  2. SL и Slim не сильно отличаются друг от друга, за исключением того, что в SLIM есть встроенный язык TCL.
  3. Slim файл может быть как шейдером, так и многофункциональным блоком, что дает нам больше гибкости в работе.
  4. Внутренняя структура блока может содержать большое количество переключаемых типов. Это позволяет нам хранить много значений в одном блоке.

Язык SL очень прост. И знание его позволяет в компьютерной графике более глубже понять структуру шейдинга. Также помогает при работе с другими пакетами и материалами визуализации. Не говоря уже о программировании материалов, расширяя возможности пакета или внутреннюю структуру игр. Но об этом поговорим в следующем уроке.

Используемая литература и программы


Jeff Tupper / mooncake@dgp.toronto.edu
Reliable Two-Dimensional Graphing Methods for Mathematical Formulae with Two Free Variables


Graf Eq? ver. 2.10
Graf Eq? graphing program for 32-bit Windows
http://www.peda.com/grafeq


Advanced Render Man?: Creating CGI for Motion Pictures,
Anthony A. Apodaca and Larry Gritz, Morgan-Kaufmann,
1999, ISBN 1–55860–618-1.


Larry Gritz “Blue Moon Rendering Tools” User Manual | release 2.6
http://www.exluna.com


PIXAR Animation Studios «The Render Man? Interface Specification, Version 3.2," Pixar, 2000.
http://www.pixar.com/




Владимир Малютин


 
Много файлов (8). [Показать файлы/форму]