Оптимізація рендеру у V-Ray

Коментар з 2023 - перестаньте страждати з 3ds Max, ось чому. Далі йде оригінальна стаття

У цьому уроці ми заліземо в нетрі V-Ray і розберемо його найтонші налаштування, щоб навчитися оптимізувати рендер та отримати якісну картинку за менший час.

vray_optimization_header

Вступ


Цей урок створений для того, щоб охопити і роз'яснити весь процес оптимізації налаштувань V-Ray для отримання якісного рендеру за менший час.

Часто виникає багато плутанини навколо терміна V-Ray sampling і які у нього ідеальні налаштування. Більшість візуалізаторів створюють «Універсальні налаштування V-Ray» у яких ставлять у Image Sampler (Anti-Aliasing, або AA) Max subdives дуже високе значення, близько 50 ліл навіть 100, потім просто знижують значення noise threshold, поки рендер не стане достатньо чистим, думаючи , що це найкращий спосіб досягти оптимального співвідношення якість/швидкість. Але маючи невелике уявлення, що ж знаходиться під капотом V-Ray і як він, насправді працює, ви можете отримати картинку краще за меншого часу рендеру. Спосіб, який я опишу в цій статті, в порівнянні з найпоширенішим, який я описав вище, в деяких сценах може заощадити ваш час рендеру в 3-13 разів.

Що ж, спочатку розглянемо деякі базові речі про те, як працює сам рендер та V-Ray sampling. Далі ми перейдемо до конкретної сцени, щоб продемонструвати, як оптимізувати рендер, щоб він був швидше, якісніше і чіткіше. Потім ми навчимося виявляти різні види шуму, які можуть бути у сцені. І наприкінці я покажу покрокову процедуру оптимізації будь-якої сцени, щоб отримати ідеальний баланс між якістю та швидкістю.

Якщо ви вже знаєте, як влаштований V-Ray, натисніть сюди щоб відразу перейти до покрокової процедури оптимізації.

RAYTRACING (трасування променів)


Коли починається рендер, промені вистрілюють з камери в сцену, щоб зібрати інформацію про геометрію в сцені, яка буде видно на фінальній картинці. Ці промені спрямовані від камери, називаються Primary Rays (іноді Camera Rays або Eye Rays) і налаштовуються в Image Sampler (також відомий як Anti-Aliasing або AA).

У той час, як Primary Ray перетинаються з геометрією сцени, додаткові промені вистрілюються з цих точок припинення в інші області сцени щоб отримати інформацію про освітлення, тіні, відбите освітлення (GI), відображення, заломлення, підповерхневе розсіювання (SSS) та ін. додаткові промені називаються Secondary Rays та налаштовуються у V-Ray's DMC Sampler

vray_optimization_figure_01Рисунок 1. Спрощена схема трасування променів (raytracing): Primary Rays вистрілюють із камери в сцену, перетинаються з об'єктами сцени та поширюють Secondary Rays в інші частини сцени.

З цього моменту ми називатимемо "Rays", як "Samples", тому що мета променя (Ray) - отримати інформацію про сцену "Sample" (від англ. - зразок). Rays = Samples.

Щоб зрозуміти, що відбувається в сцені, необхідно випустити купу Primary і Secondary Samples. Чим більше Samples, тим більше V-Ray отримує інформацію про сцену, відповідно, тим якіснішим буде рендер і тим менше в ньому буде шуму. Як бачите, шум - причина нестачі інформації про сцену. Якщо в сцені є шум, значить V-Ray не мав можливості зібрати достатньо інформації про сцену. Під підсумок: щоб прибрати шум, вам необхідно надати V-Ray більше інформації, а щоб надати рендер більше інформації про сцену, потрібно зробити значення Samples більше.

Кількість Primary Samples регулюється значеннями Min Subdivs, Max Subdivs, і Color Threshold у параметрах Image Sampler. Кількість Secondary Samples регулюється значенням Subdivs індивідуально в кожному джерелі світла, GI, матеріалі та в налаштуваннях Noise Threshold значенням DMC Sampler. (Noise Threshold у Maya називається Adaptive Threshold)

