Showing the changes to libraries/render-utils/src/RenderDeferredTask.cpp (1 of 27 files). Show all
Unified · Split
| @@ -35,6 +35,7 @@ void SetupDeferred::run(const SceneContextPointer& sceneContext, const RenderCon · 34 unmodified lines | |||
| 35 | auto primaryFbo = DependencyManager::get<FramebufferCache>()->getPrimaryFramebufferDepthColor(); | 35 | auto primaryFbo = DependencyManager::get<FramebufferCache>()->getPrimaryFramebufferDepthColor(); |
| 36 | 36 | ||
| 37 | gpu::Batch batch; | 37 | gpu::Batch batch; |
| 38 | batch.enableStereo(false); | ||
| 38 | batch.setFramebuffer(nullptr); | 39 | batch.setFramebuffer(nullptr); |
| 39 | batch.setFramebuffer(primaryFbo); | 40 | batch.setFramebuffer(primaryFbo); |
| 40 | 41 | ||
| @@ -159,6 +160,8 @@ void DrawOpaqueDeferred::run(const SceneContextPointer& sceneContext, const Rend · 118 unmodified lines | |||
| 159 | 160 | ||
| 160 | RenderArgs* args = renderContext->args; | 161 | RenderArgs* args = renderContext->args; |
| 161 | gpu::Batch batch; | 162 | gpu::Batch batch; |
| 163 | batch.setViewportTransform(args->_viewport); | ||
| 164 | batch.setStateScissorRect(args->_viewport); | ||
| 162 | args->_batch = &batch; | 165 | args->_batch = &batch; |
| 163 | 166 | ||
| 164 | renderContext->_numDrawnOpaqueItems = inItems.size(); | 167 | renderContext->_numDrawnOpaqueItems = inItems.size(); |
| @@ -188,6 +191,8 @@ void DrawTransparentDeferred::run(const SceneContextPointer& sceneContext, const · 23 unmodified lines | |||
| 188 | 191 | ||
| 189 | RenderArgs* args = renderContext->args; | 192 | RenderArgs* args = renderContext->args; |
| 190 | gpu::Batch batch; | 193 | gpu::Batch batch; |
| 194 | batch.setViewportTransform(args->_viewport); | ||
| 195 | batch.setStateScissorRect(args->_viewport); | ||
| 191 | args->_batch = &batch; | 196 | args->_batch = &batch; |
| 192 | 197 | ||
| 193 | renderContext->_numDrawnTransparentItems = inItems.size(); | 198 | renderContext->_numDrawnTransparentItems = inItems.size(); |
| @@ -247,30 +252,42 @@ void DrawOverlay3D::run(const SceneContextPointer& sceneContext, const RenderCon · 53 unmodified lines | |||
| 247 | renderContext->_numFeedOverlay3DItems = inItems.size(); | 252 | renderContext->_numFeedOverlay3DItems = inItems.size(); |
| 248 | renderContext->_numDrawnOverlay3DItems = inItems.size(); | 253 | renderContext->_numDrawnOverlay3DItems = inItems.size(); |
| 249 | 254 | ||
| 250 | RenderArgs* args = renderContext->args; | ||
| 251 | gpu::Batch batch; | ||
| 252 | args->_batch = &batch; | ||
| 253 | args->_whiteTexture = DependencyManager::get<TextureCache>()->getWhiteTexture(); | ||
| 254 | |||
| 255 | glm::mat4 projMat; | ||
| 256 | Transform viewMat; | ||
| 257 | args->_viewFrustum->evalProjectionMatrix(projMat); | ||
| 258 | args->_viewFrustum->evalViewTransform(viewMat); | ||
| 259 | |||
| 260 | batch.setProjectionTransform(projMat); | ||
| 261 | batch.setViewTransform(viewMat); | ||
| 262 | batch.setViewportTransform(args->_viewport); | ||
| 263 | batch.setStateScissorRect(args->_viewport); | ||
| 264 | |||
| 265 | batch.setPipeline(getOpaquePipeline()); | ||
| 266 | batch.setResourceTexture(0, args->_whiteTexture); | ||
| 267 | |||
| 268 | if (!inItems.empty()) { | 255 | if (!inItems.empty()) { |
| 269 | batch.clearFramebuffer(gpu::Framebuffer::BUFFER_DEPTH, glm::vec4(), 1.f, 0, true); | 256 | RenderArgs* args = renderContext->args; |
| 270 | renderItems(sceneContext, renderContext, inItems, renderContext->_maxDrawnOverlay3DItems); | 257 | |
| 271 | } | 258 | // Clear the framebuffer without stereo |
| 259 | // Needs to be distinct from the other batch because using the clear call | ||
| 260 | // while stereo is enabled triggers a warning | ||
| 261 | { | ||
| 262 | gpu::Batch batch; | ||
| 263 | batch.enableStereo(false); | ||
| 264 | batch.clearFramebuffer(gpu::Framebuffer::BUFFER_DEPTH, glm::vec4(), 1.f, 0, true); | ||
| 265 | args->_context->render(batch); | ||
| 266 | } | ||
| 272 | 267 | ||
| 273 | args->_context->render((*args->_batch)); | 268 | // Render the items |
| 274 | args->_batch = nullptr; | 269 | { |
| 275 | args->_whiteTexture.reset(); | 270 | gpu::Batch batch; |
| 271 | args->_batch = &batch; | ||
| 272 | args->_whiteTexture = DependencyManager::get<TextureCache>()->getWhiteTexture(); | ||
| 273 | |||
| 274 | glm::mat4 projMat; | ||
| 275 | Transform viewMat; | ||
| 276 | args->_viewFrustum->evalProjectionMatrix(projMat); | ||
| 277 | args->_viewFrustum->evalViewTransform(viewMat); | ||
| 278 | |||
| 279 | batch.setProjectionTransform(projMat); | ||
| 280 | batch.setViewTransform(viewMat); | ||
| 281 | batch.setViewportTransform(args->_viewport); | ||
| 282 | batch.setStateScissorRect(args->_viewport); | ||
| 283 | |||
| 284 | batch.setPipeline(getOpaquePipeline()); | ||
| 285 | batch.setResourceTexture(0, args->_whiteTexture); | ||
| 286 | renderItems(sceneContext, renderContext, inItems, renderContext->_maxDrawnOverlay3DItems); | ||
| 287 | |||
| 288 | args->_context->render((*args->_batch)); | ||
| 289 | args->_batch = nullptr; | ||
| 290 | args->_whiteTexture.reset(); | ||
| 291 | } | ||
| 292 | } | ||
| 276 | } | 293 | } |