OptiX

редактировать

OptiX
OptiX logo.png
Разработчик (и) Nvidia
Стабильный выпуск 7.1 / 30 июня 2020 г. (2020 -06-30)
Написано наC / C ++
Операционная система Linux, OS X, Windows 7 и выше
Тип Трассировка лучей
Лицензия на собственное программное обеспечение, бесплатно для коммерческого использования
Веб-сайтСайт разработчика NVIDIA OptiX

Nvidia OptiX (OptiX Application Acceleration Engine ) - это трассировка лучей API. Вычисления выгружаются на графические процессоры через низкоуровневый или высокоуровневый API, представленный в CUDA. CUDA доступен только для графических продуктов Nvidia. Nvidia OptiX является частью Nvidia GameWorks. OptiX - это высокоуровневый API, или API «алгоритма», что означает, что он разработан для инкапсуляции всего алгоритма, частью которого является трассировка лучей, а не только самой трассировки лучей. Это сделано для того, чтобы движок OptiX мог выполнять более крупный алгоритм с большой гибкостью без изменений на стороне приложения.

Обычно видеоигры используют растеризацию вместо трассировки лучей для рендеринга.

Согласно Nvidia, OptiX разработан так, чтобы быть достаточно гибким для «процедурных определений и гибридных подходов к рендерингу». Помимо рендеринга компьютерной графики, OptiX также помогает в оптическом и акустическом дизайне, излучении и электромагнитных исследованиях, искусственный интеллект запросы и анализ коллизий.

Содержание
  • 1 Трассировка лучей с помощью OptiX
  • 2 OptiX Prime
  • 3 Программное обеспечение с использованием OptiX
  • 4 Ссылки
  • 5 Внешние ссылки
Трассировка лучей с помощью OptiX
Набор Julia, нарисованный с помощью NVIDIA OptiX. Это также образец SDK

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

Луч света (или, возможно, другой вид луча) может иметь другое поведение при попадании на определенную поверхность, а не на другую, OptiX позволяет настраивать эти условия попадания с помощью программ, предоставленных пользователем. Эти программы написаны в коде PTX или непосредственно в нем и связаны между собой при использовании подсистемой OptiX.

Для использования OptiX в системе должен быть доступен CUDA -capable GPU и должен быть установлен набор инструментов CUDA.

Использование движка OptiX в приложении для трассировки лучей обычно включает следующие шаги:

  • Определение программ для генерации лучей (например, лучи могут быть сняты параллельно, в перспективе и т. Д. поле gradient ), луч отсутствует (когда луч не пересекает какой-либо объект), дополнительная программа исключения (когда луч не может быть снят по какой-либо причине), ограничивающая рамка программа (программа, которая обеспечивает проверку пересечения ограничивающего прямоугольника для данного объекта) и программу пересечения.

Несколько примеров для этих программ доступны с программным SDK

// Пример кода с использованием API OptiX // / * Программа генерации лучей * / rtProgramCreateFromPTXFile (* context, path_to_ptx, "pinhole_camera", ray_gen_program); rtContextSetRayGenerationProgram (* контекст, 0, ray_gen_program); / * Пропущенная программа * / rtProgramCreateFromPTXFile (* context, path_to_ptx, "miss", miss_program); rtContextSetMissProgram (* контекст, 0, пропущенная_программа); / * Граничная рамка и программа пересечения * / rtProgramCreateFromPTXFile (context, path_to_ptx, "box_bounds", box_bounding_box_program); rtGeometrySetBoundingBoxProgram (* поле, box_bounding_box_program); rtProgramCreateFromPTXFile (контекст, путь_к_ptx, "box_intersect", box_intersection_program); rtGeometrySetIntersectionProgram (* box, box_intersection_program);

Программы ограничивающего прямоугольника используются для определения ограничивающих объемов, используемых для ускорения процесса трассировки лучей, в виде kd-деревьев или иерархий ограничивающих объемов

  • Создавайте материалы для любых совпадений и программы ближайшего совпадения: эти две программы определяют поведение луча при обнаружении его первого пересечения (ближайшего попадания) или общего пересечения (любого попадания)
// Пример кода с использованием API-интерфейсов OptiX // rtProgramCreateFromPTXFile (context, path_to_ptx, "closest_hit_radiance", closest_hit_program); rtProgramCreateFromPTXFile (контекст, путь_к_ptx, "any_hit_shadow", any_hit_program); / * Связывает ближайшее попадание и любую программу попадания с материалом * / rtMaterialCreate (context, material); rtMaterialSetClosestHitProgram (* материал, 0, closest_hit_program); rtMaterialSetAnyHitProgram (* материал, 1, any_hit_program);
  • Определите буферы, переменные, которые могут использоваться внутри поставляемых программ. Буферы - это области памяти, которые позволяют коду хоста (то есть нормальному коду CPU ) взаимодействовать с кодом устройства (то есть кодом, который выполняется на GPU ) и наоборот. Переменные - это внутренний способ связи и использования буферов OptiX для передачи данных туда и обратно.
  • Определите иерархию OptiX геометрических объектов, групп, селекторов и других узлов для создания древовидного графа всей сцены, подлежащей визуализации
Пример графического дерева для NVIDIA OptiX

Чтобы визуализировать сложную сцену или отследить разные пути для любого луча, OptiX использует преимущества вычислений GPGPU, используя платформу NVIDIA CUDA. Поскольку процесс съемки лучей и настройки их поведения можно настраивать, OptiX можно использовать во множестве других приложений, помимо трассировки лучей.

OptiX Prime

Начиная с OptiX 3.5.0, в комплект была добавлена ​​вторая библиотека под названием OptiX Prime, целью которой является обеспечение быстрого низкоуровневого API для трассировки лучей. - построение структуры ускорения, пересечение структуры ускорения и пересечение луча и треугольника. Prime также имеет резервный процессор, если в системе не обнаружен совместимый графический процессор. В отличие от OptiX, Prime не является программируемым API, поэтому ему не хватает поддержки пользовательских примитивов, не являющихся треугольниками, и штриховки. OptiX Prime не является программируемым и не инкапсулирует весь алгоритм, частью которого является трассировка лучей. Таким образом, Prime не может перекомпилировать алгоритм для новых графических процессоров, выполнить рефакторинг вычислений для повышения производительности или использовать сетевое устройство, такое как Quadro VCA и т. Д.

Программное обеспечение, использующее OptiX
  • Blender поддерживает OptiX с версии 2.81
  • Надстройка Blender D-NOISE использует двунаправленные изображения OptiX для шумоподавления с AI-ускорением
  • FurryBall - усовершенствованный рендерер финального кадра с графическим процессором реального времени с а также растеризация - на основе Nvidia OptiX
  • На SIGGRAPH 2011 Adobe продемонстрировала OptiX в демонстрации технологии трассировки лучей графического процессора для анимированной графики.
  • На SIGGRAPH 2013 OptiX был представлен в инструменте предварительного просмотра освещения на базе графического процессора Pixar в реальном времени.
  • OptiX был интегрирован в GameWorks библиотека разработчиков вместе с PhysX и другими графическими движками и фреймворками на базе CUDA.
  • Adobe After Effects CC
  • Daz Studio имеет OptiX Prime Acceleration с момента его интеграции с Iray, однако поддержка была удалена в версии sion 4.12.1.8
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-01 13:32:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте