**Instanced-буфер** — это выделенный на GPU **`StructuredBuffer`/`ComputeBuffer`**, куда Вы складываете **поштучные (per-instance) данные** для массированной отрисовки одним материалом и одной командой `DrawMeshInstanced(Indirect)`. - В буфере хранятся, например, `float4x4 localToWorld`, текущий кадр VAT, индекс слоя `Texture2DArray` — всё, что отличается у каждого юнита. - На CPU Вы заполняете массив структур `UnitData` и передаёте его в шейдер через `material.SetBuffer("_UnitData", computeBuffer)`. - В HLSL объявляете `StructuredBuffer<UnitData> _UnitData;` и читаете нужную запись по `unity_InstanceID`. - Поскольку **все экземпляры делят один `.mat`-asset и один shader variant**, Unity выполняет **один SetPass** и (при Indirect) один `DrawIndexedInstanced`, а изменение данных сведено к обновлению буфера — без перерасчёта материалов и без выхода из батча. Такой подход масштабируется на десятки тысяч объектов и снимает ограничение [[MaterialPropertyBlock]] (1023 элемента × 4 KB).