Разумеется, не стоит забывать, что рендер так же выбирается и исходя из характера решаемых задач. А так как в больших компаниях на серьезном производстве решается очень много разнообразных задач и проблем, то рендер должен соответствовать этим требованиям и, грубо говоря, должен “уметь все”. В маленьких же компаниях чаще всего круг решаемых задач достаточно узок и специфичен, поэтому можно выбирать рендер, который подходит лучше для текущих задач.
Итак, что же отличает серьезный рендер от простого плагина для рендера:
• Рендер - это, как правило, отдельная программа (stand alone), имеющая возможность работать автономно и запускаться и управляться из командной строки. То есть рендер не должен зависеть ни от какого 3D софта.
• Как правило, рендер работает на разных платформах, например, обычно это Windows, Linux и Mac.
• Рендер должен иметь возможность написания тендеров и расширения стандартных возможностей.
Вот о последнем пункте и пойдет речь далее.
Многим возможность написания шейдеров может показаться сложной и ненужной
- мол, это программирование, а я художник и мне это не нужно. Ну и что, я вот тоже по образованию художник и к программированию не имею практически никакого отношения, однако в ремесле написания шейдеров немного разобрался, так сказать, для общего развития, а так же для облегчения своей работы. Программистом я, разумеется, не стал, но зато стал лучше понимать рендер и принцип его работы и серьезно оптимизировал свою работу.
Для чего нужно писать шейдера?
Причин написания шейдера может быть много.
1. Такого шейдера просто нет и его нужно написать. Это наиболее частая и классическая причина, по которой пишут шейдера. Например, представим ситуацию, что нам нужен шейдер стекла, все, которые имеются, нас не устраивают по своим возможностям - в этом случае можно просто написать такой шейдер, который нам нужен. Или часто бывает, что mental ray поддерживает какую-то возможность, но она никак не реализована в 3d пакете, тогда так же часто может помочь написание шейдера.
2. Упрощение работы. Например, в Maya какую то задачу можно выполнить, собрав сложный shading network из 15 нод. Ту же задачу можно выполнить, написав простой шейдер, который сделает все то же самое, но лишь одной нодой и более элегантно, гибко и просто, ну то есть именно как вам надо. Одна нода всегда будет понятнее и проще, например, все нужные настройки, который могли быть разбросаны по всему нетворку, будут в одном месте и называться, как полагается. (Тут отчасти может помочь написание phenomenon)
3. Ускорение просчета. Например, у вас имеется сложный Shading Network, скорость рендера которого вас не устраивает. Вы можете переписать его, серьезно оптимизировав код. У меня, например, был случай, когда шейдинг нетворк, который я собрал, считался очень долго. Это был какой то слоеный шейдер, где я смешивал несколько других шейдеров. Так как каждый из этих слоев просчитывал освещение независимо друг от друга, то получалось, что освещение и тени соответственно просчитывались столько раз, сколько было слоев, что, в принципе, не нужно. Я просто взял и объединил это все в один шейдер, который всего один раз просчитывал освещение и использовал во всех слоях. В итоге я получил увеличение скорости рендера на 30%, а картинка не изменилась. И все это заняло у меня минут 30. Выигрыш на скорости визуализации всей анимации был существенен.