From d7791982acafd444b09927419fc685da4e472f35 Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Mon, 29 Jun 2015 15:19:50 -0700 Subject: [PATCH 1/2] Starting stats branch --- libraries/render/src/render/Stats.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 libraries/render/src/render/Stats.h diff --git a/libraries/render/src/render/Stats.h b/libraries/render/src/render/Stats.h new file mode 100644 index 0000000000..5291581d7e --- /dev/null +++ b/libraries/render/src/render/Stats.h @@ -0,0 +1,29 @@ +// +// Stats.h +// render/src/render +// +// Created by Niraj Venkat on 6/29/15. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_render_Stats_h +#define hifi_render_Stats_h + +#include "DrawTask.h" +#include "gpu/Batch.h" +#include + + +namespace render { + class DrawStats { + public: + void run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const ItemIDsBounds& inItems); + + typedef Job::ModelI JobModel; + }; +} + +#endif // hifi_render_Stats_h From aa55de46c2fb26c99e39b21cad930ed7deb75e5f Mon Sep 17 00:00:00 2001 From: Niraj Venkat Date: Tue, 30 Jun 2015 16:09:45 -0700 Subject: [PATCH 2/2] Drawing full bounding box --- libraries/render/src/render/DrawStatus.cpp | 36 +++++----- libraries/render/src/render/Stats.h | 29 --------- .../render/src/render/drawItemBounds.slv | 65 +++++++++++-------- 3 files changed, 55 insertions(+), 75 deletions(-) delete mode 100644 libraries/render/src/render/Stats.h diff --git a/libraries/render/src/render/DrawStatus.cpp b/libraries/render/src/render/DrawStatus.cpp index eaf39b6893..e95a47e872 100644 --- a/libraries/render/src/render/DrawStatus.cpp +++ b/libraries/render/src/render/DrawStatus.cpp @@ -33,23 +33,23 @@ using namespace render; const gpu::PipelinePointer& DrawStatus::getDrawItemBoundsPipeline() { if (!_drawItemBoundsPipeline) { - auto vs = gpu::ShaderPointer(gpu::Shader::createVertex(std::string(drawItemBounds_vert))); - auto ps = gpu::ShaderPointer(gpu::Shader::createPixel(std::string(drawItemBounds_frag))); - gpu::ShaderPointer program = gpu::ShaderPointer(gpu::Shader::createProgram(vs, ps)); - - gpu::Shader::BindingSet slotBindings; - gpu::Shader::makeProgram(*program, slotBindings); - - gpu::StatePointer state = gpu::StatePointer(new gpu::State()); - - state->setDepthTest(true, false, gpu::LESS_EQUAL); - - // Blend on transparent - state->setBlendFunction(true, - gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, - gpu::State::DEST_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ZERO); - - // Good to go add the brand new pipeline + auto vs = gpu::ShaderPointer(gpu::Shader::createVertex(std::string(drawItemBounds_vert))); + auto ps = gpu::ShaderPointer(gpu::Shader::createPixel(std::string(drawItemBounds_frag))); + gpu::ShaderPointer program = gpu::ShaderPointer(gpu::Shader::createProgram(vs, ps)); + + gpu::Shader::BindingSet slotBindings; + gpu::Shader::makeProgram(*program, slotBindings); + + gpu::StatePointer state = gpu::StatePointer(new gpu::State()); + + state->setDepthTest(true, false, gpu::LESS_EQUAL); + + // Blend on transparent + state->setBlendFunction(true, + gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, + gpu::State::DEST_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ZERO); + + // Good to go add the brand new pipeline _drawItemBoundsPipeline.reset(gpu::Pipeline::create(program, state)); } return _drawItemBoundsPipeline; @@ -88,7 +88,7 @@ void DrawStatus::run(const SceneContextPointer& sceneContext, const RenderContex } batch.setModelTransform(model); - batch.draw(gpu::LINE_STRIP, 13, 0); + batch.draw(gpu::LINES, 24, 0); } } diff --git a/libraries/render/src/render/Stats.h b/libraries/render/src/render/Stats.h deleted file mode 100644 index 5291581d7e..0000000000 --- a/libraries/render/src/render/Stats.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// Stats.h -// render/src/render -// -// Created by Niraj Venkat on 6/29/15. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_render_Stats_h -#define hifi_render_Stats_h - -#include "DrawTask.h" -#include "gpu/Batch.h" -#include - - -namespace render { - class DrawStats { - public: - void run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const ItemIDsBounds& inItems); - - typedef Job::ModelI JobModel; - }; -} - -#endif // hifi_render_Stats_h diff --git a/libraries/render/src/render/drawItemBounds.slv b/libraries/render/src/render/drawItemBounds.slv index e1193a9874..74c4fe3ab5 100644 --- a/libraries/render/src/render/drawItemBounds.slv +++ b/libraries/render/src/render/drawItemBounds.slv @@ -1,38 +1,47 @@ -<@include gpu/Config.slh@> -<$VERSION_HEADER$> -// Generated on <$_SCRIBE_DATE$> -// -// drawItemBounds.slv -// vertex shader -// -// Created by Sam Gateau on 6/29/2015. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -<@include gpu/Transform.slh@> - -<$declareStandardTransform()$> - +<@include gpu/Config.slh@> +<$VERSION_HEADER$> +// Generated on <$_SCRIBE_DATE$> +// +// drawItemBounds.slv +// vertex shader +// +// Created by Sam Gateau on 6/29/2015. +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +<@include gpu/Transform.slh@> + +<$declareStandardTransform()$> + void main(void) { - const vec4 UNIT_BOX[13] = vec4[13]( + const vec4 UNIT_BOX[8] = vec4[8]( vec4(0.0, 0.0, 0.0, 1.0), vec4(1.0, 0.0, 0.0, 1.0), + vec4(0.0, 1.0, 0.0, 1.0), vec4(1.0, 1.0, 0.0, 1.0), - vec4(0.0, 1.0, 0.0, 1.0), - vec4(0.0, 0.0, 0.0, 1.0), - vec4(1.0, 0.0, 0.0, 1.0), + vec4(0.0, 0.0, 1.0, 1.0), vec4(1.0, 0.0, 1.0, 1.0), - vec4(0.0, 0.0, 1.0, 1.0), - vec4(0.0, 0.0, 0.0, 1.0), - vec4(0.0, 1.0, 0.0, 1.0), vec4(0.0, 1.0, 1.0, 1.0), - vec4(0.0, 0.0, 1.0, 1.0), - vec4(0.0, 0.0, 0.0, 1.0) + vec4(1.0, 1.0, 1.0, 1.0) ); - vec4 pos = UNIT_BOX[gl_VertexID]; + const int UNIT_BOX_LINE_INDICES[24] = int[24]( + 0, 1, + 1, 3, + 3, 2, + 2, 0, + 4, 5, + 5, 7, + 7, 6, + 6, 4, + 2, 6, + 3, 7, + 0, 4, + 1, 5 + ); + vec4 pos = UNIT_BOX[UNIT_BOX_LINE_INDICES[gl_VertexID]]; // standard transform TransformCamera cam = getTransformCamera();