Caustic Graphics

Caustic Graphics — американская компания в области компьютерной графики и безфабричного производства полупроводников, разрабатывавшая технологии для вывода трассированной в реальном времени графики на массовый рынок.[2][3][4]

Название компании происходит от оптического эффекта — каустики, возникающего при концентрации света на поверхности в результате фокусировки через отражение или преломление.

Caustic Graphics была основана на предпосылке, что создание реалистичной 3D-графики станет проще, если аппаратное обеспечение графического процессора (GPU) будет столь же эффективно обрабатывать лучи, как и вершины или фрагменты при использовании существующих методов растризации[3].

Что важно знать
Caustic Graphics
Тип Частная компания
Основание 1 января 2007[1]
Причина упразднения Приобретена компанией Imagination Technologies в 2010 году
Расположение
Продукция
  • Аппаратное обеспечение для трассировки лучей
  • Графические API
  • Программное обеспечение для рендеринга
Сайт caustic.com

История

Caustic Graphics была основана в 2006 году тремя бывшими инженерами Apple, один из которых разрабатывал графические технологии для iPod пятого поколения и iPhone первого поколения[5]. Первоначальный бизнес-план предполагал создание полноценной системы трассировки лучей в реальном времени для ускорения профессиональной 3D-визуализации, а впоследствии — для развлекательных приложений на ПК и игровых консолях[2].

В 2008 году Caustic Graphics приобрела компанию Splutterfish, разработчика и поставщика программного обеспечения для производственного рендеринга Brazil R/S[6][7].

Позднее Caustic выпустила серию коммерческих программных продуктов под названием Visualiser Plugins, использующих технологию рендеринга Brazil R/S и аппаратное обеспечение Caustic для интерактивного и офлайн-рендеринга с трассировкой лучей в Autodesk 3DSMax[8], Autodesk Maya[9], McNeel Rhino[10] и позднее SketchUp[11].

В 2010 году Caustic Graphics была приобретена компанией Imagination Technologies.[12][13][14]

Технологии

Аппаратное обеспечение

Аппаратное обеспечение для трассировки лучей Caustic не заменяло существующие GPU для растризации, а добавляло ряд новых аппаратных функций для повышения эффективности трассировки лучей:[15]

  1. Сбор когерентности: Возможность для GPU генерировать задачи для себя и группировать их в когерентные группы, запрашивающие общий ресурс, например, адрес данных или программы шейдера в памяти.
  2. Блочные устройства пересечения треугольников: Разработан блок, способный пересекать луч с парой треугольников с общей гранью и возвращать барицентрические координаты и другую информацию о пересечении.
  3. Блочные устройства пересечения ограничивающих объёмов: Разработан блок, способный пересекать луч с ограничивающим параллелепипедом (AABB) и возвращать информацию о пересечении.
  4. Аккумулятор кадрового буфера: Этот блок получает команды от АЛУ для добавления цвета к определённому пикселю в кадровом буфере.
  5. Генератор иерархии сцены: Этот блок читает списки треугольников (или других представлений геометрии сцены) и формирует в памяти ориентированный ациклический граф 3D-объёмов, окружающих геометрию, известный как иерархия ограничивающих объёмов.

Сбор когерентности

Архитектура Caustic параллелила выполнение не по пикселям, а по отдельным лучам. Это позволяло аппаратуре собирать лучи в когерентные группы для выполнения общей операции, например, доступа к адресу памяти внутри структуры ускорения сцены или выполнения общего шейдерного материала.[16][17][18]

Генератор иерархии ограничивающих объёмов

