History

Added PrepareOutline job to save outlined zbuffer

Olivier Prat committed 9 years ago

Commit 7de60791 parent add675e6 files · +165 −0Browse files

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

Unified · Split

libraries/render-utils/src/RenderDeferredTask.cpp+12−0
@@ -39,6 +39,8 @@ · 38 unmodified lines
3939 #include "AntialiasingEffect.h"
4040 #include "ToneMappingEffect.h"
4141 #include "SubsurfaceScattering.h"
42+#include "PickItemsJob.h"
43+#include "RenderOutline.h"
4244
4345 #include <gpu/StandardShaderLib.h>
4446
@@ -85,6 +87,16 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 40 unmodified lines
8587 // draw a stencil mask in hidden regions of the framebuffer.
8688 task.addJob<PrepareStencil>("PrepareStencil", primaryFramebuffer);
8789
90+ // Select items that need to be outlined
91+ const auto outlinedOpaques = task.addJob<PickItemsJob>("PickOutlined", opaques);
92+
93+ // Render opaque outline objects first in DeferredBuffer
94+ const auto opaqueOutlineInputs = DrawStateSortDeferred::Inputs(outlinedOpaques, lightingModel).hasVarying();
95+ task.addJob<DrawStateSortDeferred>("DrawOpaqueOutlined", opaqueOutlineInputs, shapePlumber);
96+
97+ // Retrieve z value of the outlined objects
98+ const auto outlinedZBuffer = task.addJob<PrepareOutline>("PrepareOutline", deferredFramebuffer);
99+
88100 // Render opaque objects in DeferredBuffer
89101 const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).hasVarying();
90102 task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);