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