Отже, повторимо основні терміни:

Ray = Sample

Primary Samples = samples настроюються V-Ray's Image Sampler (також відомі, як Anti-Aliasing або AA), створені для визначення геометрії сцени та збору такої інформації, як: текстури, глибина різкості (DOF), та розмиття в русі).

Secondary Samples = samples C-настроювані V-Ray's DMC Sampler, створені для збору інформації про освітлення, GI, тіні, відображення, заломлення і SSS

Noise = шум або нестача інформації

Subdivs = Квадратний корінь з реальної кількості Samples. Subdivs^2 = Samples. Приклад: 8 Subdivs = 64 Samples. (8^2 = 64)

У цьому уроці ми розглянемо, як найкраще використовувати ці Primary та Secondary Samples, щоб отримати зображення без шумів у короткий проміжок часу.

Визначення THE SAMPLERATE RENDER ELEMENT


The SampleRate render element — один із найважливіших інструментів, які ми будемо використовувати для оптимізації рендеру. Це спосіб у V-Ray, показати нам, що Image Sampler (AA) робить у конкретному пікселі. Він робить це, позначаючи кожен піксель кольором, що відповідає кількості Primary Samples (AA) у ньому. Це зображення можна глянути в SampleRate render element)

*Блакитний колір означає невелику кількість Primary Samples (AA) у цьому пікселі.

*Зелений колір означає середню кількість Primary Samples (AA) у цьому пікселі.

*Червоний колір означає велику кількість Primary Samples (AA) у цьому пікселі.

vray_optimization_figure_02Рисунок 2. The SampleRate render element (праворуч) показує, скільки Primary Samples було задіяно у кожному пікселі рендеру (ліворуч)

Отже, для сцени з Image Sampler (AA) 1 min та 10 max Subdivs (1 min та 100max Primary Samples):

*Блакитний колір означає 1 Primary Samples (AA) у цьому пікселі.

*Зелений колір означає 50 Primary Samples (AA) у цьому пікселі.

*Червоний колір означає 100 Primary Samples (AA) у цьому пікселі.

І, для сцени з Image Sampler (AA) 1 min та 100 max Subdivs (1 min та 10000max Primary Samples):

*Блакитний колір означає 1 Primary Samples (AA) у цьому пікселі.

*Зелений колір означає 5000 Primary Samples (AA) у цьому пікселі.

*Червоний колір означає 10000 Primary Samples (AA) у цьому пікселі.

Сцена приклад – як же працює V-RAY?


У цьому уроці ми будемо працювати з простою сценою, що складається з: площини з кількома сферами на ній, кількох різноманітних простих матеріалів (включаючи diffuse, glossy reflection, glossy refraction, і SSS), два об'ємні джерела світла (area light) і domelight з HDRI . GI включено у режимі Brute Force + Light Cache. Цей файл можна завантажити тут.

Ми почнемо з базових налаштувань рендеру з такими значеннями:

  • Image Sampler (AA) = 1min & 8max Subdivs.
  • Lights, GI, та Materials всі 8 Subdivs.
  • Noise Threshold s= 0.01.
  • Всі інші налаштування також залишаємо за замовчуванням

vray_optimization_figure_033. Базовий рендер.
1min & 8max Subdivs = Image Sampler (AA)
8 Subdivs = Lights, GI та всі матеріали

Тепер уважно подивимося, що ж відбувається при базовому рендері. Через налаштування рендера, ви ніби кажете рендеру:

«Я дозволяю тобі використовувати до 64 (8 Subdivs) Primary Samples (AA) у кожному пікселі, щоб ти зрозумів, що там відбувається в сцені і не робив багато шуму, на скільки це дозволяє noise threshold… Але Для кожного з цих Primary Samples, ти можеш створити тільки 1 Secondary Sample щоб зрозуміти, що там по світу, тіням, GI та матеріалам.»

