History

Trying to fix oculus rendering

Bradley Austin Davis committed 11 years ago

Commit 95964521 parent bd5da875 files · +73 −30Browse files

Showing the changes to libraries/render-utils/src/DeferredLightingEffect.cpp (1 of 5 files). Show all

Unified · Split

libraries/render-utils/src/DeferredLightingEffect.cpp+16−11
@@ -227,6 +227,8 @@ void DeferredLightingEffect::prepare(RenderArgs* args) { · 226 unmodified lines
227227 args->_context->render(batch);
228228 }
229229
230+gpu::FramebufferPointer _copyFBO;
231+
230232 void DeferredLightingEffect::render(RenderArgs* args) {
231233 gpu::Batch batch;
232234
@@ -236,18 +238,20 @@ void DeferredLightingEffect::render(RenderArgs* args) { · 3 unmodified lines
236238 QSize framebufferSize = framebufferCache->getFrameBufferSize();
237239
238240 // binding the first framebuffer
239− auto freeFBO = framebufferCache->getSecondaryFramebuffer();
240− batch.setFramebuffer(freeFBO);
241+ _copyFBO = framebufferCache->getFramebuffer();
242+ batch.setFramebuffer(_copyFBO);
241243
242244 batch.setViewportTransform(args->_viewport);
243245
244− batch.clearColorFramebuffer(freeFBO->getBufferMask(), glm::vec4(0.0f, 0.0f, 0.0f, 0.0f));
246+ batch.clearColorFramebuffer(_copyFBO->getBufferMask(), glm::vec4(0.0f, 0.0f, 0.0f, 0.0f));
245247
246− auto primaryFramebuffer = framebufferCache->getPrimaryFramebuffer();
247− for (int i = 0; i < 3; ++i) {
248− batch.setResourceTexture(i, primaryFramebuffer->getRenderBuffer(i));
249− }
250− batch.setResourceTexture(3, primaryFramebuffer->getDepthStencilBuffer());
248+ batch.setResourceTexture(0, framebufferCache->getPrimaryColorTexture());
249+
250+ batch.setResourceTexture(1, framebufferCache->getPrimaryNormalTexture());
251+
252+ batch.setResourceTexture(2, framebufferCache->getPrimarySpecularTexture());
253+
254+ batch.setResourceTexture(3, framebufferCache->getPrimaryDepthTexture());
251255
252256 float sMin = args->_viewport.x / (float)framebufferSize.width();
253257 float sWidth = args->_viewport.z / (float)framebufferSize.width();
@@ -532,17 +536,16 @@ void DeferredLightingEffect::render(RenderArgs* args) { · 278 unmodified lines
532536 // End of the Lighting pass
533537 }
534538
539+
535540 void DeferredLightingEffect::copyBack(RenderArgs* args) {
536541 gpu::Batch batch;
537542 auto framebufferCache = DependencyManager::get<FramebufferCache>();
538543 QSize framebufferSize = framebufferCache->getFrameBufferSize();
539544
540− auto freeFBO = framebufferCache->getSecondaryFramebuffer();
541−
542545 batch.setFramebuffer(framebufferCache->getPrimaryFramebuffer());
543546 batch.setPipeline(_blitLightBuffer);
544547
545− batch.setResourceTexture(0, freeFBO->getRenderBuffer(0));
548+ batch.setResourceTexture(0, _copyFBO->getRenderBuffer(0));
546549
547550 batch.setProjectionTransform(glm::mat4());
548551 batch.setViewTransform(Transform());
@@ -561,8 +564,10 @@ void DeferredLightingEffect::copyBack(RenderArgs* args) { · 12 unmodified lines
561564
562565 batch.draw(gpu::TRIANGLE_STRIP, 4);
563566
567+
564568 args->_context->syncCache();
565569 args->_context->render(batch);
570+ framebufferCache->releaseFramebuffer(_copyFBO);
566571 }
567572
568573 void DeferredLightingEffect::setupTransparent(RenderArgs* args, int lightBufferUnit) {