Мы привыкли что реалистичный рендеринг - это долго. Долго, потому что реалистичная компьютерная графика требует моделирования широкого спектра физических явлений высокой точности расчёта. А высокая точность почти всегда означает большое время расчёта. Однако, в реальной жизни очень часто возникают эффекты и феномены (будем называть их трудновычислимыми), которые обладают сложной природой и их точный расчёт методом "грубой силой" (в той или иной форме) практически невозможен за приемлимое время. Основная проблема расчёта таких феноменов - выбросы: узкие и резкие пики в интеграле освещённости, которые находятся в заранее неизвестных местах многомерного пространства.
Рисунок 1. Изображение водных каустиков, посчитанное при помощи MLT на GPU HD7970 за 1 час.
Представьте себе, что вы стреляете из 12-фунтовой полевой пушки обр.1805 г. (рис. 1) в спичечный коробок с расстояния в несколько километров (к слову, современным артиллерийским системам такое под силу). Или стараетесь попасть ниткой в ушко иглы, бросая нитку с расстояния в 1 метр. Оба этих события - чрезвычайно редкие, хотя они вполне могут прозойти. На 100-1000 выстрелов/бросаний нитки вы, возможно, попадёте 1 раз. Но это страшно неэффективно. В рендерах та же проблема - заранее неизвестно куда нужно больше лучей выпускать, а куда можно меньше. Каустики или многократные глосси отражения - это и есть спичечный коробок, - то самое ушко иглы в многомерном пространстве, в которое рендеру нужно уметь попадать, причём довольно часто.
Рисунок 1. 12-фунтовая пушка обр.1805 г. Не слишком точное орудие для нашего времени.
Современная наука предлагает несколько методов решения этой проблемы. Каждый из методов обладает своими преимуществами и недостатками. В нашей рендер-системе вы можете, например, попробовать стохастические прогрессивные фотонные карты - SPPM.
На практике однако, задача рендеринга приводит к необходимости моделировать практически всё что угодно, причём с высокой точностью.
Именно это даёт Вам необходимую гибкость и мощность в рендер-системе. Позволяет Вам творить новые миры свободно, без ограничений.
Традиционно-популярные методы в рендеринге вроде (SPPM и BDPT/VCM основанные на Multiple Importance Sampling) используют "подсказки" - априорную информацию о функции падающего освещения, которой в реальности может не быть вовсе (либо она может быть неверной).
Метод который даёт настоящую свободу должен работать в любых условиях без ограничений, должен считать освещение с любыми материалами и источниками за приемлимое время. И, разумеется, с высокой точностью.
Чтобы это было возможно, нужно обратиться за помощью к математике, - и мыслить более абстрактно. Нам нужна эффективная "молотилка" произвольных многомерных интегралов. Именно это позволит снять все ограничения.
Metropolis Light Transport (или MLT) - это один из видов так называемого Markov Chain Monte Carlo (MCMC). MCMC - более общий вариант монте-карло интегрирования, который активно развивается и по сей день. Мы не будем вдаваться в детали того как это работает, но скажем что MCMC умеет строить распределение пропорционально любой, заранее неизвестной функции (в многомерном пространстве разумеется). Причём, умея вычислять только значения этой функции в точках. Это именна та ситуация, которую мы имеем в трассировщиках лучей.
Сценарий номер 1. Источник стоящий близко к стене. Оригинальные изображения посчитаны в разрешении 2048x2048 за 1 час на GTX760
Источник, располагающийся близко к стене создаёт яркое и резкое вторичное освещение.
Сценарий номер 2. Источник сложной формы. Оригинальные изображения посчитаны в разрешении 1024x1024 за 30 минут GTX680
Сценарий номер 3. Самосветящийся материал 1024x1024 за 5 минут GTX680
Сценарий номер 4. Водные каустики. Сравнение с PT.
Сценарий номер 4. Водные каустики. Сравнение с SPPM.
Сценарий номер 5. Каустики и непрямое освещение через таршер.
Работа выполнена в институте прикладной математики им.М.В.Келдыша РАН при поддержке РФФИ (16-31-60048 мол_а_дк в 2016 и 2017 годах).
© Ray Tracing Systems. 2014-2021. Все права защищены.