diff --git a/libraries/entities-renderer/src/RenderableCanvasEntityItem.cpp b/libraries/entities-renderer/src/RenderableCanvasEntityItem.cpp index 72bd590bf1..c44f5f815b 100644 --- a/libraries/entities-renderer/src/RenderableCanvasEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableCanvasEntityItem.cpp @@ -19,10 +19,6 @@ using namespace render::entities; CanvasEntityRenderer::CanvasEntityRenderer(const EntityItemPointer& entity) : Parent(entity) { _geometryId = DependencyManager::get()->allocateID(); - _material->setCullFaceMode(graphics::MaterialKey::CullFaceMode::CULL_NONE); - _material->setUnlit(true); - addMaterial(graphics::MaterialLayer(_material, 0), "0"); - updateMaterials(true); } CanvasEntityRenderer::~CanvasEntityRenderer() { @@ -50,51 +46,30 @@ void CanvasEntityRenderer::doRender(RenderArgs* args) { PerformanceTimer perfTimer("RenderableCanvasEntityItem::render"); Q_ASSERT(args->_batch); - graphics::MultiMaterial materials; - { - std::lock_guard lock(_materialsLock); - materials = _materials["0"]; - } - - if (!_texture) { - return; - } + if (!_texture) { return; } Transform transform; withReadLock([&] { transform = _renderTransform; }); - gpu::Batch* batch = args->_batch; + gpu::Batch& batch = *args->_batch; + + batch.setResourceTexture(0, _texture); bool usePrimaryFrustum = args->_renderMode == RenderArgs::RenderMode::SHADOW_RENDER_MODE || args->_mirrorDepth > 0; transform.setRotation(BillboardModeHelpers::getBillboardRotation(transform.getTranslation(), transform.getRotation(), _billboardMode, usePrimaryFrustum ? BillboardModeHelpers::getPrimaryViewFrustumPosition() : args->getViewFrustum().getPosition())); - - batch->setModelTransform(transform, _prevRenderTransform); + batch.setModelTransform(transform, _prevRenderTransform); if (args->_renderMode == Args::RenderMode::DEFAULT_RENDER_MODE || args->_renderMode == Args::RenderMode::MIRROR_RENDER_MODE) { _prevRenderTransform = transform; } - Pipeline pipelineType = getPipelineType(materials); - if (pipelineType == Pipeline::PROCEDURAL) { - auto procedural = std::static_pointer_cast(materials.top().material); - procedural->prepare(*batch, transform.getTranslation(), transform.getScale(), transform.getRotation(), _created, ProceduralProgramKey(true)); - } else if (pipelineType == Pipeline::SIMPLE) { - batch->setResourceTexture(0, _texture); - } else if (pipelineType == Pipeline::MATERIAL) { - if (RenderPipelines::bindMaterials(materials, *batch, args->_renderMode, args->_enableTexturing)) { - args->_details._materialSwitches++; - } - } - + DependencyManager::get()->bindSimpleProgram(batch, true, true); DependencyManager::get()->renderQuad( - *batch, glm::vec2(-0.5f), glm::vec2(0.5f), glm::vec2(0.0f, 1.0f), glm::vec2(1.0f, 0.0f), + batch, glm::vec2(-0.5f), glm::vec2(0.5f), glm::vec2(0.0f, 1.0f), glm::vec2(1.0f, 0.0f), glm::vec4(1.0f), _geometryId ); - if (pipelineType == Pipeline::SIMPLE) { - // we have to reset this to white for other simple shapes - batch->setResourceTexture(graphics::slot::texture::Texture::MaterialAlbedo, DependencyManager::get()->getWhiteTexture()); - } + batch.setResourceTexture(0, nullptr); } diff --git a/libraries/entities-renderer/src/RenderableCanvasEntityItem.h b/libraries/entities-renderer/src/RenderableCanvasEntityItem.h index c9037b386f..2142fd286f 100644 --- a/libraries/entities-renderer/src/RenderableCanvasEntityItem.h +++ b/libraries/entities-renderer/src/RenderableCanvasEntityItem.h @@ -35,9 +35,7 @@ protected: virtual void doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) override; private: - std::shared_ptr _material { std::make_shared() }; gpu::TexturePointer _texture; - int _geometryId { 0 }; };