GetBoneWeightBuffer(SkinWeights)
Retrieves a GraphicsBuffer that provides direct read and write access to GPU bone weight data.
Read time 1 minuteLast updated 4 days ago
Definition
- Type: Method
- Namespace: UnityEngine
- Assembly: UnityEngine.CoreModule
public GraphicsBuffer GetBoneWeightBuffer(SkinWeights layout)
Parameters
Which buffer to access, based on maximum bones per vertex.
Returns
Type | Description |
|---|---|
| GraphicsBuffer | The bone weight data as a GraphicsBuffer. |
Remarks
The buffer that this function returns is called the bone weight buffer. It contains indices and weights to use for skinning.
To know which buffer the mesh is using, call Mesh.skinWeightBufferLayout.
It is possible to access the buffer with a lower SkinWeigts setting, for instance a mesh with SkinWeights.Unlimited can be accessed with SkinWeights.FourBones and SkinWeights.TwoBones. However, a mesh with SkinWeights.FourBones can not be accessed using SkinWeights.Unlimited.
Mesh.isReadable does not need to be to access this data.
trueAfter using this buffer, you should dispose of it.
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(); }}
Additional Resources: skinWeightsBufferLayout, Mesh.GetBlendShapeBuffer