Caustic Graphics
Caustic Graphics — американская компания в области компьютерной графики и безфабричного производства полупроводников, разрабатывавшая технологии для вывода трассированной в реальном времени графики на массовый рынок.[2][3][4]
Название компании происходит от оптического эффекта — каустики, возникающего при концентрации света на поверхности в результате фокусировки через отражение или преломление.
Caustic Graphics была основана на предпосылке, что создание реалистичной 3D-графики станет проще, если аппаратное обеспечение графического процессора (GPU) будет столь же эффективно обрабатывать лучи, как и вершины или фрагменты при использовании существующих методов растризации[3].
Что важно знать
| Caustic Graphics | |
|---|---|
| Тип | Частная компания |
| Основание | 1 января 2007[1] |
| Причина упразднения | Приобретена компанией Imagination Technologies в 2010 году |
| Расположение | |
| Продукция |
|
| Сайт | 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]
- Сбор когерентности: Возможность для GPU генерировать задачи для себя и группировать их в когерентные группы, запрашивающие общий ресурс, например, адрес данных или программы шейдера в памяти.
- Блочные устройства пересечения треугольников: Разработан блок, способный пересекать луч с парой треугольников с общей гранью и возвращать барицентрические координаты и другую информацию о пересечении.
- Блочные устройства пересечения ограничивающих объёмов: Разработан блок, способный пересекать луч с ограничивающим параллелепипедом (AABB) и возвращать информацию о пересечении.
- Аккумулятор кадрового буфера: Этот блок получает команды от АЛУ для добавления цвета к определённому пикселю в кадровом буфере.
- Генератор иерархии сцены: Этот блок читает списки треугольников (или других представлений геометрии сцены) и формирует в памяти ориентированный ациклический граф 3D-объёмов, окружающих геометрию, известный как иерархия ограничивающих объёмов.
Архитектура Caustic параллелила выполнение не по пикселям, а по отдельным лучам. Это позволяло аппаратуре собирать лучи в когерентные группы для выполнения общей операции, например, доступа к адресу памяти внутри структуры ускорения сцены или выполнения общего шейдерного материала.[16][17][18]
Caustic разработала аппаратный конвейер, способный строить иерархию ограничивающих объёмов (BVH) снизу вверх, напрямую потребляя собранные примитивы после вершинного шейдинга и постепенно формируя граф узлов AABB в DRAM за один проход. Это реализовано с помощью консервативного треугольного вокселизатора, который создаёт пространственные адреса для группировки треугольников и AABB в общих частях 3D-пространства. Для эффективной работы требуется, чтобы приложение подавало треугольники в пространственно когерентном порядке; иначе возникают преждевременные вытеснения из кэша и увеличивается накладная на трассировку лучей. Для длинных и узких треугольников реализована функция ускорения вокселизации, что повышает производительность при рендеринге внеосевой геометрии[18][19].
Этот аппаратный блок, известный как SHG, был реализован в PowerVR 6XT GR6500 от Imagination. В демонстрации компания заявила, что на тестовом кристалле с частотой 600 МГц SHG обеспечивал пропускную способность 100 миллионов динамических треугольников в секунду[15].
API OpenRL (ранее назывался CausticGL) был основан на OpenGL ES 2.0 и дополнялся рядом функций для поддержки трассировки лучей как в хост-API, так и в GLSL. Caustic поставляла высокопроизводительные реализации API для процессоров Intel с поддержкой SSE и AVX, GPU с поддержкой OpenCL и CUDA для NVIDIA[20].
API OpenRL распространялся в бесплатном SDK с реализациями для процессоров Intel, GPU с поддержкой OpenCL и CUDA, а также аппаратного обеспечения Caustic. Приложения, построенные на OpenRL SDK, автоматически определяли поддерживаемое оборудование и использовали наиболее производительный вариант[21].
SDK включал примеры программ, "Profiler" для отладки приложений с возможностью полного анализа дерева трассировки лучей в пикселе[22] и инструмент "StatsPlotter" для анализа внутренних счётчиков производительности.
PowerVR Brazil SDK (также известный как Resin) — программный слой, использующий API OpenRL, который позволял реализовывать физически корректный рендеринг, программируемые материалы, динамическую геометрию и независимость от аппаратной платформы. Технология Resin выросла из опыта команды Brazil R/S, приобретённой Caustic Graphics[23].
Продукты
После приобретения компанией 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-карты с 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].


