diff --git a/libraries/gpu/src/gpu/Buffer.h b/libraries/gpu/src/gpu/Buffer.h index 2079c60605..6b9306ebac 100644 --- a/libraries/gpu/src/gpu/Buffer.h +++ b/libraries/gpu/src/gpu/Buffer.h @@ -384,12 +384,12 @@ public: template class StructBuffer : public gpu::BufferView { public: - static BufferPointer makeBuffer() { - T t; - return std::make_shared(sizeof(T), (const gpu::Byte*) &t); + template static BufferPointer makeBuffer() { + U t; + return std::make_shared(sizeof(U), (const gpu::Byte*) &t, sizeof(U)); } ~StructBuffer() {}; - StructBuffer() : gpu::BufferView(makeBuffer()) {} + StructBuffer() : gpu::BufferView(makeBuffer()) {} T& edit() { diff --git a/libraries/render-utils/src/LightClusters.cpp b/libraries/render-utils/src/LightClusters.cpp index c2559f847b..f569351c55 100644 --- a/libraries/render-utils/src/LightClusters.cpp +++ b/libraries/render-utils/src/LightClusters.cpp @@ -44,6 +44,17 @@ enum LightClusterGridShader_BufferSlot { LIGHT_CLUSTER_GRID_CLUSTER_CONTENT_SLOT, }; +FrustumGrid::FrustumGrid(const FrustumGrid& source) : + frustumNear(source.frustumNear), + rangeNear(source.rangeNear), + rangeFar(source.rangeFar), + frustumFar(source.frustumFar), + dims(source.dims), + spare(source.spare), + eyeToGridProj(source.eyeToGridProj), + worldToEyeMat(source.worldToEyeMat), + eyeToWorldMat(source.eyeToWorldMat) +{} void FrustumGrid::generateGridPlanes(Planes& xPlanes, Planes& yPlanes, Planes& zPlanes) { xPlanes.resize(dims.x + 1); diff --git a/libraries/render-utils/src/LightClusters.h b/libraries/render-utils/src/LightClusters.h index 955e780b23..d27a6e1d92 100644 --- a/libraries/render-utils/src/LightClusters.h +++ b/libraries/render-utils/src/LightClusters.h @@ -33,6 +33,9 @@ public: glm::mat4 worldToEyeMat; glm::mat4 eyeToWorldMat; + FrustumGrid() = default; + FrustumGrid(const FrustumGrid& source); + void updateFrustum(const ViewFrustum& frustum) { frustumNear = frustum.getNearClip(); frustumFar = frustum.getFarClip();