Showing the changes to libraries/render-utils/src/RenderDeferredTask.cpp (1 of 3 files). Show all
Unified · Split
| @@ -77,30 +77,28 @@ RenderDeferredTask::RenderDeferredTask() : Task() { · 76 unmodified lines | ||
| 77 | 77 | ShapePlumberPointer shapePlumber = std::make_shared<ShapePlumber>(); |
| 78 | 78 | initDeferredPipelines(*shapePlumber); |
| 79 | 79 | |
| 80 | − // CPU only, create the list of renderedOpaques items | |
| 81 | − addJob<FetchItems>("FetchOpaque", FetchItems([](const RenderContextPointer& context, int count) { | |
| 80 | + // CPU: Fetch the renderOpaques | |
| 81 | + const auto fetchedOpaques = addJob<FetchItems>("FetchOpaque", FetchItems([](const RenderContextPointer& context, int count) { | |
| 82 | 82 | context->getItemsConfig().opaque.numFeed = count; |
| 83 | 83 | })); |
| 84 | − addJob<CullItems<RenderDetails::OPAQUE_ITEM>>("CullOpaque", _jobs.back().getOutput()); | |
| 85 | − addJob<DepthSortItems>("DepthSortOpaque", _jobs.back().getOutput()); | |
| 86 | − auto& renderedOpaques = _jobs.back().getOutput(); | |
| 84 | + const auto culledOpaques = addJob<CullItems<RenderDetails::OPAQUE_ITEM>>("CullOpaque", fetchedOpaques); | |
| 85 | + const auto opaques = addJob<DepthSortItems>("DepthSortOpaque", culledOpaques); | |
| 87 | 86 | |
| 88 | 87 | // CPU only, create the list of renderedTransparents items |
| 89 | − addJob<FetchItems>("FetchTransparent", FetchItems( | |
| 88 | + const auto fetchedTransparents = addJob<FetchItems>("FetchTransparent", FetchItems( | |
| 90 | 89 | ItemFilter::Builder::transparentShape().withoutLayered(), |
| 91 | 90 | [](const RenderContextPointer& context, int count) { |
| 92 | 91 | context->getItemsConfig().transparent.numFeed = count; |
| 93 | 92 | } |
| 94 | − )); | |
| 95 | − addJob<CullItems<RenderDetails::TRANSLUCENT_ITEM>>("CullTransparent", _jobs.back().getOutput()); | |
| 96 | − addJob<DepthSortItems>("DepthSortTransparent", _jobs.back().getOutput(), DepthSortItems(false)); | |
| 97 | − auto& renderedTransparents = _jobs.back().getOutput(); | |
| 93 | + )); | |
| 94 | + const auto culledTransparents = addJob<CullItems<RenderDetails::TRANSLUCENT_ITEM>>("CullTransparent", fetchedTransparents); | |
| 95 | + const auto transparents = addJob<DepthSortItems>("DepthSortTransparent", culledTransparents, DepthSortItems(false)); | |
| 98 | 96 | |
| 99 | 97 | // GPU Jobs: Start preparing the deferred and lighting buffer |
| 100 | 98 | addJob<PrepareDeferred>("PrepareDeferred"); |
| 101 | 99 | |
| 102 | 100 | // Render opaque objects in DeferredBuffer |
| 103 | − addJob<DrawOpaqueDeferred>("DrawOpaqueDeferred", renderedOpaques, shapePlumber); | |
| 101 | + addJob<DrawOpaqueDeferred>("DrawOpaqueDeferred", opaques, shapePlumber); | |
| 104 | 102 | |
| 105 | 103 | // Once opaque is all rendered create stencil background |
| 106 | 104 | addJob<DrawStencilDeferred>("DrawOpaqueStencil"); |
| @@ -116,16 +114,16 @@ RenderDeferredTask::RenderDeferredTask() : Task() { · 9 unmodified lines | ||
| 116 | 114 | |
| 117 | 115 | // AO job, to be revisited |
| 118 | 116 | addJob<AmbientOcclusion>("AmbientOcclusion"); |
| 119 | − _jobs.back().setEnabled(false); | |
| 120 | 117 | _occlusionJobIndex = (int)_jobs.size() - 1; |
| 118 | + enableJob(_occlusionJobIndex, false); | |
| 121 | 119 | |
| 122 | 120 | // AA job to be revisited |
| 123 | 121 | addJob<Antialiasing>("Antialiasing"); |
| 124 | − _jobs.back().setEnabled(false); | |
| 125 | 122 | _antialiasingJobIndex = (int)_jobs.size() - 1; |
| 123 | + enableJob(_antialiasingJobIndex, false); | |
| 126 | 124 | |
| 127 | 125 | // Render transparent objects forward in LigthingBuffer |
| 128 | − addJob<DrawTransparentDeferred>("DrawTransparentDeferred", renderedTransparents, shapePlumber); | |
| 126 | + addJob<DrawTransparentDeferred>("DrawTransparentDeferred", transparents, shapePlumber); | |
| 129 | 127 | |
| 130 | 128 | // Lighting Buffer ready for tone mapping |
| 131 | 129 | addJob<ToneMappingDeferred>("ToneMapping"); |
| @@ -133,24 +131,24 @@ RenderDeferredTask::RenderDeferredTask() : Task() { · 1 unmodified line | ||
| 133 | 131 | |
| 134 | 132 | // Debugging Deferred buffer job |
| 135 | 133 | addJob<DebugDeferredBuffer>("DebugDeferredBuffer"); |
| 136 | − _jobs.back().setEnabled(false); | |
| 137 | 134 | _drawDebugDeferredBufferIndex = (int)_jobs.size() - 1; |
| 135 | + enableJob(_drawDebugDeferredBufferIndex, false); | |
| 138 | 136 | |
| 139 | 137 | // Status icon rendering job |
| 140 | 138 | { |
| 141 | 139 | // Grab a texture map representing the different status icons and assign that to the drawStatsuJob |
| 142 | 140 | auto iconMapPath = PathUtils::resourcesPath() + "icons/statusIconAtlas.svg"; |
| 143 | 141 | auto statusIconMap = DependencyManager::get<TextureCache>()->getImageTexture(iconMapPath); |
| 144 | − addJob<DrawStatus>("DrawStatus", renderedOpaques, DrawStatus(statusIconMap)); | |
| 145 | − _jobs.back().setEnabled(false); | |
| 142 | + addJob<DrawStatus>("DrawStatus", opaques, DrawStatus(statusIconMap)); | |
| 146 | 143 | _drawStatusJobIndex = (int)_jobs.size() - 1; |
| 144 | + enableJob(_drawStatusJobIndex, false); | |
| 147 | 145 | } |
| 148 | 146 | |
| 149 | 147 | addJob<DrawOverlay3D>("DrawOverlay3D", shapePlumber); |
| 150 | 148 | |
| 151 | 149 | addJob<HitEffect>("HitEffect"); |
| 152 | − _jobs.back().setEnabled(false); | |
| 153 | 150 | _drawHitEffectJobIndex = (int)_jobs.size() -1; |
| 151 | + enableJob(_drawHitEffectJobIndex, false); | |
| 154 | 152 | |
| 155 | 153 | addJob<Blit>("Blit"); |
| 156 | 154 | } |
| @@ -168,21 +166,12 @@ void RenderDeferredTask::run(const SceneContextPointer& sceneContext, const Rend · 11 unmodified lines | ||
| 168 | 166 | return; |
| 169 | 167 | } |
| 170 | 168 | |
| 171 | − // Make sure we turn the deferred buffer debug on/off | |
| 172 | 169 | setDrawDebugDeferredBuffer(renderContext->_deferredDebugMode); |
| 173 | − | |
| 174 | − // Make sure we turn the displayItemStatus on/off | |
| 175 | 170 | setDrawItemStatus(renderContext->getDrawStatus()); |
| 176 | − | |
| 177 | − // Make sure we display hit effect on screen, as desired from a script | |
| 178 | 171 | setDrawHitEffect(renderContext->getDrawHitEffect()); |
| 179 | − | |
| 180 | − | |
| 181 | 172 | // TODO: turn on/off AO through menu item |
| 182 | 173 | setOcclusionStatus(renderContext->getOcclusionStatus()); |
| 183 | − | |
| 184 | 174 | setAntialiasingStatus(renderContext->getFxaaStatus()); |
| 185 | − | |
| 186 | 175 | setToneMappingExposure(renderContext->getTone().exposure); |
| 187 | 176 | setToneMappingToneCurve(renderContext->getTone().toneCurve); |
| 188 | 177 | |