diff --git a/WickedEngine/shaders/hairparticle_simulateCS.hlsl b/WickedEngine/shaders/hairparticle_simulateCS.hlsl index 071c83f80..c81c79f37 100644 --- a/WickedEngine/shaders/hairparticle_simulateCS.hlsl +++ b/WickedEngine/shaders/hairparticle_simulateCS.hlsl @@ -18,7 +18,7 @@ RWBuffer vertexBuffer_POS : register(u1); RWBuffer vertexBuffer_UVS : register(u2); RWBuffer culledIndexBuffer : register(u3); RWStructuredBuffer indirectBuffer : register(u4); -RWStructuredBuffer 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((v0 + vertexID) * sizeof(float3), position); } // Frustum culling: diff --git a/WickedEngine/wiHairParticle.cpp b/WickedEngine/wiHairParticle.cpp index 5f0b6ea8e..096eff1f1 100644 --- a/WickedEngine/wiHairParticle.cpp +++ b/WickedEngine/wiHairParticle.cpp @@ -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; diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index 424724abb..e7c29958e 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -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);