mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 20:06:02 +02:00
Hold Varying constant over task ctor
This commit is contained in:
parent
5d157b059f
commit
61f337b490
3 changed files with 12 additions and 15 deletions
|
@ -89,15 +89,16 @@ RenderDeferredTask::RenderDeferredTask(CullFunctor cullFunctor) {
|
||||||
initDeferredPipelines(*shapePlumber);
|
initDeferredPipelines(*shapePlumber);
|
||||||
|
|
||||||
// CPU: Fetch the renderOpaques
|
// CPU: Fetch the renderOpaques
|
||||||
auto fetchedOpaques = addJob<FetchItems>("FetchOpaque");
|
const auto fetchedOpaques = addJob<FetchItems>("FetchOpaque");
|
||||||
auto culledOpaques = addJob<CullItems<RenderDetails::OPAQUE_ITEM>>("CullOpaque", fetchedOpaques, cullFunctor);
|
const auto culledOpaques = addJob<CullItems<RenderDetails::OPAQUE_ITEM>>("CullOpaque", fetchedOpaques, cullFunctor);
|
||||||
auto opaques = addJob<DepthSortItems>("DepthSortOpaque", culledOpaques);
|
const auto opaques = addJob<DepthSortItems>("DepthSortOpaque", culledOpaques);
|
||||||
|
|
||||||
// CPU only, create the list of renderedTransparents items
|
// CPU only, create the list of renderedTransparents items
|
||||||
auto fetchedTransparents = addJob<FetchItems>("FetchTransparent", FetchItems(
|
const auto fetchedTransparents = addJob<FetchItems>("FetchTransparent", FetchItems(
|
||||||
ItemFilter::Builder::transparentShape().withoutLayered()));
|
ItemFilter::Builder::transparentShape().withoutLayered()));
|
||||||
auto culledTransparents = addJob<CullItems<RenderDetails::TRANSLUCENT_ITEM>>("CullTransparent", fetchedTransparents, cullFunctor);
|
const auto culledTransparents =
|
||||||
auto transparents = addJob<DepthSortItems>("DepthSortTransparent", culledTransparents, DepthSortItems(false));
|
addJob<CullItems<RenderDetails::TRANSLUCENT_ITEM>>("CullTransparent", fetchedTransparents, cullFunctor);
|
||||||
|
const auto transparents = addJob<DepthSortItems>("DepthSortTransparent", culledTransparents, DepthSortItems(false));
|
||||||
|
|
||||||
// GPU Jobs: Start preparing the deferred and lighting buffer
|
// GPU Jobs: Start preparing the deferred and lighting buffer
|
||||||
addJob<PrepareDeferred>("PrepareDeferred");
|
addJob<PrepareDeferred>("PrepareDeferred");
|
||||||
|
|
|
@ -105,16 +105,16 @@ RenderShadowTask::RenderShadowTask(CullFunctor cullFunctor) : Task(std::make_sha
|
||||||
}
|
}
|
||||||
|
|
||||||
// CPU: Fetch shadow-casting opaques
|
// CPU: Fetch shadow-casting opaques
|
||||||
auto fetchedItems = addJob<FetchItems>("FetchShadowMap");
|
const auto fetchedItems = addJob<FetchItems>("FetchShadowMap");
|
||||||
|
|
||||||
// CPU: Cull against KeyLight frustum (nearby viewing camera)
|
// CPU: Cull against KeyLight frustum (nearby viewing camera)
|
||||||
auto culledItems = addJob<CullItems<RenderDetails::SHADOW_ITEM>>("CullShadowMap", fetchedItems, cullFunctor);
|
const auto culledItems = addJob<CullItems<RenderDetails::SHADOW_ITEM>>("CullShadowMap", fetchedItems, cullFunctor);
|
||||||
|
|
||||||
// CPU: Sort by pipeline
|
// CPU: Sort by pipeline
|
||||||
auto sortedShapes = addJob<PipelineSortShapes>("PipelineSortShadowSort", culledItems);
|
const auto sortedShapes = addJob<PipelineSortShapes>("PipelineSortShadowSort", culledItems);
|
||||||
|
|
||||||
// CPU: Sort front to back
|
// CPU: Sort front to back
|
||||||
auto shadowShapes = addJob<DepthSortShapes>("DepthSortShadowMap", sortedShapes);
|
const auto shadowShapes = addJob<DepthSortShapes>("DepthSortShadowMap", sortedShapes);
|
||||||
|
|
||||||
// GPU: Render to shadow map
|
// GPU: Render to shadow map
|
||||||
addJob<RenderShadowMap>("RenderShadowMap", shadowShapes, shapePlumber);
|
addJob<RenderShadowMap>("RenderShadowMap", shadowShapes, shapePlumber);
|
||||||
|
|
|
@ -260,12 +260,8 @@ public:
|
||||||
QObject::connect(config.get(), SIGNAL(dirty()), _config.get(), SLOT(refresh()));
|
QObject::connect(config.get(), SIGNAL(dirty()), _config.get(), SLOT(refresh()));
|
||||||
return _jobs.back().getOutput();
|
return _jobs.back().getOutput();
|
||||||
}
|
}
|
||||||
template <class T, class... A> const Varying addJob(std::string name, Varying& input, A&&... args) {
|
|
||||||
const auto& in = input;
|
|
||||||
return addJob<T>(name, in, std::forward<A>(args)...);
|
|
||||||
}
|
|
||||||
template <class T, class... A> const Varying addJob(std::string name, A&&... args) {
|
template <class T, class... A> const Varying addJob(std::string name, A&&... args) {
|
||||||
auto input = Varying(typename T::JobModel::Input());
|
const auto input = Varying(typename T::JobModel::Input());
|
||||||
return addJob<T>(name, input, std::forward<A>(args)...);
|
return addJob<T>(name, input, std::forward<A>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue