CSEngine
Loading...
Searching...
No Matches
RenderContainer.cpp
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"
6
7using namespace CSE;
8
9RenderContainer::RenderContainer() {}
10
11
12RenderContainer::~RenderContainer() {}
13
14void RenderContainer::Register(SIRender* object, RenderGroupMode groupMode) {
15 switch (groupMode) {
16 case FORWARD: {
17 SRenderGroup* group = m_forwardRenderGroup;
18#ifndef CSE_SETTINGS_RENDER_FORWARD_SUPPORT
19 group = m_deferredRenderGroup;
20#endif
21 group->RegisterObject(object);
22 break;
23 }
24 case DEFERRED: {
25 SRenderGroup* group = m_deferredRenderGroup;
26#ifndef CSE_SETTINGS_RENDER_DEFERRED_SUPPORT
27 group = m_forwardRenderGroup;
28#endif
29 group->RegisterObject(object);
30 break;
31 }
32 case DEPTH_ONLY:
33 m_depthOnlyRenderGroup->RegisterObject(object);
34 break;
35#ifdef CSE_SETTINGS_RENDER_SDFGI_SUPPORT
36 case SDF:
37 m_sdfRenderGroup->RegisterObject(object);
38 break;
39#endif
40 }
41}
42
43void RenderContainer::Remove(SIRender* object, RenderContainer::RenderGroupMode groupFlag) {
44 switch (groupFlag) {
45 case FORWARD: {
46 SRenderGroup* group = m_forwardRenderGroup;
47#ifndef CSE_SETTINGS_RENDER_FORWARD_SUPPORT
48 group = m_deferredRenderGroup;
49#endif
50 group->RemoveObjects(object);
51 break;
52 }
53 case DEFERRED: {
54 SRenderGroup* group = m_deferredRenderGroup;
55#ifndef CSE_SETTINGS_RENDER_DEFERRED_SUPPORT
56 group = m_forwardRenderGroup;
57#endif
58 group->RemoveObjects(object);
59 break;
60 }
61 case DEPTH_ONLY:
62 m_depthOnlyRenderGroup->RemoveObjects(object);
63 break;
64#ifdef CSE_SETTINGS_RENDER_SDFGI_SUPPORT
65 case SDF:
66 m_sdfRenderGroup->RemoveObjects(object);
67 break;
68#endif
69 }
70}
71
72void RenderContainer::Exterminate() {
73 if (m_forwardRenderGroup != nullptr) {
74 m_forwardRenderGroup->Exterminate();
75 delete m_forwardRenderGroup;
76 m_forwardRenderGroup = nullptr;
77 }
78 if (m_deferredRenderGroup != nullptr) {
79 m_deferredRenderGroup->Exterminate();
80 delete m_deferredRenderGroup;
81 m_deferredRenderGroup = nullptr;
82 }
83 if (m_depthOnlyRenderGroup != nullptr) {
84 m_depthOnlyRenderGroup->Exterminate();
85 delete m_depthOnlyRenderGroup;
86 m_depthOnlyRenderGroup = nullptr;
87 }
88 if (m_sdfRenderGroup != nullptr) {
89 m_sdfRenderGroup->Exterminate();
90 delete m_sdfRenderGroup;
91 m_sdfRenderGroup = nullptr;
92 }
93}