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

GraphicsBuffer.Target.Structured

Описание

GraphicsBuffer может быть использован как структурированный буфер.

В шейдерах HLSL это отображается на StructuredBuffer<T> или RWStructuredBuffer<T>.

Когда вы построите GraphicsBuffer такого типа, значение stride должен соответствовать шагу соответствующего StructuredBuffer тип структуры в вашем коде HLSL.

Значение stride должно также быть кратно 4 и меньше 2048.

Для соответствия требованиям некоторых платформ и избежания проблем с производительностью, stride должен быть кратен 16. Используйте переменные float4 и float4x4, чтобы получить кратность 16, и размещайте внутри них переменные меньшего размера. Не применяйте «выравнивающие» переменные ради кратности 16 — например, переменную float3 для дополнения структуры с единственным float, — поскольку на разных платформах некоторые типы данных могут иметь разный размер.

Если вы используете смесь переменных размеров, расположение данных в структурированном буфере шейдера может отличаться в зависимости от графики API. Это означает, что ComputeShader.SetBuffer или Material.SetBuffer может перезаписать данные или установить переменные на неправильные значения. См. Запись шейдеров для различных графиков APIs для больше информации.

См. документацию Майкрософта HLSL на StructuredBuffer и RWStructuredBuffer.

DirectX 11 не позволяет Index или :: Буферы вершин также должны быть Structured. Для вычисления доступа к данным сетки шейдера с совместимостью DirectX 11, лучше всего использовать Raw.

Дополнительные ресурсы: GraphicsBuffer, ComputeShader, Material.SetBuffer.