diff --git a/libraries/render/src/render/Shape.cpp b/libraries/render/src/render/Shape.cpp index faa562e28e..2177a71138 100644 --- a/libraries/render/src/render/Shape.cpp +++ b/libraries/render/src/render/Shape.cpp @@ -30,7 +30,7 @@ const Shape::PipelinePointer Shape::_pickPipeline(RenderArgs* args, const Key& k return PipelinePointer(nullptr); } - PipelinePointer shapePipeline(&(pipelineIterator->second)); + PipelinePointer shapePipeline(pipelineIterator->second); auto& batch = args->_batch; // Setup the one pipeline (to rule them all) @@ -86,7 +86,7 @@ void Shape::PipelineLib::addPipeline(Key key, gpu::ShaderPointer& vertexShader, // Add the brand new pipeline and cache its location in the lib auto pipeline = gpu::Pipeline::create(program, state); - insert(value_type(key, Pipeline(pipeline, locations))); + insert(value_type(key, std::make_shared(pipeline, locations))); // Add a wireframe version if (!key.isWireFrame()) { @@ -96,6 +96,6 @@ void Shape::PipelineLib::addPipeline(Key key, gpu::ShaderPointer& vertexShader, wireframeState->setFillMode(gpu::State::FILL_LINE); auto wireframePipeline = gpu::Pipeline::create(program, wireframeState); - insert(value_type(wireframeKey, Pipeline(wireframePipeline, locations))); + insert(value_type(wireframeKey, std::make_shared(wireframePipeline, locations))); } } diff --git a/libraries/render/src/render/Shape.h b/libraries/render/src/render/Shape.h index 56bfa1e036..1613904fd7 100644 --- a/libraries/render/src/render/Shape.h +++ b/libraries/render/src/render/Shape.h @@ -95,18 +95,22 @@ public: }; inline QDebug operator<<(QDebug debug, const ShapeKey& renderKey) { - debug << "[ShapeKey:" - << "hasLightmap:" << renderKey.hasLightmap() - << "hasTangents:" << renderKey.hasTangents() - << "hasSpecular:" << renderKey.hasSpecular() - << "hasEmissive:" << renderKey.hasEmissive() - << "isTranslucent:" << renderKey.isTranslucent() - << "isSkinned:" << renderKey.isSkinned() - << "isStereo:" << renderKey.isStereo() - << "isDepthOnly:" << renderKey.isDepthOnly() - << "isShadow:" << renderKey.isShadow() - << "isWireFrame:" << renderKey.isWireFrame() - << "]"; + if (renderKey.isValid()) { + debug << "[ShapeKey:" + << "hasLightmap:" << renderKey.hasLightmap() + << "hasTangents:" << renderKey.hasTangents() + << "hasSpecular:" << renderKey.hasSpecular() + << "hasEmissive:" << renderKey.hasEmissive() + << "isTranslucent:" << renderKey.isTranslucent() + << "isSkinned:" << renderKey.isSkinned() + << "isStereo:" << renderKey.isStereo() + << "isDepthOnly:" << renderKey.isDepthOnly() + << "isShadow:" << renderKey.isShadow() + << "isWireFrame:" << renderKey.isWireFrame() + << "]"; + } else { + debug << "[ShapeKey: INVALID]"; + } return debug; } @@ -157,7 +161,7 @@ public: using Slots = ShapePipeline::Slots; using Locations = ShapePipeline::Locations; - using PipelineMap = std::unordered_map; + using PipelineMap = std::unordered_map; class PipelineLib : public PipelineMap { public: void addPipeline(Key key, gpu::ShaderPointer& vertexShader, gpu::ShaderPointer& pixelShader);