Можливо, у вас виникає питання: «Стоп, всього один Secondary Sample для світла, GI та всіх матеріалів? Та ти женеш! Має бути 64 Samples (8 Subdivs), ми стільки вказували?». Що ж, важливо відзначити, що ІС (джерела світла), GI та матеріали мають значення 64 Samples (8 Subdives) кожен – V-Ray ділить це значення на AA Max Samples у вашій сцені. Незважаючи на значення в 64 Samples для світла та матеріалів, ви повинні мати на увазі, що це значення ділиться на значення AA Max = 64 Samples (8 Subdivs), в результаті, ми маємо всього один Secondary Sample для світла, GI та матеріалів. (64 Secondary Samples / 64 Primary Samples = 1 Secondary Samples).

Причина, через яку V-Ray це робить, — внутрішня формула, встановлена для утримання балансу цих двох значень. Логіка розробників така: що більше Primary Samples, тим пропорційно менше Secondary Samples потрібно зрозуміти, що відбувається у сцені (незабаром ми переконаємося, що це завжди справедливо). Це балансування між Image Sampler і DMC Sampler, спочатку, може бути вам не зрозуміла, але головне. винести наступне: коли ви збільшуєте значення Image Sampler (AA), V-Ray намагається компенсувати пропорційним зменшенням значення DMC Sampler. Пізніше, якщо ви ще не заснули, ви можете оцінити DMC Calculator, який написав автор цієї статті, яку я так старанно перекладаю о 5:02 ранку, майже не користуючись словником =) Дякуємо гімназії №32 у м. Іваново, де я отримував 8 уроків англійської на тиждень.

І так, повернемося до наших папуг:

V-Ray відрендерив на стільки класно, на скільки міг, але мене насторожує величезна кількість червоних пікселів у SampleRate render element). Ось що він нам цим каже:

«Я не зміг з'ясувати, що ж відбувається в сцені, тому що ти мене сильно обмежив у noise threshold. Я довго використовував Primary Samples з одним Secondary Sample але це не дало мені достатньо інформації про ці області.»

Якщо ми подивимося на рендер, ми помітимо, що в той час як об'єкти (краї об'єктів) виглядають досить непогано, існують шумні участки на зображенні в місцях тіней і відображень. Ми отримали гучний базовий рендер і ми маємо два варіанти щоб зменшити шум щоб отримати бажану якість.

* Варіант 1 - збільшити AA Max Subdivs — щоб V-Ray краще побачив сцену, але знову з одним Secondary Sample для світла, GI і матеріалів.

* Варіант 2 - Збільшити кількість Subdivs у матеріалах, світлі та GI. Сказати V-Ray, щоб він залишив кількість Primary Samples, але замість цього дозволити йому використовувати більше Secondary Samples.

Сцена приклад – варіант 1 – збільшення значення AA MAX SUBDIVS


Що ж, давайте спочатку спробуємо, тим способом, яким зазвичай роблять криворукі візуалізатори, щоб отримати менш галасливий рендер.

  • Ми збільшуємо Image Sampler (AA) 1min & 100max Subdivs.
  • Залишаємо ІС, GI та матеріали по 8 Subdivs.
  • Знижуємо Noise Threshold до 0.005 щоб сказати V-Ray що ми захочемо рендер без шуму.

vray_optimization_figure_04Малюнок 4. Варіант 1 - збільшення кількості сабдівів у AA Max
1min & 100max Subdivs = Image Sampler (AA)
8 Subdivs = BC, GI та всі матеріали
0.005 = Noise Threshold.

Давайте розберемося, що відбувається при таких настройках. Виставивши такі налаштування ми говоримо V-Ray:

«Я дозволяю тобі використовувати до 10 000 (100 subdivs) Primary Samples (AA) на піксель, щоб зрозуміти, що відбувається в сцені та мінімізувати шум, наскільки це можливо при заданому Noise Threshold. Але, для кожного Primary Samples, ти можеш створити тільки по одному Secondary Sample для того, щоб зрозуміти, що в сцені зі світлом, GI та матеріалами.»

