SpiecsEngine
 
Loading...
Searching...
No Matches

◆ RenderBehaveBuilder()

Spices::Renderer::RenderBehaveBuilder::RenderBehaveBuilder ( Renderer * renderer,
uint32_t currentFrame,
uint32_t currentImage )

Constructor Function. Bind pipeline and all buffer type descriptor set.

Parameters
[in]rendererWhen instanced during CreatePipelineLayoutAndDescriptor(), pass this pointer.
[in]currentFramePassed from FrameInfo.
[in]currentImagePassed from FrameInfo.

Create Statistics state list.

Create Statistics state list.

Definition at line 476 of file Renderer.cpp.

477 : m_Renderer(renderer)
478 , m_CurrentFrame(currentFrame)
479 , m_CurrentImage(currentImage)
480 {
482
483 m_Renderer->m_IsActive = true;
485
490 {
491 m_Renderer->m_StatisticsStateList = std::make_shared<scl::behave_state_list<void, RenderBehaveBuilder*, VkCommandBuffer>>();
492
493 // Do nothing.
494 {
495 const auto state = m_Renderer->m_StatisticsStateList->AddNode();
496
497 state->PushBehave("EndRenderer", nullptr);
498 state->PushBehave("BeginStatistics", nullptr);
499 state->PushBehave("EndStatistics", nullptr);
500 }
501
502 // Query Statistics item.
503 {
504 for(int i = 0; i < Querier::Max; i++)
505 {
506 const auto state = m_Renderer->m_StatisticsStateList->AddNode();
507
508 state->PushBehave("EndRenderer", nullptr);
509 state->PushBehave("BeginStatistics", [=](RenderBehaveBuilder* builder, VkCommandBuffer commandBuffer) {
510 builder->GetStatisticsRendererPass()->BeginStatistics(commandBuffer, static_cast<Querier::StatisticsBits>(1 << i));
511 });
512 state->PushBehave("EndStatistics", [=](RenderBehaveBuilder* builder, VkCommandBuffer commandBuffer) {
513 builder->GetStatisticsRendererPass()->EndStatistics(commandBuffer, static_cast<Querier::StatisticsBits>(1 << i));
514 });
515 }
516 }
517
518 // Submit store task to threadPool.
519 {
520 const auto state = m_Renderer->m_StatisticsStateList->AddNode();
521
522 state->PushBehave("EndRenderer", [](RenderBehaveBuilder* builder, VkCommandBuffer commandBuffer) {
523 AsyncTask(ThreadPoolEnum::Custom, [&](std::shared_ptr<RendererSubPass> subPass) {
524 subPass->StoreStatistics();
525 }, builder->GetStatisticsRendererPass());
526 });
527 state->PushBehave("BeginStatistics", nullptr);
528 state->PushBehave("EndStatistics", nullptr);
529 }
530
531 // Do nothing.
532 {
533 const auto state = m_Renderer->m_StatisticsStateList->AddNode();
534
535 state->PushBehave("EndRenderer", nullptr);
536 state->PushBehave("BeginStatistics", nullptr);
537 state->PushBehave("EndStatistics", nullptr);
538 }
539
541 }
542 }
#define SPICES_PROFILE_ZONE
StatisticsBits
Statistics types.
Definition Querier.h:24
uint32_t m_CurrentFrame
Current frame index. Passed while this class instanced.
Definition Renderer.h:1522
uint32_t m_CurrentImage
Current frame index. Passed while this class instanced.
Definition Renderer.h:1529
Renderer * m_Renderer
Specific Renderer pointer. Passed while this class instanced.
Definition Renderer.h:1515
RenderBehaveBuilder(Renderer *renderer, uint32_t currentFrame, uint32_t currentImage)
Constructor Function. Bind pipeline and all buffer type descriptor set.
Definition Renderer.cpp:476
VkCommandBuffer m_CommandBuffer
Current CommandBuffer.
Definition Renderer.h:1539
bool m_IsActive
Whether this renderer is active(submit commands in RendererBehaveBuilder).
Definition Renderer.h:2037
static std::shared_ptr< scl::behave_state_list< void, Renderer::RenderBehaveBuilder *, VkCommandBuffer > > m_StatisticsStateList
Statistics StateList.
Definition Renderer.h:1985
VulkanState & m_VulkanState
This variable is passed while renderer instanced.
Definition Renderer.h:1992
static auto AsyncTask(ThreadPoolEnum pool, F &&func, Args &&... args) -> std::future< decltype(func(std::forward< Args >(args)...))>
std::array< VkCommandBuffer, MaxFrameInFlight > m_GraphicCommandBuffer

References m_CurrentFrame, m_CurrentImage, Spices::Renderer::m_IsActive, m_Renderer, and Spices::Querier::Max.

Referenced by Spices::Renderer::ComputeRenderBehaveBuilder::ComputeRenderBehaveBuilder(), and Spices::Renderer::RayTracingRenderBehaveBuilder::RayTracingRenderBehaveBuilder().