|
В зависимости от типа луча переключаются между разными шейдерами. Например если нужно считать отражение, то рендерим синий шейдер, а если преломление или final gather, то красный. При этом в прямой видимости шейдер может быть другого цвета. Делать разноцветные шейдера для отражения и преломления... конечно интересно, но зачем? "В быту" это может пригодится для убавления колор блидинга (переносе цвета объекта), путем замены шейдера для лучей final gather на менее интенсивный цвет. Это тоже все хорошо и работает, но в данной статье речь пойдет об использования подобных шейдеров немного для других целей, таких как оптимизация рендера. Суть очень проста. Например у нас есть салон автомобиля, где присутствуют материалы кожи, пластика, металла и тп. Почти везде используется окклюжен, размытое отражение и бамп. Результат нас устраивает, но видим, что такие шейдера работает не быстро. А надо бы еще и анимацию просчитать... ![]() Для начала мы выбираем шейдер, которые занимает наибольшую площадь в сцене. И назначаем на эти объекты mip_rayswitch шейдер. К нему на основной слот подсоединяем наш сложный шейдер. Потом на слот 'final gather' и 'reflection' подсоединяем его копию, но уже без бампа, окклюжена и отражения (обычно просто lambert). В итоге получится, что в отражение, которое у нас сильно размытое, будет виден простой шейдер. Так же он будет виден и для FG. Так как отражение сильно размыто, в нем не будет видно отсутствие бампа, окклюжена и часто даже отражения. Но, если у вас все же видно отсуствие какого-нибудь эффекта, то можно его оставить, но с более низкими настройками качества, например для окклюжена можно поставить меньшее количество лучей. ![]() Оригинальный граф сложного шейдера ![]() Граф после добавления mip_rayswitch ![]() mip_rayswitch Такой трюк можно проделать со всеми основными шейдерами. В результате можно существенно сократить время рендера. А final gather при использовании подобного трюка часто еще и меньше "шумит". При этом картинка почти не меняется. Например, время рендера следующей картинки в разрешение 1000x720 уменьшилось с 51m43s до 35m40s после использования mip_rayswitch на 6 основных материалах. Как мы видим, время сократилось на 30%. Вторую картинку не показываю, поскольку она практически такая же. ![]() Infiniti GCoupe Конечный результат в анимации можно посмотреть на сайте www.infiniti-lab.ru Проект реализован по заказу креативного агентства Red Keds для Infiniti. Свои вопросы, предложения и пожелания прошу на puppet@rambler.ru |
|
|