Згадуємо, що т.к. кожен ІС, матеріал та GI мають по 64 Samples (8 Subdivs), V-Ray ділить це значення на AA Max Samples. Незважаючи на значення в 64 Samples, воно ділиться на AA Max 10 000 Samples (100 Subdivs), в результаті, ми маємо мінімальну кількість - всього по одному Secondary Sample для світла, GI та матеріалів. (64 Secondary Samples / 10000 Primary Samples = 1 Secondary Samples).

V-ray закінчує прорахунок картинки і каже:

«Я міг з'ясувати все, що відбувається в сцені для тієї якості та чистоти картинки, яку ти вказав. Але щоб промацати сцену, мені довелося місцями використовувати аж 10000 Primary Samples з 1 Secondary Samples на світ, GI і матеріали.»

Ми дивимося на Варіант 1 і бачимо, що кількість шуму значно зменшилася порівняно з базовим рендером. Час рендери збільшився до 11 хв 44 мек (в 9,8 раза довше). Проте ми не маємо шуму. Більшість людей на цьому моменті вважатимуть, що це найкращий результат, який можна отримати і що начебто готове.

Але що якщо ми розберемо варіант 2, про який говорили раніше? Незважаючи на збільшення AA Max Subdivs, що відбудеться, якщо ми, натомість збільшимо значення сабдівів в ІС, GI та матеріалах. Давайте з'ясуємо.

Сцена приклад - варіант 2 - збільшення кількості сабдівів в ІВ, GI та матеріалах


Тепер давайте спробуємо дещо новеньке. Давайте поставимо значення Primary Samples таким, яким воно було в базових налаштуваннях, але додамо Secondary Samples.

  • Ми залишаємо Image Sampler (AA) на базових параметрах 1min & 8max Subdivs.
  • Збільшуємо кількість сабдівів в ІВ, GI та матеріалах до 80 Subdivs кожен.
  • Залишаємо Noise Threshold 0.01

vray_optimization_figure_05Малюнок 5. Варіант 2 - захоплена кількість сабдівів в ІВ, GI та матеріалах.
1min & 8max Subdivs = Image Sampler (AA)
80 Subdivs = Lights, GI, і Materials each.
0.01 = Noise Threshold.

І так, давайте розберемо, що відбувається в другому варіанті. Встановлюючи такі параметри рендеру, ви ніби кажете V-Ray:

"Я дозволяю тобі використовувати до 64 (8 subdivs) Primary Samples (AA) на піксель щоб зрозуміти, що є в сцені і до 100 Secondary Samples."

Пам'ятаємо, що GI, матеріали та світло це 64000 семплів (80 сабдівів) кожен. V-Ray автоматично ділить кожне це значення, виходячи з AA Max Samples, встановленого у вашій сцені. І незважаючи на 64000 семплів, воно ділиться AA Max 64 семплів (8 сабдівів), і тільки 100 вторинних семплів для світла, GI і матеріалів (для кожного). Secondary Samples / 64 Primary Samples = 100 Secondary Sample).

V-Ray закінчує рендер і каже:

«Я міг дізнатися, що відбувається в сцені виходячи з їх рівня якості noise threshold, який ви встановили. За фактом, більшість часу, я повинен був використовувати всі 64 Primary Samples на піксель. І 100 Secondary Samples для світла, матеріалів та ГІ.»

Ми бачимо, що шуми пішли, але час рендеру збільшився у 4,5 рази (4м 38с) порівняно з базовим рендером.

Але якщо ми порівняємо з варіантом 1, ми побачимо, що варіант 2 дав нам результату чистіше і відрендерив у 2,2 рази швидше.

vray_optimization_figure_06

Малюнок 06. Варіант 1 зліва та варіант 2 справа. Внизу - збільшене в 4 рази зображення, щоб краще бачити різницю в шумах.

