hairparticle raytracing buffer alignment fix

This commit is contained in:
Turánszki János
2023-11-08 20:09:37 +01:00
parent 5287c0b205
commit 46d85ac496
3 changed files with 5 additions and 7 deletions
@@ -18,7 +18,7 @@ RWBuffer<float4> vertexBuffer_POS : register(u1);
RWBuffer<float4> vertexBuffer_UVS : register(u2);
RWBuffer<uint> culledIndexBuffer : register(u3);
RWStructuredBuffer<IndirectDrawArgsIndexedInstanced> indirectBuffer : register(u4);
RWStructuredBuffer<float3> vertexBuffer_POS_RT : register(u5);
RWByteAddressBuffer vertexBuffer_POS_RT : register(u5);
[numthreads(THREADCOUNT_SIMULATEHAIR, 1, 1)]
void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint groupIndex : SV_GroupIndex)
@@ -277,7 +277,7 @@ void main(uint3 DTid : SV_DispatchThreadID, uint3 Gid : SV_GroupID, uint groupIn
{
position = 0; // We can only zero out for raytracing geometry to keep correct prevpos swapping motion vectors!
}
vertexBuffer_POS_RT[v0 + vertexID] = position;
vertexBuffer_POS_RT.Store<float3>((v0 + vertexID) * sizeof(float3), position);
}
// Frustum culling:
+2 -4
View File
@@ -114,7 +114,7 @@ namespace wi
AlignTo(vb_pos[1].size, alignment) +
AlignTo(vb_uvs.size, alignment) +
AlignTo(ib_culled.size, alignment) +
AlignTo(AlignTo(vb_pos_raytracing.size, alignment), sizeof(float3))
AlignTo(vb_pos_raytracing.size, alignment)
;
device->CreateBuffer(&bd, nullptr, &generalBuffer);
device->SetName(&generalBuffer, "HairParticleSystem::generalBuffer");
@@ -174,11 +174,9 @@ namespace wi
ib_culled.descriptor_uav = device->GetDescriptorIndex(&generalBuffer, SubresourceType::UAV, ib_culled.subresource_uav);
buffer_offset += ib_culled.size;
constexpr uint32_t vb_pos_raytracing_stride = sizeof(float3);
buffer_offset = AlignTo(buffer_offset, alignment);
buffer_offset = AlignTo(buffer_offset, sizeof(float3));
vb_pos_raytracing.offset = buffer_offset;
vb_pos_raytracing.subresource_uav = device->CreateSubresource(&generalBuffer, SubresourceType::UAV, vb_pos_raytracing.offset, vb_pos_raytracing.size, nullptr, &vb_pos_raytracing_stride);
vb_pos_raytracing.subresource_uav = device->CreateSubresource(&generalBuffer, SubresourceType::UAV, vb_pos_raytracing.offset, vb_pos_raytracing.size);
vb_pos_raytracing.descriptor_uav = device->GetDescriptorIndex(&generalBuffer, SubresourceType::UAV, vb_pos_raytracing.subresource_uav);
buffer_offset += vb_pos_raytracing.size;
+1 -1
View File
@@ -9,7 +9,7 @@ namespace wi::version
// minor features, major updates, breaking compatibility changes
const int minor = 71;
// minor bug fixes, alterations, refactors, updates
const int revision = 341;
const int revision = 342;
const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);