1#include "RenderContainer.h"
2#include "../../Util/Render/SFrameBuffer.h"
3#include "../../Util/Render/SMaterial.h"
4#include "../../Util/Render/SGBuffer.h"
5#include "../../Util/Settings.h"
9RenderContainer::RenderContainer() {}
12RenderContainer::~RenderContainer() {}
14void RenderContainer::Register(
SIRender*
object, RenderGroupMode groupMode) {
18#ifndef CSE_SETTINGS_RENDER_FORWARD_SUPPORT
19 group = m_deferredRenderGroup;
21 group->RegisterObject(
object);
26#ifndef CSE_SETTINGS_RENDER_DEFERRED_SUPPORT
27 group = m_forwardRenderGroup;
29 group->RegisterObject(
object);
33 m_depthOnlyRenderGroup->RegisterObject(
object);
35#ifdef CSE_SETTINGS_RENDER_SDFGI_SUPPORT
37 m_sdfRenderGroup->RegisterObject(
object);
43void RenderContainer::Remove(
SIRender*
object, RenderContainer::RenderGroupMode groupFlag) {
47#ifndef CSE_SETTINGS_RENDER_FORWARD_SUPPORT
48 group = m_deferredRenderGroup;
50 group->RemoveObjects(
object);
55#ifndef CSE_SETTINGS_RENDER_DEFERRED_SUPPORT
56 group = m_forwardRenderGroup;
58 group->RemoveObjects(
object);
62 m_depthOnlyRenderGroup->RemoveObjects(
object);
64#ifdef CSE_SETTINGS_RENDER_SDFGI_SUPPORT
66 m_sdfRenderGroup->RemoveObjects(
object);
72void RenderContainer::Exterminate() {
73 if (m_forwardRenderGroup !=
nullptr) {
74 m_forwardRenderGroup->Exterminate();
75 delete m_forwardRenderGroup;
76 m_forwardRenderGroup =
nullptr;
78 if (m_deferredRenderGroup !=
nullptr) {
79 m_deferredRenderGroup->Exterminate();
80 delete m_deferredRenderGroup;
81 m_deferredRenderGroup =
nullptr;
83 if (m_depthOnlyRenderGroup !=
nullptr) {
84 m_depthOnlyRenderGroup->Exterminate();
85 delete m_depthOnlyRenderGroup;
86 m_depthOnlyRenderGroup =
nullptr;
88 if (m_sdfRenderGroup !=
nullptr) {
89 m_sdfRenderGroup->Exterminate();
90 delete m_sdfRenderGroup;
91 m_sdfRenderGroup =
nullptr;