Чому так? Чому, збільшення параметрів DMC Sampler settings (світло / GI / матеріали Subdivs) краще, ніж збільшення Sampler (AA)? Як результат — рендер швидше та чистіше.

Як працює оптимізація


У базовому рендері бачимо, що грані об'єкта виглядають добре, шум переважно у відбитках і тінях. Якщо ви пам'ятаєте, що ми навчали раніше: «Primary Samples (AA) зроблено для «промацування» основної геометрії сцени, текстур, DOF та motion blur у сцені. Тоді як Secondary Samples - "промацують" GI, світло, матеріали і тіні.

І так, щоб позбавитися шуму, вибір між варіантом 1 і 2 - не легке завдання. Навіщо використовувати викрутку, щоб зробити роботу молотка? Image Sampler (AA) вже зробив те, для чого він був розроблений, щоб зробити – зробити геометричну деталізацію (краї об'єктів) чистими та безшумними. Таким чином, замість стрільби купою додаткових Primary Samples (AA) в сцену, щоб прибрати шум, краще додати samples в DMC Sampler (світло / GI / Матеріали Subdivs), нехай він робить те, для чого він був розроблений - прибирає шум у тіні, освітленні, GI, відображеннях та заломленнях. Ось наша відповідь!

А тепер ми можемо зрозуміти, чому "Універсальні V Ray-Налаштування" 1хв і 100 max АА, як правило, не будуть найбільш ефективним методом візуалізації сцени - насправді він ніколи не був призначений бути найбільш ефективним методом! Універсальні налаштування V-Ray були розроблені, щоб зробити V-Ray доступним та легким для користувачів, які не дбають про оптимізацію та не морочилися, як V-Ray працює під капотом. Це просто спосіб поставити V-ray на автопілоті. Це дозволяє користувачеві контролювати всю якість рендерингу шляхом коригування лише одного параметра – noise threshold. Якщо занадто багато шуму у візуалізації, просто знижуємо noise threshold, і V-Ray буде тримати стрілянини Primary Samples (AA) поки, нарешті не досягає noise threshold.

Але ми можемо ще більше оптимізувати 2 варіант! Від 5хв 58с до 4хв 53с. При незначному збільшенні шуму.

vray_optimization_figure_07

Рисунок 07. Варіант №1. Ліворуч, і Варіант №2 Рендер оптимізовано ще більше — праворуч. Швидкість рендерингу збільшена у 2.7x!

Ось ще один приклад оптимізації, на цей раз більш орієнтований на продуктивність сцени.
Оптимізована візуалізація (праворуч) вважається майже на 35% швидше, ніж універсальні настройки рендерингу (ліворуч) при одночасному зниженні шуму та покращенні якості рендерингу. Також відзначимо, як відображення стали більш точними – помітно на підлозі до кінця коридору.

vray_optimization_figure_08

Малюнок 08. «Універсальні V Ray-Налаштування» ліворуч та оптимізований рендер справа.

Далі буде…

Оптимизация рендера в V-Ray: 11 коментарів

  1. Відмінний урок, продовження буде приємним подарунком.
    До речі, прикрутіть RSS у вас тямущі статті, з радістю читав би нові

  2. Стаття марення. Час рендерингу при однаковій якості буде меншим, якщо викрутити сабдіви на мінімум, а зріз кольору на максимум. Так, стать картинки буде червоною. Ну і що. АА семплер краще бореться із шумом, ніж сабдіви на кожному елементі. Це факт.

    1. Хоч хтось засумнівався у правильності, а то складається відчуття, що всі коментарі вище писали чи боти чи люди, які не розуміють про що писали, одного разу прочитавши статтю.

      1. Як би стаття написана чуваком з Blur якщо ти знаєш, що це таке, оригінал у Akin Bilgic. Мені здається що в блур не дурні сидять як би щоб таке писати))

    1. 2016 року, з приходом Corona Render, ця стаття вже не актуальна. До перекладу статті руки не доходили.

Залишити відповідь до Андрей Скасувати відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *