В этой статье мы исследуем важную концепцию, используемую в недавно выпущенной платформе Lighthouse 2. Wavefront path tracing, как её называют Лейн, Каррас и Аила из NVIDIA, или streaming path tracing, как она изначально называлась в магистерской диссертации ван Антверпена, играет важнейшую роль в разработке эффективных трассировщиков пути на GPU, а потенциально и трассировщиков пути на CPU. Однако она довольно контринтуитивна, поэтому для её понимания необходимо переосмыслить алгоритмы трассировки лучей.
Читать полностью »
Рубрика «трассировка пути»
Новый алгоритм трассировки пути для оптимизации работы GPU: Wavefront Path Tracing
2019-07-24 в 6:23, admin, рубрики: path tracing, streaming path tracing, wavefront path tracing, Алгоритмы, Видеокарты, Работа с 3D-графикой, разработка игр, трассировка пути, трёхмерная графикаМожно ли рендерить реалистичные изображения без чисел с плавающей запятой?
2019-04-19 в 4:53, admin, рубрики: c++, Алгоритмы, ненормальное программирование, Работа с 3D-графикой, рациональные дроби, рендеринг графики, трассировка пути, целочисленная арифметика, числа с плавающей точкой/запятойВведение
«Что получится, если мы заменим числа с плавающей запятой на рациональные числа и попытаемся отрендерить изображение?»
Такой вопрос я задал себе после размышлений над твитом исследователя и преподавателя компьютерной графики Моргана Макгвайра. Он рассуждал о том, насколько сильно студенты компьютерных наук удивляются, когда впервые узнают, что для хранения привычных нам чисел с плавающей запятой в современных компьютерах нужно идти на компромиссы. И эти компромиссы делают сложными простые задачи, например, проверку принадлежности точки треугольнику. Проблема, разумеется, заключается в том, что проверка нахождения четырёх точек в одной плоскости (копланарности) с помощью определителя или какого-нибудь векторного умножения (а на самом деле это одно и то же) никогда не даст значение, точно равное нулю, чего требуют эти математические методы. Даже если бы настоящие вычисления нахождения на одной плоскости были бы точны, те же компромиссы с точностью почти с вероятностью в 1,0 дали бы ответ, что сами четыре точки не копланарны.
Это зародило во мне мысль — если допустить, что все входящие данные рендерера (координаты вершин, 3D-преобразования и т.д.) были бы заданы как рациональные числа, то создавали бы все операции, от создания луча, обхода ускоряющей структуры и до пересечения лучей с треугольниками только рациональные числа? Если это было бы так, то мы бы смогли выполнять проверку копланарности совершенно точно! Возможно, вы зададитесь вопросом, почему 3D-сцена, выраженная в рациональных числах должна давать результаты тоже только в рациональных числах…
Простая сцена, трассировка пути в которой выполнена рациональной арифметикой. Здесь используется система чисел «с плавающей чертой дроби», а не числа с плавающей запятой.
Читать полностью »
Расшифровка трассировщика лучей размером с открытку
2018-12-28 в 5:10, admin, рубрики: path tracing, raymarching, raytracing, ненормальное программирование, обратная разработка, Работа с 3D-графикой, реверс-инжиниринг, рендеринг графики, трассировка пути«Он снова это сделал!», — вот, что первое пришло мне в голову, когда я посмотрел на оборотную сторону флаера Pixar [1], полностью заполненную кодом. Скопление конструкций и выражений была подписана в правом нижнем углу не кем иным, как Эндрю Кенслером. Для тех, кто его не знает, скажу: Эндрю — это программист, придумавший в 2009 году 1337-байтный трассировщик лучей размером с визитку.
На этот раз Эндрю придумал нечто более объёмное, но с гораздо более интересным визуальным результатом. Так как я закончил писать свои Game Engine Black Books про Wolf3D и DOOM, у меня появилось время на изучение внутренностей его загадочного кода. И почти сразу меня буквально очаровали обнаруженные в нём техники. Они сильно отличались от предыдущей работы Эндрю, основанной на «стандартном» трассировщике лучей. Мне было интересно узнать о ray marching, функциях конструктивной объемной геометрии, рендеринге Монте-Карло/трассировкой пути, а также множестве других трюков, которые он использовал, чтобы ужать код в такой небольшой кусок бумаги.
Трассировка пути на GPU в Unity — часть 2
2018-05-31 в 9:38, admin, рубрики: unity3d, Алгоритмы, ламберт, программный рендеринг, Работа с 3D-графикой, разработка игр, трассировка лучей, трассировка пути, фонг«Нет ничего хуже чёткого образа размытой концепции». – фотограф Энсел Адамс
В первой части статьи мы создали трассировщик лучей Уиттеда, способный трассировать идеальные отражения и резкие тени. Но нам не хватает эффектов нечёткости: рассеянного взаимоотражения, глянцевых отражений и мягких теней.
Основываясь на уже имеющемся у нас коде, мы итеративно решим уравнение рендеринга, сформулированное Джеймсом Каджия в 1986 году и преобразуем наш рендерер в трассировщик пути, способный передавать вышеупомянутые эффекты. Мы снова будем использовать C# для скриптов и HLSL для шейдеров. Код выложен на Bitbucket.
Читать полностью »
Unbiased DirectX Рендеринг на GPU, CPU и в облаке
2012-10-02 в 6:24, admin, рубрики: cloud computing, CUDA, direct3d, DirectX, gpgpu, gpu, HLSL, intel, opencl, path tracing, ray tracing, shaders, unbiased rendering, windows azure, x64, x86, Анимация и 3D графика, Облачные вычисления, рендеринг, рендеринг без допущений, трассировка лучей, трассировка пути, шейдеры, метки: 3d графика, cloud computing, CUDA, direct3d, DirectX, gpgpu, gpu, HLSL, intel, Nvidia, opencl, path tracing, ray tracing, shaders, unbiased rendering, windows azure, x64, x86, АРМ, облачные вычисления, рендеринг, рендеринг без допущений, трассировка лучей, трассировка пути, шейдеры Как создать рендерер, который бы работал даже на компьютере вашей бабушки? Изначально перед нами стояла немного другая задача — создать unbiased рендер для всех моделей GPU: NVidia, ATI, Intel.
Хотя идея такого рендера для всех видеокарт витала в воздухе давно, до качественной реализации, тем более на Direct3D, дело не доходило. В своей работе мы пришли к весьма дикой связке и дальше расскажем, что нас к ней привело и как она работает.
Unbiased rendering (рендеринг без допущений)
2012-04-16 в 14:47, admin, рубрики: 3d графика, path tracing, ray tracing, unbiased rendering, Алгоритмы, Анимация и 3D графика, рендеринг, рендеринг без допущений, трассировка лучей, трассировка пути, метки: 3d графика, path tracing, ray tracing, unbiased rendering, Алгоритмы, рендеринг, рендеринг без допущений, трассировка лучей, трассировка путиВ компьютерной графике, рендеринг без допущений относится к технике рендеринга, которая не вносит в расчет систематических ошибок, предположений или погрешностей. Изображение получается таким, каким должно быть в природе, а рендер не имеет настроек качества поверхностей либо источников света.
Изображение отрендерено с помощью Maxwell Render.