From 453fa876548bcf0e747e5d25ea245b3f5de0baff Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 2 Jun 2015 14:31:40 -0700 Subject: [PATCH] making sure the proj and view matrix are correctly assigned --- interface/src/Util.cpp | 1 + interface/src/avatar/MyAvatar.cpp | 6 ++- .../src/EntityTreeRenderer.cpp | 6 +-- libraries/render-utils/src/Model.cpp | 2 +- libraries/render/src/render/DrawTask.cpp | 42 +++++++++++++------ 5 files changed, 40 insertions(+), 17 deletions(-) diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 1f217d92b9..c07c2877e8 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -34,6 +34,7 @@ using namespace std; void renderWorldBox() { + return; auto geometryCache = DependencyManager::get(); // Show edge of world diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index bdf66eb1b5..249f8166ac 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -45,6 +45,9 @@ #include "Util.h" #include "InterfaceLogging.h" +#include "gpu/GLBackend.h" + + using namespace std; const glm::vec3 DEFAULT_UP_DIRECTION(0.0f, 1.0f, 0.0f); @@ -1472,7 +1475,8 @@ void MyAvatar::maybeUpdateBillboard() { return; } } - RenderArgs renderArgs; + gpu::Context context(new gpu::GLBackend()); + RenderArgs renderArgs(&context); QImage image = Application::getInstance()->renderAvatarBillboard(&renderArgs); _billboard.clear(); QBuffer buffer(&_billboard); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 9a8966dbc0..949d73b10f 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -523,9 +523,9 @@ void EntityTreeRenderer::render(RenderArgs* renderArgs) { Model::endScene(renderArgs); _tree->unlock(); - glPushMatrix(); - renderArgs->_context->render(batch); - glPopMatrix(); + // glPushMatrix(); + // renderArgs->_context->render(batch); + // glPopMatrix(); renderArgs->_batch = nullptr; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index db8b53d129..4adc375a6a 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -2232,7 +2232,7 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran } // _transforms[0] = _viewState->getViewTransform(); - _transforms[0].evalFromRawMatrix(args->_viewFrustum->getView()); //_viewState->getViewTransform(); + args->_viewFrustum->evalViewTransform(_transforms[0]); // apply entity translation offset to the viewTransform in one go (it's a preTranslate because viewTransform goes from world to eye space) _transforms[0].preTranslate(-_translation); diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp index 6a092bf7d9..65353b5b99 100755 --- a/libraries/render/src/render/DrawTask.cpp +++ b/libraries/render/src/render/DrawTask.cpp @@ -267,12 +267,15 @@ template <> void render::jobRun(const DrawOpaque& job, const SceneContextPointer RenderArgs* args = renderContext->args; - gpu::Batch theBatch; - args->_batch = &theBatch; + gpu::Batch batch; + args->_batch = &batch; - glm::mat4 proj; - args->_viewFrustum->evalProjectionMatrix(proj); - theBatch.setProjectionTransform(proj); + glm::mat4 projMat; + Transform viewMat; + args->_viewFrustum->evalProjectionMatrix(projMat); + args->_viewFrustum->evalViewTransform(viewMat); + batch.setProjectionTransform(projMat); + batch.setViewTransform(viewMat); renderContext->args->_renderMode = RenderArgs::NORMAL_RENDER_MODE; { @@ -281,7 +284,7 @@ template <> void render::jobRun(const DrawOpaque& job, const SceneContextPointer buffers[bufferCount++] = GL_COLOR_ATTACHMENT0; buffers[bufferCount++] = GL_COLOR_ATTACHMENT1; buffers[bufferCount++] = GL_COLOR_ATTACHMENT2; - theBatch._glDrawBuffers(bufferCount, buffers); + batch._glDrawBuffers(bufferCount, buffers); } renderItems(sceneContext, renderContext, renderedItems); @@ -316,8 +319,15 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo renderedItems = sortedItems; RenderArgs* args = renderContext->args; - gpu::Batch theBatch; - args->_batch = &theBatch; + gpu::Batch batch; + args->_batch = &batch; + + glm::mat4 projMat; + Transform viewMat; + args->_viewFrustum->evalProjectionMatrix(projMat); + args->_viewFrustum->evalViewTransform(viewMat); + batch.setProjectionTransform(projMat); + batch.setViewTransform(viewMat); args->_renderMode = RenderArgs::NORMAL_RENDER_MODE; @@ -330,7 +340,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo int bufferCount = 0; buffers[bufferCount++] = GL_COLOR_ATTACHMENT1; buffers[bufferCount++] = GL_COLOR_ATTACHMENT2; - theBatch._glDrawBuffers(bufferCount, buffers); + batch._glDrawBuffers(bufferCount, buffers); args->_alphaThreshold = MOSTLY_OPAQUE_THRESHOLD; } @@ -340,7 +350,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo GLenum buffers[3]; int bufferCount = 0; buffers[bufferCount++] = GL_COLOR_ATTACHMENT0; - theBatch._glDrawBuffers(bufferCount, buffers); + batch._glDrawBuffers(bufferCount, buffers); args->_alphaThreshold = TRANSPARENT_ALPHA_THRESHOLD; } @@ -395,8 +405,16 @@ template <> void render::jobRun(const DrawBackground& job, const SceneContextPoi inItems.push_back(id); } RenderArgs* args = renderContext->args; - gpu::Batch theBatch; - args->_batch = &theBatch; + gpu::Batch batch; + args->_batch = &batch; + + glm::mat4 projMat; + Transform viewMat; + args->_viewFrustum->evalProjectionMatrix(projMat); + args->_viewFrustum->evalViewTransform(viewMat); + batch.setProjectionTransform(projMat); + batch.setViewTransform(viewMat); + renderItems(sceneContext, renderContext, inItems); args->_context->render((*args->_batch)); args->_batch = nullptr;