From 8c561eaa44b47dcdacc7461e94c3f4dcc082099d Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 4 Oct 2016 18:19:42 -0700 Subject: [PATCH] trying to whipe these buffer cleans but doesn;t seems to make a different in release, it is working clena in debug ... keep on looking --- .../render-utils/src/LightClusterGrid.slh | 1 - libraries/render-utils/src/LightClusters.cpp | 20 +++++++++++-------- .../render-utils/src/local_lights_shading.slf | 1 - 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libraries/render-utils/src/LightClusterGrid.slh b/libraries/render-utils/src/LightClusterGrid.slh index 80203ef49b..24d4a8fbc8 100644 --- a/libraries/render-utils/src/LightClusterGrid.slh +++ b/libraries/render-utils/src/LightClusterGrid.slh @@ -46,7 +46,6 @@ float projection_getFar(mat4 projection) { // end of hybrid include - <@if GLPROFILE == MAC_GL @> #define GRID_NUM_ELEMENTS 4096 #define GRID_INDEX_TYPE ivec4 diff --git a/libraries/render-utils/src/LightClusters.cpp b/libraries/render-utils/src/LightClusters.cpp index d3c7e40d48..a29357f493 100644 --- a/libraries/render-utils/src/LightClusters.cpp +++ b/libraries/render-utils/src/LightClusters.cpp @@ -82,8 +82,8 @@ const glm::uvec4 LightClusters::MAX_GRID_DIMENSIONS { 32, 32, 31, 16384 }; LightClusters::LightClusters() : _lightIndicesBuffer(std::make_shared()), - _clusterGridBuffer(std::make_shared(), gpu::Element::INDEX_INT32), - _clusterContentBuffer(std::make_shared(), gpu::Element::INDEX_INT32) { + _clusterGridBuffer(/*std::make_shared(), */gpu::Element::INDEX_INT32), + _clusterContentBuffer(/*std::make_shared(), */gpu::Element::INDEX_INT32) { auto dims = _frustumGridBuffer.edit().dims; _frustumGridBuffer.edit().dims = ivec3(0); // make sure we go through the full reset of the dimensionts ion the setDImensions call setDimensions(dims, MAX_GRID_DIMENSIONS.w); @@ -113,14 +113,19 @@ void LightClusters::setDimensions(glm::uvec3 gridDims, uint32_t listBudget) { _numClusters = numClusters; _clusterGrid.clear(); _clusterGrid.resize(_numClusters, EMPTY_CLUSTER); - _clusterGridBuffer._size = _clusterGridBuffer._buffer->resize(_numClusters * sizeof(uint32_t)); + // _clusterGridBuffer._size = _clusterGridBuffer._buffer->resize(_numClusters * sizeof(uint32_t)); + _clusterGridBuffer._size = (_numClusters * sizeof(uint32_t)); + _clusterGridBuffer._buffer = std::make_shared(_clusterGridBuffer._size, (gpu::Byte*) _clusterGrid.data()/*, _clusterGridBuffer._size*/); } auto configListBudget = std::min(MAX_GRID_DIMENSIONS.w, listBudget); if (configListBudget != _clusterContentBuffer.getNumElements()) { _clusterContent.clear(); _clusterContent.resize(configListBudget, INVALID_LIGHT); - _clusterContentBuffer._size = _clusterContentBuffer._buffer->resize(configListBudget * sizeof(LightIndex)); + // _clusterContentBuffer._size = _clusterContentBuffer._buffer->resize(configListBudget * sizeof(LightIndex)); + _clusterContentBuffer._size = (configListBudget * sizeof(LightIndex)); + // _clusterContentBuffer._buffer->setData(_clusterContentBuffer._size, (gpu::Byte*) _clusterContent.data()); + _clusterContentBuffer._buffer = std::make_shared(_clusterContentBuffer._size, (gpu::Byte*) _clusterContent.data()/*, _clusterContentBuffer._size*/); } } @@ -287,8 +292,10 @@ void LightClusters::updateClusters() { std::vector< std::vector< LightIndex > > clusterGridPoint(_numClusters); std::vector< std::vector< LightIndex > > clusterGridSpot(_numClusters); + _clusterGrid.clear(); _clusterGrid.resize(_numClusters, EMPTY_CLUSTER); uint32_t maxNumIndices = (uint32_t) _clusterContent.size(); + _clusterContent.clear(); _clusterContent.resize(maxNumIndices, INVALID_LIGHT); auto theFrustumGrid(_frustumGridBuffer.get()); @@ -444,10 +451,7 @@ void LightClusters::updateClusters() { // update the buffers _clusterGridBuffer._buffer->setData(_clusterGridBuffer._size, (gpu::Byte*) _clusterGrid.data()); - //_clusterGridBuffer._buffer->setSubData(0, _clusterGridBuffer._size, (gpu::Byte*) _clusterGrid.data()); - _clusterContentBuffer._buffer->setData(indexOffset * sizeof(LightIndex), (gpu::Byte*) _clusterContent.data()); - - // _clusterContentBuffer._buffer->setSubData(0, indexOffset * sizeof(LightIndex), (gpu::Byte*) _clusterContent.data()); + _clusterContentBuffer._buffer->setSubData(0, indexOffset * sizeof(LightIndex), (gpu::Byte*) _clusterContent.data()); } diff --git a/libraries/render-utils/src/local_lights_shading.slf b/libraries/render-utils/src/local_lights_shading.slf index 1522239e7f..c7d49de979 100644 --- a/libraries/render-utils/src/local_lights_shading.slf +++ b/libraries/render-utils/src/local_lights_shading.slf @@ -31,7 +31,6 @@ <@include LightClusterGrid.slh@> - in vec2 _texCoord0; out vec4 _fragColor;