Производительность трассировки лучей

Интересно, можем ли мы сформулировать производительность трассировки лучей. В моем примитивном трассировщике лучей производительность в основном зависит от этой формулы: ширина x высота x количество сэмплеров x (количество объектов + количество источников света)

Так, например, в Pixar или любой другой крупной компании используют такую ​​формулу для оценки производительности. Разве производительность не зависит от количества треугольников объектов? Например, если я хочу примерно рассчитать максимальное время рендеринга кадра 1000x1000 со средним числом объектов 500, состоящим из 5 000 000 треугольников, возможно ли это?


person hevele    schedule 30.10.2012    source источник
comment
Но вычисления на пиксель не O(1), так что просто так это не скажешь! Кроме того, количество треугольников играет роль при трассировке лучей (при использовании моделей с треугольниками), но как сложная часть времени, которое вам понадобится на пиксель...   -  person Jasper    schedule 30.10.2012
comment
Так вы говорите, что мы ничего не можем сказать о максимальном времени, глядя на треугольники и пиксели?   -  person hevele    schedule 30.10.2012
comment
Вы можете сказать что-то, например, о верхней границе (хотя я думаю, вам понадобятся некоторые подробности о конкретном трассировщике лучей), но я не думаю, что вы можете экстраполировать какую-либо полезную информацию.   -  person Jasper    schedule 30.10.2012
comment
Хорошо спроектированный трассировщик лучей будет использовать структуры данных ускорения, которые улучшают производительность простого трассировщика лучей. Общее мнение заключается в том, что производительность может масштабироваться как логарифм (сложность сцены) на выборку из-за вашей структуры ускорения, хотя вам также необходимо создавать и поддерживать структуру ускорения!   -  person comingstorm    schedule 31.10.2012


Ответы (2)


Трассировщики лучей, используемые для серьезной работы, используют различные методы ускорения, которые делают их пропорциональными логарифму (треугольникам), а не количеству треугольников. А иногда и сублинейный по количеству источников света (исключая источники света, которые не могут воздействовать на части сцены, коллективная выборка всех источников света одновременно и тому подобное).

С другой стороны, изменения материала (даже при фиксированном разрешении и геометрии сцены) также могут привести к большим изменениям. Например, делая объекты более или менее отражающими/преломляющими, можно сильно изменить среднюю «глубину луча» сцены.

Вообще говоря, для данного набора геометрии, источников света и материалов время должно быть линейно пропорционально общему количеству лучей (то есть разрешению и частоте дискретизации), но это может быть отброшено для действительно больших сцен, которые частично сериализуются при чтении. ввод сцены (который может составлять ГБ и ГБ обработки) и чтение текстуры с диска или сети (у нас обычно есть сцены, которые ссылаются >> на 1 ТБ текстуры).

Таким образом, в целом вы ожидаете, что время будет в некоторой степени связано с:

scene_I/O + xres * yres * Samples * (shading_factor + texture_factor + log(треугольники)) + texture_I/O

Количество входов/выходов и произвольные факторы затенения и текстуры, связанные с вашими материалами, могут затруднить точное предсказание всего этого.

person Larry Gritz    schedule 31.10.2012

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

p.s. количество объектов имеет значение только сумма всех их полигонов.

person Roee Gavirel    schedule 30.10.2012
comment
Количество объектов не обязательно не имеет значения. Многие трассировщики лучей используют двухуровневую структуру ускорения, в которой есть одна ограничивающая иерархия для объектов, а затем для каждого объекта отдельная иерархия, содержащая его мозаичные треугольники. - person Larry Gritz; 19.03.2013