Quick answer: Mesh.SetVertexBufferParams must declare attribute. Shader Graph reads via UV2/UV3/Color matching the slot.

Custom mesh with per-vertex weight in TexCoord4. Shader Graph UV4 input reads zeros. Vertex buffer params didn't include UV4.

The Fix

var mesh = new Mesh();
mesh.SetVertexBufferParams(vertexCount,
    new VertexAttributeDescriptor(VertexAttribute.Position),
    new VertexAttributeDescriptor(VertexAttribute.Normal),
    new VertexAttributeDescriptor(VertexAttribute.TexCoord0),
    new VertexAttributeDescriptor(VertexAttribute.TexCoord4, VertexAttributeFormat.Float32, 4)
);
mesh.SetVertexBufferData(vertexData, 0, 0, vertexCount);

// Shader Graph: UV4 input → pipe into Vertex Position offset / fragment

Buffer layout and Shader Graph slot must agree. UV4..7 are conventional homes for custom per-vertex floats.

Verifying

Per-vertex weight drives shader (e.g. emission). Without descriptor: zero.

“Buffer says UV4. Graph reads UV4. Data flows.”

Related Issues

For Shader Graph vertex offset, see vertex position. For SubGraph property, see SubGraph.

Match buffer to graph slot.