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
227 args->_context->render(batch);227 args->_context->render(batch);
228}228}
229 229
230gpu::FramebufferPointer _copyFBO;
231
230void DeferredLightingEffect::render(RenderArgs* args) {232void DeferredLightingEffect::render(RenderArgs* args) {
231 gpu::Batch batch;233 gpu::Batch batch;
232 234
@@ -236,18 +238,20 @@ void DeferredLightingEffect::render(RenderArgs* args) { · 3 unmodified lines
236 QSize framebufferSize = framebufferCache->getFrameBufferSize();238 QSize framebufferSize = framebufferCache->getFrameBufferSize();
237 239
238 // binding the first framebuffer240 // binding the first framebuffer
239 auto freeFBO = framebufferCache->getSecondaryFramebuffer();241 _copyFBO = framebufferCache->getFramebuffer();
240 batch.setFramebuffer(freeFBO);242 batch.setFramebuffer(_copyFBO);
241 243
242 batch.setViewportTransform(args->_viewport);244 batch.setViewportTransform(args->_viewport);
243 245
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));
245 247
246 auto primaryFramebuffer = framebufferCache->getPrimaryFramebuffer();248 batch.setResourceTexture(0, framebufferCache->getPrimaryColorTexture());
247 for (int i = 0; i < 3; ++i) {249
248 batch.setResourceTexture(i, primaryFramebuffer->getRenderBuffer(i));250 batch.setResourceTexture(1, framebufferCache->getPrimaryNormalTexture());
249 }251
250 batch.setResourceTexture(3, primaryFramebuffer->getDepthStencilBuffer());252 batch.setResourceTexture(2, framebufferCache->getPrimarySpecularTexture());
253
254 batch.setResourceTexture(3, framebufferCache->getPrimaryDepthTexture());
251 255
252 float sMin = args->_viewport.x / (float)framebufferSize.width();256 float sMin = args->_viewport.x / (float)framebufferSize.width();
253 float sWidth = args->_viewport.z / (float)framebufferSize.width();257 float sWidth = args->_viewport.z / (float)framebufferSize.width();
@@ -532,17 +536,16 @@ void DeferredLightingEffect::render(RenderArgs* args) { · 278 unmodified lines
532 // End of the Lighting pass536 // End of the Lighting pass
533}537}
534 538
539
535void DeferredLightingEffect::copyBack(RenderArgs* args) {540void DeferredLightingEffect::copyBack(RenderArgs* args) {
536 gpu::Batch batch;541 gpu::Batch batch;
537 auto framebufferCache = DependencyManager::get<FramebufferCache>();542 auto framebufferCache = DependencyManager::get<FramebufferCache>();
538 QSize framebufferSize = framebufferCache->getFrameBufferSize();543 QSize framebufferSize = framebufferCache->getFrameBufferSize();
539 544
540 auto freeFBO = framebufferCache->getSecondaryFramebuffer();
541
542 batch.setFramebuffer(framebufferCache->getPrimaryFramebuffer());545 batch.setFramebuffer(framebufferCache->getPrimaryFramebuffer());
543 batch.setPipeline(_blitLightBuffer);546 batch.setPipeline(_blitLightBuffer);
544 547
545 batch.setResourceTexture(0, freeFBO->getRenderBuffer(0));548 batch.setResourceTexture(0, _copyFBO->getRenderBuffer(0));
546 549
547 batch.setProjectionTransform(glm::mat4());550 batch.setProjectionTransform(glm::mat4());
548 batch.setViewTransform(Transform());551 batch.setViewTransform(Transform());
@@ -561,8 +564,10 @@ void DeferredLightingEffect::copyBack(RenderArgs* args) { · 12 unmodified lines
561 564
562 batch.draw(gpu::TRIANGLE_STRIP, 4);565 batch.draw(gpu::TRIANGLE_STRIP, 4);
563 566
567
564 args->_context->syncCache();568 args->_context->syncCache();
565 args->_context->render(batch);569 args->_context->render(batch);
570 framebufferCache->releaseFramebuffer(_copyFBO);
566}571}
567 572
568void DeferredLightingEffect::setupTransparent(RenderArgs* args, int lightBufferUnit) {573void DeferredLightingEffect::setupTransparent(RenderArgs* args, int lightBufferUnit) {