Я кодировал алгоритм трассировки лучей, используя SharpDX, и все работает хорошо, используя RWStructuredBuffer в качестве выходного буфера.
Теперь я хотел бы использовать добавляемый структурированный буфер вместо чтения и записи. Но я не могу найти в сети полезное руководство. Я изменил флаг добавления в uavDescriptor, но думаю, что-то пропустил!
BufferDescription bufferDescription = new BufferDescription() {
BindFlags = BindFlags.UnorderedAccess | BindFlags.ShaderResource,
Usage = ResourceUsage.Default,
CpuAccessFlags = CpuAccessFlags.None,
OptionFlags = ResourceOptionFlags.BufferStructured,
StructureByteStride = Utilities.SizeOf<T>(),
SizeInBytes = Utilities.SizeOf<T>() * count
};
buffer = new Buffer(Device, bufferDescription);
UnorderedAccessViewDescription uavDescription = new UnorderedAccessViewDescription() {
Buffer = new UnorderedAccessViewDescription.BufferResource() { FirstElement = 0, Flags = UnorderedAccessViewBufferFlags.Append, ElementCount = count },
Format = SharpDX.DXGI.Format.Unknown,
Dimension = UnorderedAccessViewDimension.Buffer
};