layout | 根据每个顶点最大骨骼数访问哪个缓冲区。 |
GraphicsBuffer 骨骼权重数据作为 GraphicsBuffer。
检索一个 GraphicsBuffer,它提供对 GPU 骨骼权重数据的直接读写访问。
此函数返回的缓冲区称为骨骼权重缓冲区。它包含用于蒙皮的索引和权重。
要了解网格正在使用哪个缓冲区,请调用 skinWeightBufferLayout。
可以使用较低的 SkinWeigts 设置访问缓冲区,例如,可以使用 SkinWeights.FourBones 和 SkinWeights.TwoBones 访问具有 SkinWeights.Unlimited 的网格。但是,无法使用 SkinWeights.Unlimited 访问具有 SkinWeights.FourBones 的网格。
Mesh.isReadable 不需要为 true
才能访问此数据。
使用此缓冲区后,应将其释放。
using UnityEngine;
public class Example : MonoBehaviour { public Mesh mesh; public ComputeShader computeShader;
void Start() { // Fetch GraphicsBuffer with Bone Weight data var boneWeightBuffer = mesh.GetBoneWeightBuffer(mesh.skinWeightBufferLayout);
// Set Bone Weight data to a compute shader computeShader.SetBuffer(0, "BoneWeightBuffer", boneWeightBuffer);
// Dispatch compute shader and access Bone Weight data on the GPU computeShader.Dispatch(0, 64, 1, 1);
// Dispose of GraphicsBuffer to avoid leaking memory boneWeightBuffer .Dispose(); }
}
其他资源:Mesh.skinWeightsBufferLayout,Mesh.GetBlendShapeBuffer