Oxygen Engine
Modern C++ 3D Engine using OpenGL
Loading...
Searching...
No Matches
node.h
1#ifndef OE_RENDER_NODE_H
2#define OE_RENDER_NODE_H
3
4#include "common.h"
5#include "../scene/node/renderable.h"
6
7namespace oe::render
8{
9 class Shader;
10 class Manager;
11
12 class Node : public util::NonCopyable
13 {
14 public:
15 Node(scene::RenderableNode& scene_node);
16
17 virtual ~Node() {}
18
19 virtual void render() {}
20
29 virtual void fillShader(ShaderBase& shader);
30
31 void prepareRendering(const oe::scene::Material* material = nullptr);
32
33 void setRenderingPass(const RenderingPass rendering_pass)
34 {
35 _rendering_pass = rendering_pass;
36 }
37
38 protected:
39 GeometryPass _geometry_pass = GeometryPass::SOLID;
40 RenderingPass _rendering_pass = RenderingPass::FORWARD;
41
42 private:
43 Manager* _render_manager = nullptr;
44 scene::RenderableNode& _scene_node;
45
46 friend class render::Manager;
47 };
48}
49
50#endif
Render manager.
Definition manager.h:22
Definition node.h:13
virtual void fillShader(ShaderBase &shader)
Fill Shader uniforms (model matrix)
Shader class.
Definition shader_base.h:33
Render agnostic material.
Definition material.h:26
Definition renderable.h:16
Prevent class to be copied.
Definition non_copyable.h:12
Render related abstractions (Shader, Framebuffer, Cubemaps, Textures)
Definition opengl.h:10
RenderingPass
Pipeline rendering passes.
Definition common.h:26
GeometryPass
Vertex rendering passes.
Definition common.h:14