Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Graphics.DrawMeshInstanced

Объявление

public static void DrawMeshInstanced(Mesh mesh, int submeshIndex, Material material, Matrix4x4[] matrices, int count = matrices.Length, MaterialPropertyBlock properties = null, Rendering.ShadowCastingMode castShadows = ShadowCastingMode.On, bool receiveShadows = true, int layer = 0, Camera camera = null, Rendering.LightProbeUsage lightProbeUsage = LightProbeUsage.BlendProbes, LightProbeProxyVolume lightProbeProxyVolume = null);

public static void DrawMeshInstanced(Mesh mesh, int submeshIndex, Material material, List matrices, MaterialPropertyBlock properties = null, Rendering.ShadowCastingMode castShadows = ShadowCastingMode.On, bool receiveShadows = true, int layer = 0, Camera camera = null, Rendering.LightProbeUsage lightProbeUsage = LightProbeUsage.BlendProbes, LightProbeProxyVolume lightProbeProxyVolume = null);

Параметры

mesh Сетка для рисования.
submeshIndex Какое подмножество сетки рисовать. Это относится только к сеткам, состоящим из нескольких материалов.
material Материал для использования.
matrices Массив матриц преобразования объектов.
count Количество отрисовываемых экземпляров.
properties Дополнительные свойства материала для применения. См. MaterialPropertyBlock.
castShadows Определяет, должны ли сетки отбрасывать тени.
receiveShadows Определяет, должны ли сетки получать тени.
layer Слой для использования.
camera Если null (по умолчанию), сетка будет отрисовываться во всех камерах. В противном случае он будет отрисовываться только в данной камере.
lightProbeUsage LightProbeUsage для экземпляров.

Описание

Отрисовывает одну и ту же сетку несколько раз, используя экземпляр GPU.

Подобно Graphics.DrawMesh, эта функция рисует сетки для одного кадра без дополнительных затрат на создание ненужных игровых объектов.

Используйте эту функцию в ситуациях, когда вы хотите нарисовать одну и ту же сетку определенное количество раз с помощью экземпляра шейдера. Unity отбирает и сортирует экземпляры Meshes как группу. Он создает выровненную по оси ограничивающую рамку, содержащую все сетки, вычисляет центральную точку, а затем использует эту информацию для отбраковки и сортировки экземпляров сетки. Обратите внимание, что после отбраковки и сортировки объединенных экземпляров Unity больше не отбирает отдельные экземпляры по усеченной видимости или запеченным окклюдерам. Он также не сортирует отдельные экземпляры по прозрачности или эффективности глубины.

Матрица преобразования каждого экземпляра сетки должна быть упакована в массив matrix. Вы можете указать количество отрисовываемых экземпляров или по умолчанию это длина массива matrix. Другие данные для каждого экземпляра, если это требуется шейдеру, должны быть предоставлены путем создания массивов в аргументе MaterialPropertyBlock с использованием SetFloatArray, SetVectorArray и SetMatrixArray.

Чтобы визуализировать экземпляры со световыми зондами, предоставьте данные светового зонда через MaterialPropertyBlock и укажите lightProbeUsage с помощью LightProbeUsage.CustomProvided. . Подробности см. в разделе LightProbes.CalculateInterpolatedLightAndOcclusionProbes.

Примечание. Одновременно можно рисовать не более 1023 экземпляров.

InvalidOperationException будет сгенерировано, если для материала не установлено значение true для параметра Material.enableInstancing или текущая платформа не поддерживает этот API (т. е. недоступно). См. раздел SystemInfo.supportsInstancing.

Смотрите так же: DrawMesh.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3