PeriDyno 1.0.0
Loading...
Searching...
No Matches
GLRenderEngine.h
Go to the documentation of this file.
1
16
17#pragma once
18
19#include <memory>
20#include <vector>
21
22#include <RenderEngine.h>
23
28#include "GraphicsObject/Mesh.h"
29
30
31namespace dyno
32{
33 class SSAO;
34 class FXAA;
35 class Envmap;
36 class ShadowMap;
37 class GLRenderHelper;
38 class GLVisualModule;
39 class SceneGraph;
40
42 {
43 public:
46
47 virtual void initialize() override;
48 virtual void terminate() override;
49
50 virtual void draw(dyno::SceneGraph* scene, const RenderParams& rparams) override;
51
52 virtual std::string name() const override;
53
54 // get the selected nodes on given rect area
55 Selection select(int x, int y, int w, int h) override;
56
57 // use MSAA samples
58 void setMSAA(int samples);
59 int getMSAA() const;
60
61 void setFXAA(bool flag);
62 int getFXAA() const;
63
64 void setShadowMapSize(int size);
65 int getShadowMapSize() const;
66
67 void setShadowBlurIters(int iters);
68 int getShadowBlurIters() const;
69
70 void setDefaultEnvmap() override;
71 void setEnvmap(const std::string& path);
72
73 void setEnvStyle(EEnvStyle style) override;
74
75 inline std::string getEnvmapFilePath() { return mEnvmapFilePath; }
76
77 private:
78 void createFramebuffer();
79 void resizeFramebuffer(int w, int h, int samples);
82
83 private:
84
85 // objects to render
86 struct RenderItem {
87 std::shared_ptr<Node> node;
88 std::shared_ptr<GLVisualModule> visualModule;
89
90 bool operator==(const RenderItem& item) {
91 return node == item.node && visualModule == item.visualModule;
92 }
93 };
94
95 std::vector<RenderItem> mRenderItems;
96
97 private:
98 // internal framebuffer
102 Texture2DMultiSample mIndexTex; // indices for object/mesh/primitive etc.
103
104 // non-multisample framebuffer for select
107
108 // for linked-list OIT
109 const int MAX_OIT_NODES = 1024 * 1024 * 8;
114
117
118 // anti-aliasing
119
120 // MSAA samples
122
123 // FXAA
124 bool bEnableFXAA = false;
126
127 // Envmap
128 std::string mEnvmapFilePath = getAssetPath() + "textures/hdr/venice_dawn_1_4k.hdr";
130
132 };
133};
GLRenderHelper * mRenderHelper
Texture2DMultiSample mColorTex
Texture2DMultiSample mHeadIndexTex
void setShadowBlurIters(int iters)
std::string mEnvmapFilePath
virtual void draw(dyno::SceneGraph *scene, const RenderParams &rparams) override
virtual void initialize() override
void setDefaultEnvmap() override
virtual void terminate() override
Framebuffer mSelectFramebuffer
void setMSAA(int samples)
void setEnvStyle(EEnvStyle style) override
Selection select(int x, int y, int w, int h) override
std::string getEnvmapFilePath()
void setEnvmap(const std::string &path)
std::vector< RenderItem > mRenderItems
void resizeFramebuffer(int w, int h, int samples)
Texture2DMultiSample mIndexTex
void setFXAA(bool flag)
void updateRenderItems(dyno::SceneGraph *scene)
virtual std::string name() const override
void setShadowMapSize(int size)
Texture2DMultiSample mDepthTex
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
int scene
Definition GltfFunc.h:20
std::shared_ptr< Node > node
std::shared_ptr< GLVisualModule > visualModule
bool operator==(const RenderItem &item)