making sure the proj and view matrix are correctly assigned

This commit is contained in:
Sam Gateau 2015-06-02 14:31:40 -07:00
parent 901717fb2c
commit 453fa87654
5 changed files with 40 additions and 17 deletions

View file

@ -34,6 +34,7 @@
using namespace std; using namespace std;
void renderWorldBox() { void renderWorldBox() {
return;
auto geometryCache = DependencyManager::get<GeometryCache>(); auto geometryCache = DependencyManager::get<GeometryCache>();
// Show edge of world // Show edge of world

View file

@ -45,6 +45,9 @@
#include "Util.h" #include "Util.h"
#include "InterfaceLogging.h" #include "InterfaceLogging.h"
#include "gpu/GLBackend.h"
using namespace std; using namespace std;
const glm::vec3 DEFAULT_UP_DIRECTION(0.0f, 1.0f, 0.0f); const glm::vec3 DEFAULT_UP_DIRECTION(0.0f, 1.0f, 0.0f);
@ -1472,7 +1475,8 @@ void MyAvatar::maybeUpdateBillboard() {
return; return;
} }
} }
RenderArgs renderArgs; gpu::Context context(new gpu::GLBackend());
RenderArgs renderArgs(&context);
QImage image = Application::getInstance()->renderAvatarBillboard(&renderArgs); QImage image = Application::getInstance()->renderAvatarBillboard(&renderArgs);
_billboard.clear(); _billboard.clear();
QBuffer buffer(&_billboard); QBuffer buffer(&_billboard);

View file

@ -523,9 +523,9 @@ void EntityTreeRenderer::render(RenderArgs* renderArgs) {
Model::endScene(renderArgs); Model::endScene(renderArgs);
_tree->unlock(); _tree->unlock();
glPushMatrix(); // glPushMatrix();
renderArgs->_context->render(batch); // renderArgs->_context->render(batch);
glPopMatrix(); // glPopMatrix();
renderArgs->_batch = nullptr; renderArgs->_batch = nullptr;

View file

@ -2232,7 +2232,7 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran
} }
// _transforms[0] = _viewState->getViewTransform(); // _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) // 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); _transforms[0].preTranslate(-_translation);

View file

@ -267,12 +267,15 @@ template <> void render::jobRun(const DrawOpaque& job, const SceneContextPointer
RenderArgs* args = renderContext->args; RenderArgs* args = renderContext->args;
gpu::Batch theBatch; gpu::Batch batch;
args->_batch = &theBatch; args->_batch = &batch;
glm::mat4 proj; glm::mat4 projMat;
args->_viewFrustum->evalProjectionMatrix(proj); Transform viewMat;
theBatch.setProjectionTransform(proj); args->_viewFrustum->evalProjectionMatrix(projMat);
args->_viewFrustum->evalViewTransform(viewMat);
batch.setProjectionTransform(projMat);
batch.setViewTransform(viewMat);
renderContext->args->_renderMode = RenderArgs::NORMAL_RENDER_MODE; 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_ATTACHMENT0;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT1; buffers[bufferCount++] = GL_COLOR_ATTACHMENT1;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT2; buffers[bufferCount++] = GL_COLOR_ATTACHMENT2;
theBatch._glDrawBuffers(bufferCount, buffers); batch._glDrawBuffers(bufferCount, buffers);
} }
renderItems(sceneContext, renderContext, renderedItems); renderItems(sceneContext, renderContext, renderedItems);
@ -316,8 +319,15 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo
renderedItems = sortedItems; renderedItems = sortedItems;
RenderArgs* args = renderContext->args; RenderArgs* args = renderContext->args;
gpu::Batch theBatch; gpu::Batch batch;
args->_batch = &theBatch; 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; args->_renderMode = RenderArgs::NORMAL_RENDER_MODE;
@ -330,7 +340,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo
int bufferCount = 0; int bufferCount = 0;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT1; buffers[bufferCount++] = GL_COLOR_ATTACHMENT1;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT2; buffers[bufferCount++] = GL_COLOR_ATTACHMENT2;
theBatch._glDrawBuffers(bufferCount, buffers); batch._glDrawBuffers(bufferCount, buffers);
args->_alphaThreshold = MOSTLY_OPAQUE_THRESHOLD; args->_alphaThreshold = MOSTLY_OPAQUE_THRESHOLD;
} }
@ -340,7 +350,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo
GLenum buffers[3]; GLenum buffers[3];
int bufferCount = 0; int bufferCount = 0;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT0; buffers[bufferCount++] = GL_COLOR_ATTACHMENT0;
theBatch._glDrawBuffers(bufferCount, buffers); batch._glDrawBuffers(bufferCount, buffers);
args->_alphaThreshold = TRANSPARENT_ALPHA_THRESHOLD; args->_alphaThreshold = TRANSPARENT_ALPHA_THRESHOLD;
} }
@ -395,8 +405,16 @@ template <> void render::jobRun(const DrawBackground& job, const SceneContextPoi
inItems.push_back(id); inItems.push_back(id);
} }
RenderArgs* args = renderContext->args; RenderArgs* args = renderContext->args;
gpu::Batch theBatch; gpu::Batch batch;
args->_batch = &theBatch; 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); renderItems(sceneContext, renderContext, inItems);
args->_context->render((*args->_batch)); args->_context->render((*args->_batch));
args->_batch = nullptr; args->_batch = nullptr;