Caustic разработала аппаратный конвейер, способный строить иерархию ограничивающих объёмов (BVH) снизу вверх, напрямую потребляя собранные примитивы после вершинного шейдинга и постепенно формируя граф узлов AABB в DRAM за один проход. Это реализовано с помощью консервативного треугольного вокселизатора, который создаёт пространственные адреса для группировки треугольников и AABB в общих частях 3D-пространства. Для эффективной работы требуется, чтобы приложение подавало треугольники в пространственно когерентном порядке; иначе возникают преждевременные вытеснения из кэша и увеличивается накладная на трассировку лучей. Для длинных и узких треугольников реализована функция ускорения вокселизации, что повышает производительность при рендеринге внеосевой геометрии[18][19].

Этот аппаратный блок, известный как SHG, был реализован в PowerVR 6XT GR6500 от Imagination. В демонстрации компания заявила, что на тестовом кристалле с частотой 600 МГц SHG обеспечивал пропускную способность 100 миллионов динамических треугольников в секунду[15].

CausticGL/OpenRL API

API OpenRL (ранее назывался CausticGL) был основан на OpenGL ES 2.0 и дополнялся рядом функций для поддержки трассировки лучей как в хост-API, так и в GLSL. Caustic поставляла высокопроизводительные реализации API для процессоров Intel с поддержкой SSE и AVX, GPU с поддержкой OpenCL и CUDA для NVIDIA[20].

OpenRL SDK

API OpenRL распространялся в бесплатном SDK с реализациями для процессоров Intel, GPU с поддержкой OpenCL и CUDA, а также аппаратного обеспечения Caustic. Приложения, построенные на OpenRL SDK, автоматически определяли поддерживаемое оборудование и использовали наиболее производительный вариант[21].

SDK включал примеры программ, "Profiler" для отладки приложений с возможностью полного анализа дерева трассировки лучей в пикселе[22] и инструмент "StatsPlotter" для анализа внутренних счётчиков производительности.

PowerVR Brazil SDK

PowerVR Brazil SDK (также известный как Resin) — программный слой, использующий API OpenRL, который позволял реализовывать физически корректный рендеринг, программируемые материалы, динамическую геометрию и независимость от аппаратной платформы. Технология Resin выросла из опыта команды Brazil R/S, приобретённой Caustic Graphics[23].

Продукты

PowerVR Wizard / PLATO

После приобретения компанией Imagination Technologies началась интеграция технологий Caustic по сбору когерентности лучей, блочных тестеров геометрии и нового потокового генератора BVH в архитектуру GPU PowerVR серии 6. Это позволило выполнять GLSL-шейдеры, которые ранее работали только на CPU, непосредственно на кластерах PowerVR, сохраняя преимущества переупорядочивания лучей, реализуемого блоком обхода Caustic[15].

Кроме того, GPU оставался тайловым отложенным растризатором (TBDR) и мог выполнять гибридную растризацию и трассировку лучей, позволяя фрагментным шейдерам треугольников генерировать лучи прямо в конвейер трассировки.

Imagination Technologies изготовила тестовый кристалл PowerVR 6XT GR6500 с трассировкой лучей на плате PCI Express под названием PLATO, который был публично продемонстрирован на различных мероприятиях. Компания заявляла, что по пропускной способности памяти и энергопотреблению этот GPU сопоставим с типичным смартфоном среднего класса 2016 года.

PCIe-карты

Были выпущены две PCIe-карты с ASIC Caustic RT2, реализующими RTU. RT2 — это специализированная микросхема, изготовленная по 90-нм техпроцессу TSMC. Карта R2100 содержала один чип RT2 и 4 ГБ DDR2-памяти, заявленное энергопотребление — 40 Вт. R2500 имела два чипа RT2 и 16 ГБ памяти, энергопотребление — 60 Вт. Карты поступили в продажу в 2013 году[24][25].

PCIe-карта CausticOne имела две FPGA-реализации RTU, работавшие на частоте 100 МГц каждая, с одноканальной DDR2-памятью для хранения сцены и подключением к хосту через 4 линии PCI Express 1.0. Она была продемонстрирована в 2009 году и продавалась ограниченным тиражом в том же году[26][27].

Примечания