Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Термины / Geometry Instancing

Geometry Instancing

Какой-либо способ отрисовки большого количества динамических объектов при помощи всего лишь нескольких (обычно это число сводится к минимуму, а в случае Hardware Geometry Instancing -- к одному) вызовов драйвера (к примеру вызовов: DIP - Direct3D или DrawElements – OpenGL).

Существуют разные типы Geometry Instancing. Самые популярные из них:

Shader Constant Geometry Instancing (SCGI) - Принцип работы основывается на хранение n - одинаковых объектов в одном вершинном буфере (Vertex Buffer) и манипуляции позиции, размера, цвета, вращения с помощью констант в шейдере.  Ключевое правило в данной методике - в каждой вершине должна содержатся информация, по которой шейдер может определить к какому объекту она (вершина) относится, и какие константы нужно применить. Минусы данного метода  состоят в том, что при большом количестве вершин, шейдер становится слишком "тяжким" для видео карты, и скорость работы приложения сильно падает. SCGI обычно используется в простых случаях - при этом количество вершин не превосходит 200-300.

Требования к системе: Видео карта с поддержкой вершинных шейдеров (любая версия).

API: Direct3D, OpenGL

Hardware Geometry Instancing (HWGI или HWI) - На данный момент существует только в Direct3D (В OpenGL - HWGI нету). Принцип работы основывается на выводе объектов двумя потоками вершинных буферов (Поток 1 - сам объект, только один раз. Поток 2 - содержит n- ячеек, в каждой из которых хранится информация о позиции,  размере, цвете, вращение объекта). Эти два потока посылаются на конвейер с помощью  Instancing API (HWIA - Hardware Instancing API). В конце концов объект выводится n-раз, с помощью одного вызова драйвера, где n- длина вершинного буфера в потоке номер 2.

В последнее время HWGI приобрёл большую популярность, в связи с переходом на новое поколение видео карт (nVidia GeForce 7xxx и ATI x1xxx).

Требования к системе: Видео карта с поддержкой вершинных шейдеров 3.0 (nVidia) или 2.0a (ATI).

API: Direct3D

Подробнее по теме: Instancing, Pseudo Instacing (nVidia SDK 9.0), Instancing (DirectX SDK 9.0c April)

Ссылки:
MSDN Instancing Sample
http://humus.name/index.php?page=3D&ID=52
http://www.opengl.org/registry/specs/EXT/draw_instanced.txt

Что такое Geometry Instancing?

20 августа 2005


Обновление: 29 сентября 2011

2001—2018 © GameDev.ru — Разработка игр