From d00ae05e26a5b689db828117c38e90cbdef4862b Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Wed, 28 Dec 2016 17:45:05 -0500 Subject: [PATCH] add background to forward renderer --- .../render-utils/src/RenderForwardTask.cpp | 28 +++++++++++++++++++ .../render-utils/src/RenderForwardTask.h | 10 ++++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp index 4e971c6677..b8560ef2e8 100755 --- a/libraries/render-utils/src/RenderForwardTask.cpp +++ b/libraries/render-utils/src/RenderForwardTask.cpp @@ -80,6 +80,9 @@ RenderForwardTask::RenderForwardTask(CullFunctor cullFunctor) { const auto framebuffer = addJob("PrepareFramebuffer"); + addJob("DrawBackground", background); + + // bounds do not draw on stencil buffer, so they must come last addJob("DrawBounds", opaques); // Blit! @@ -173,6 +176,8 @@ void DrawBounds::run(const SceneContextPointer& sceneContext, const RenderContex RenderArgs* args = renderContext->args; gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { + args->_batch = &batch; + // Setup projection glm::mat4 projMat; Transform viewMat; @@ -197,3 +202,26 @@ void DrawBounds::run(const SceneContextPointer& sceneContext, const RenderContex } }); } + +void DrawBackground::run(const SceneContextPointer& sceneContext, const RenderContextPointer& renderContext, const Inputs& items) { + RenderArgs* args = renderContext->args; + + gpu::doInBatch(args->_context, [&](gpu::Batch& batch) { + args->_batch = &batch; + + batch.enableSkybox(true); + batch.setViewportTransform(args->_viewport); + batch.setStateScissorRect(args->_viewport); + + // Setup projection + glm::mat4 projMat; + Transform viewMat; + args->getViewFrustum().evalProjectionMatrix(projMat); + args->getViewFrustum().evalViewTransform(viewMat); + batch.setProjectionTransform(projMat); + batch.setViewTransform(viewMat); + + renderItems(sceneContext, renderContext, items); + }); + args->_batch = nullptr; +} diff --git a/libraries/render-utils/src/RenderForwardTask.h b/libraries/render-utils/src/RenderForwardTask.h index a4839e18ec..90d2ceb79c 100755 --- a/libraries/render-utils/src/RenderForwardTask.h +++ b/libraries/render-utils/src/RenderForwardTask.h @@ -53,4 +53,12 @@ private: int _scaleLocation { -1 }; }; -#endif // hifi_RenderForwardTask_h \ No newline at end of file +class DrawBackground { +public: + using Inputs = render::ItemBounds; + using JobModel = render::Job::ModelI; + + void run(const render::SceneContextPointer& sceneContext, const render::RenderContextPointer& renderContext, const Inputs& background); +}; + +#endif // hifi_RenderForwardTask_h