💡 Трасування променів (Path Tracing)
Progressive WebGL2 path tracer rendering a Cornell box scene. Each frame accumulates one Monte Carlo sample per pixel; watch soft shadows, colour bleeding and caustics emerge over hundreds of samples.
Про цю симуляцію
Це прогресивний Monte Carlo path tracer, який рендерить сцену Cornell box повністю на GPU в WebGL2. Кожен кадр випускає один випадково розсіяний промінь на піксель і апроксимує rendering equation, інтегруючи вхідне світло, помножене на BRDF поверхні, за півсферою. Семпли накопичуються в буфері ping-pong з плаваючою комою, тож шум спадає, а м'які тіні, розтікання кольору та відбиття загострюються протягом сотень семплів на піксель. Це чесний, фізично обґрунтований погляд на те, як насправді переноситься світло.
🔬 Що показано
Однонаправлений path tracer рівняння рендерингу. Дифузні стіни розсіюють світло за косинусно-зваженим семплюванням півсфери; металеві, дзеркальні й глянцеві сфери використовують відбиті напрямки з конусом шорсткості. Прямокутний випромінювач стелі освітлює бокс, промені завершуються на випромінюванні, а російська рулетка відсікає тьмяні шляхи після четвертого відбиття. Кадри змішуються за формулою 1/(n+1), а тонове відображення ACES з гамма-корекцією фіналізує вивід.
🎮 Як користуватись
Кнопки Pause/Resume зупиняють чи продовжують накопичення, а Reset очищає буфер. Повзунок «Max bounces» (1-8) задає глибину шляху, захоплюючи більше непрямого світла при вищих значеннях. «Exposure» (0.2-3.0) масштабує яскравість перед тоновим відображенням. Кнопки Scene перемикають пресети Cornell, Spheres і Mirror; будь-яка зміна скидає накопичення. Живі показники відображають семпли на піксель, FPS і роздільну здатність, зі смугою прогресу до цілі 512 spp.
💡 Чи знали ви?
Path tracing методом Монте-Карло збігається зі швидкістю 1/√N, тож щоб зменшити видимий шум удвічі, потрібно вчетверо збільшити кількість семплів. Саме тому перші кадри виглядають зернистими, а чисті зображення потребують сотень семплів.
Часті питання
Що таке path tracing?
Path tracing — це техніка рендерингу, яка симулює, як світло подорожує, трасуючи промені, що відбиваються по сцені, доки не досягнуть джерела світла. Вона чисельно розв'язує рівняння рендерингу за допомогою інтегрування Монте-Карло, тобто багато випадкових семплів усереднюються на піксель. Результат — фізично обґрунтоване глобальне освітлення, включно з м'якими тінями, відбиттями та непрямим розтіканням кольору.
Чому зображення спочатку зашумлене, а потім прояснюється?
Кожен кадр додає лише один випадково обраний шлях світла на піксель, тож один семпл — це груба, зерниста оцінка. Симуляція накопичує ці оцінки кадр за кадром і усереднює їх зі змішуванням 1/(n+1). Коли кількість семплів на піксель зростає до цілі 512, випадкова похибка зменшується, і зображення сходиться до гладкого, вільного від шуму вигляду.
Що роблять повзунки Max bounces та Exposure?
Max bounces задає, скільки разів промінь може розсіятися, перш ніж його шлях буде завершено, від 1 до 8. Вищі значення захоплюють більше непрямого, багатовідбитого світла, наприклад розтікання кольору між стінами, ціною повільнішої збіжності. Exposure масштабує накопичену яскравість від 0.2 до 3.0 перед тоновим відображенням ACES, дозволяючи освітлити чи затемнити фінальний вигляд без зміни базового рендеру.
Чи це фізично точно?
Це незміщений (unbiased) оцінювач рівняння рендерингу, тож за нескінченної кількості семплів він сходиться до точного розв'язку глобального освітлення, що робить його фізично обґрунтованим. Утім, він спрощений для браузера: геометрія — невеликий набір площин і сфер, дзеркальна модель — наближений конус шорсткості замість повного GGX, а спектрального чи заломлюваного скляного перенесення немає. Проте саме перенесення світла слідує реальній фізиці.
Що таке Cornell box і навіщо його використовують?
Cornell box — класична тестова сцена, розроблена в Корнельському університеті: кубічна кімната з червоною лівою стіною, зеленою правою стіною, нейтральними підлогою, стелею й задньою стіною, та джерелом світла зверху. Її кольорові стіни роблять дифузне розтікання кольору й м'які тіні площинного джерела легко помітними, тож вона стала стандартним еталоном для перевірки рендерерів глобального освітлення на реальних вимірюваннях.