From 3360c5a968ab8f2df429eec039850aaafaea6f29 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 27 Feb 2018 18:46:12 -0800 Subject: [PATCH] Debugging the ssbo bug --- interface/src/workload/GameWorkloadRenderer.cpp | 13 +++++++------ libraries/render-utils/src/drawWorkloadProxy.slv | 14 ++++++++++---- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/interface/src/workload/GameWorkloadRenderer.cpp b/interface/src/workload/GameWorkloadRenderer.cpp index b73c6fe309..e3e58139df 100644 --- a/interface/src/workload/GameWorkloadRenderer.cpp +++ b/interface/src/workload/GameWorkloadRenderer.cpp @@ -94,7 +94,7 @@ const gpu::PipelinePointer GameWorkloadRenderItem::getPipeline() { gpu::ShaderPointer program = gpu::Shader::createProgram(vs, ps); gpu::Shader::BindingSet slotBindings; - slotBindings.insert(gpu::Shader::Binding("ssbo0Buffer", 0)); + slotBindings.insert(gpu::Shader::Binding("ssbo0Buffer", 11)); gpu::Shader::makeProgram(*program, slotBindings); auto state = std::make_shared(); @@ -121,17 +121,18 @@ void GameWorkloadRenderItem::render(RenderArgs* args) { batch.setProjectionTransform(projMat); batch.setViewTransform(viewMat); batch.setModelTransform(Transform()); - + // Bind program batch.setPipeline(getPipeline()); - batch.setResourceBuffer(0, _allProxiesBuffer); + // batch.setResourceBuffer(11, _allProxiesBuffer); + batch.setUniformBuffer(11, _allProxiesBuffer); - static const int NUM_VERTICES_PER_QUAD = 6; + static const int NUM_VERTICES_PER_QUAD = 3; batch.draw(gpu::TRIANGLES, NUM_VERTICES_PER_QUAD * _numAllProxies, 0); - batch.setResourceBuffer(0, nullptr); - + // batch.setResourceBuffer(11, nullptr); + batch.setUniformBuffer(11, nullptr); /* auto geometryCache = DependencyManager::get(); diff --git a/libraries/render-utils/src/drawWorkloadProxy.slv b/libraries/render-utils/src/drawWorkloadProxy.slv index a5b7f371f4..db0f04ce63 100644 --- a/libraries/render-utils/src/drawWorkloadProxy.slv +++ b/libraries/render-utils/src/drawWorkloadProxy.slv @@ -25,7 +25,7 @@ struct WorkloadProxy { vec4 sphere; vec4 region; }; - +/* #if defined(GPU_GL410) uniform samplerBuffer ssbo0Buffer; WorkloadProxy getWorkloadProxy(int i) { @@ -44,7 +44,13 @@ WorkloadProxy getWorkloadProxy(int i) { return proxy; } #endif - +*/ +uniform ssbo0Buffer { + WorkloadProxy proxies[1024]; +}; +WorkloadProxy getWorkloadProxy(int index) { + return proxies[index]; +} out vec4 varColor; @@ -84,8 +90,8 @@ void main(void) { 2, 1, 3 ); - int proxyID = gl_VertexID / 6; - int vertexID = gl_VertexID - proxyID * 6; + int proxyID = gl_VertexID / 3; + int vertexID = gl_VertexID - proxyID * 3; vec4 cubeVec = UNIT_BOX[UNIT_BOX_LINE_INDICES[vertexID]];