Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

Mesh.GetBlendShapeBuffer

Declaration

public GraphicsBuffer GetBlendShapeBuffer(Rendering.BlendShapeBufferLayout layout);
public GraphicsBuffer GetBlendShapeBuffer();

Параметры

Параметр Описание
макет Какой буфер будет доступен. Значение по умолчанию — BlendShapeBufferLayout.PerShape.

Возвращаемое значение

GraphicsBuffer Данные вершины формы смешивания как GraphicsBuffer.

Описание

Получает GraphicsBuffer, который предоставляет прямой доступ для чтения и записи к GPU данных вершины формы смешивания.

Буфер, который возвращает эта функция, называется буфером смешивания форм. Он содержит вершины смешивания форм, которые GPU использует для деформации сетки в формы смешивания.

Существует два буфера смешивания форм, к которым можно получить доступ. Они используют разные шаблоны расположения и содержат немного разные данные. Дополнительную информацию см. в BlendShapeBufferLayout.PerShape и BlendShapeBufferLayout.PerVertex. Для доступа к этому буферу требуется поддержка вычисления шейдера.

Версия этой функции, которая не принимает параметров, эквивалентна вызову с BlendShapeBufferLayout.PerShape в качестве аргумента.

Mesh.isReadable не обязательно должна быть true для доступа к этим данным.

После использования этого буфера его следует удалить.

using UnityEngine;
using UnityEngine.Rendering;

public class Example : MonoBehaviour { public Mesh mesh; public ComputeShader computeShader;

void Start() { // Fetch GraphicsBuffer with Blend Shape data, ordered per shape, from the mesh var perShapeBuffer = mesh.GetBlendShapeBuffer(BlendShapeBufferLayout.PerShape);

// Fetch GraphicsBuffer with Blend Shape data, ordered per vertex, from the mesh var perVertexBuffer = mesh.GetBlendShapeBuffer(BlendShapeBufferLayout.PerVertex);

// Set Blend Shape data buffers to a compute shader computeShader.SetBuffer(0, "PerShape_BlendShapeBuffer", perShapeBuffer); computeShader.SetBuffer(0, "PerVertex_BlendShapeBuffer", perVertexBuffer);

// Dispatch compute shader and access Blend Shapes on the GPU, both per vertex and per shape computeShader.Dispatch(0, 64, 1, 1);

// Dispose buffers to avoid leaking memory perShapeBuffer.Dispose(); perVertexBuffer.Dispose(); } }

Дополнительные ресурсы: Формы смеси, BlendShapeBufferLayout, Mesh.GetBoneWeightBuffer.