anton.petrov (antimohnopuz) wrote,
anton.petrov
antimohnopuz

Category:

Ray Tracing #2

19 июня.

Сегодня экзамен по радиосистемам. Верю в себя и надеюсь на авось :(

Шейдеры поверхности реализовывают функцию двунаправленного переотражения, в народе известную как BRDF, т.е. на этом уровне все очень точно.

Собственно все основные вычисления делаются внутри шейдера поверхности, т.к. он отвечает за перенаправление входящего луча и интегрирование падающего потока излучения. Интегрирование осуществляется по заданному телесному углу, т.е. можно легко реализовать анизотропные материалы.

Пока интегрируется освещение первичных идеальных источников света.

Очевидно, что для рассчета global illumination нужно учитывать освещение от вторичных источников - объектов.

Radiosity отбрасываю сразу, потому что диффузно и видонезависимо, главное не попиксельно и добавляет кучу работы в сложных сценах, т.к. рассчитывается для всех(!!!) поверхностей. Мне же нужен фотореализмъ, а не риалтайм.

Хочу использовать численные методы для рассчета основного уравнения визуализации (Rendering Equation [Kajiya '86)]), в частности для основного интеграла.

Интегрирование потока излучения для рассчетной точки поверхности хочу осуществить трассировкой по конечному числу исходящих лучей. Обычно нас интересует освещение приходящее в точку поверхности через полусферу (телесный угол pi/2) ориентированную по нормали. Очевидно, мы получим заметное уменьшение разрешающей способности интегратора на большом расстоянии, т.е. фактически можем не заметить сильный источник света, который находится на относительно большом расстоянии от интересующей нас точки поверхности.

Вариантов решения несколько: можно адаптивно увеличивать количество лучей интегрирования, т.е. добавлять новые лучи при удалении от точки рассчета на определенное расстояние, обеспечивая равномерную сетку трассировки во всем пространстве, а можно отдельно интегрировать световые потоки от первичных и вторичных источников света. Основной плюс первого варианта - слепое следование основному закону визуализации, т.е. мы задаем точность и получаем соответствующее решение, унифицированно, по одному вполне ясному алгоритму без исключений - эдакий bruteforce в духе пиксаровских мейнфреймов (у них это называется rendering farm, я ясно представляю картину в духе тех полей по выращиванию энергии, как в матрице, только вместо коконов с людьми - тысячи слепых компов, соединенных толстенными сетевыми кабелями, которые отрешенно помаргивают светодиодами в пиксаровских вычислительных центрах, с потолками, исчезающими в холодной темноте). Основной плюс второго варианта - очевидно меньшее время для рассчета и интеллектуальность.

Если говорить про аппроксимацию решения (говорят аналитического решения для уравнения визуализации не существует, я не проверял), то, наверное, правильнее было бы пойти вторым путем, т.к. он заметно менее ресурсоемок и, наверняка, даст хорошие результаты в виду того, что вторичное освещение, как правило, существенно только на небольших расстояних, как раз там, где плотность лучей интегрирования достаточно высока. Но если мы рассчитываем место на которое падает "солнечный зайчик" от маленького зеркальца? Мы запросто можем это зеркальце и не заметить!!! На лицо проблема дискретизации, которая проявляется при рендеринге элементов с маленькими линейными размерами. Нужен метод определения источников пикового потока излучения?

В общем, нужно еще будет провести нехилый research по этой теме.
Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments