всем привет! Ондра наконец-то взялся за wiki по короне)
и первую статью выложил, очень полезную, по выявлению причин влияющих на производительность рендера и возможные методы решения.
http://corona-renderer.com/wiki/performance_debugging
взялся перевести ее, на благо общественности) Возможные косяки первода и их исправление - приветствуются!
Настройки, влияющие на производительность рендера.
Есть несколько показателей производительности рендера отличных от «как долго мне нужно прождать прежде чем уйдет весь шум», которые можно использовать для определения и отладки настроек, непосредственно влияющих на скорость рендера (то есть определить, почему же сцена так долго рендерится). Это можно определить по некоторым цифрам показываемым в renderstamp’е и во вкладке Stats в панели короновского фреймбуфера.
Rays per second.
Это, собственно, главный показатель производительности сырого, brute force рендера. Это число всех трассируемых рендером лучей в секунду. Корона на одиночном i7 процессоре в среднем выдает 1 500 000 – 6 000 000 лучей в секунду, в зависимости от сложности сцены.
Малые значения Rays/s указывают на просадки в плане производительности рендера.
Причины низких значений rays/s могут быть следующими:
- комплексная, тяжелая геометрия моделей
- тяжелые текстурные карты в тридемаксе
- чрезмерное использование инстансов
- много полигонов в порталах
- нежесткий (деформируемый) motion blur
- HD Cache
- малые значения PT samples (1-2)
В таких ситуациях, когда rays/s в сцене выдает слишком малые цифры, можно попробовать следующие приемы:
- Отключить порталы/ минимизировать геометрию порталов до минимума
- Отключить/снизить фильтрацию в битмапах в 3dsmax
- Упростить комплексные связки шейдеров в 3dsmax
- Делать моушен блюр фэйком на постпродакшене
- Увеличить PT, по крайней мере, до 4.
Rays per sample .
Каждый сэмпл изображения (image sample) генерирует один луч выпускаемый из камеры в сцену. Этот луч затем может разделиться/создать много вторичных лучей. Кол-во созданных лучей зависит от сцены и непосредственно влияет на производительность – больше rays/sample означает меньшее число проходов выдаваемых рендером за единицу времени. Число лучей так же напрямую зависит от множителя PT samples и lights sample multiplier – большие значения равны большему числу rays/sample. Так и должно быть, это не баг. Обычные значения rays/sample – около 5-50 rays/sample для PT samples=16 и light samples multiplier=1. Использование HD Cache при низких значения rays/sample дает улучшение производительности с течением времени,в процессе рендера.
Очень высокие значения rays/sample для PT/light samples означают что рендер выполняет слишком много просчетов для одного image sample, как правило из-за некорректно настроенной сцены, что ведет в целом к ухудшению общей производительности рендера.
Наиболее часто встречающиеся причины высоких значений rays/sample таковы:
- слишком высокие значения альбедо для стен в интерьере сцены. Альбедо – это процент энергии отражаемой материалом и в Короне это сумма диффуза, рефлекта, рефракта и транслюцентной составляющей. В реальности почти не существует материалов имеющих практически белое-альбедо, и использовоание белого альбедо (для примера 255-белый цвет в diffuse) в процессе рендера дает нереалистичные и,самое главное, медленные результаты, и не может быть просчитано корректно с использованием unbiased-рендеров. Старайтесь ставить альбедо на всех значимых объектах сцены ниже RGB 180, и для того чтобы стены получались белее – увеличивайте яркость источников света.
- чрезмерное использование полупрозрачных (transparent/refractive) объектов
- некоторые конфигурации blend-материалов.
Для решения проблем можно попробовать:
- Используйте HD Cache
- По возможности упрощайте ваши blend-материалы до обычных материалов.
- Для листьев, попробуйте вместо карты прозрачности в opacity на листьях использовать собственно геометрию листьев
- Уменьшайте альбедо объектов до значения не больше 70% или RGB 180
- Снижайте множители PT samples и light samples, если у вас возникают проблемы со сглаживанием/глубиной резкости DOF/motion blur шумом вместо шума от источников света.