MaterialX 1.38.2
GlslRenderer.h
Go to the documentation of this file.
1//
2// TM & (c) 2017 Lucasfilm Entertainment Company Ltd. and Lucasfilm Ltd.
3// All rights reserved. See LICENSE.txt for license.
4//
5
6#ifndef MATERIALX_GLSLRENDERER_H
7#define MATERIALX_GLSLRENDERER_H
8
11
13
16
18
19namespace MaterialX
20{
21
22using GLContextPtr = std::shared_ptr<class GLContext>;
23using SimpleWindowPtr = std::shared_ptr<class SimpleWindow>;
24
26using GlslRendererPtr = std::shared_ptr<class GlslRenderer>;
27
42class MX_RENDERGLSL_API GlslRenderer : public ShaderRenderer
43{
44 public:
46 static GlslRendererPtr create(unsigned int width = 512, unsigned int height = 512, Image::BaseType baseType = Image::BaseType::UINT8);
47
49 virtual ~GlslRenderer() { }
50
53
58 void initialize() override;
59
63
66 void createProgram(ShaderPtr shader) override;
67
70 void createProgram(const StageMap& stages) override;
71
73 void validateInputs() override;
74
76 void setSize(unsigned int width, unsigned int height) override;
77
79 void render() override;
80
82 void renderTextureSpace();
83
87
89 ImagePtr captureImage(ImagePtr image = nullptr) override;
90
93 {
94 return _frameBuffer;
95 }
96
98 GlslProgramPtr getProgram()
99 {
100 return _program;
101 }
102
104 void drawScreenSpaceQuad();
105
107 void setClearColor(const Color4& clearColor);
108
110
111 protected:
112 GlslRenderer(unsigned int width, unsigned int height, Image::BaseType baseType);
113
114 virtual void updateViewInformation();
115 virtual void updateWorldInformation();
116
117 private:
118 GlslProgramPtr _program;
119
120 GLFrameBufferPtr _frameBuffer;
121
122 bool _initialized;
123
124 const Vector3 _eye;
125 const Vector3 _center;
126 const Vector3 _up;
127 float _objectScale;
128
129 SimpleWindowPtr _window;
130 GLContextPtr _context;
131 Color4 _clearColor;
132};
133
134} // namespace MaterialX
135
136#endif
std::shared_ptr< class GLContext > GLContextPtr
GLContext shared pointer.
Definition: GLContext.h:38
OpenGL framebuffer handling.
std::shared_ptr< GLFramebuffer > GLFrameBufferPtr
Shared pointer to a GLFramebuffer.
Definition: GLFramebuffer.h:22
GLSL Program interfaces.
std::shared_ptr< class GlslRenderer > GlslRendererPtr
Shared pointer to a GlslRenderer.
Definition: GlslRenderer.h:26
shared_ptr< Image > ImagePtr
A shared pointer to an image.
Definition: Image.h:24
shared_ptr< Shader > ShaderPtr
Shared pointer to a Shader.
Definition: Library.h:34
Macros for declaring imported and exported symbols.
Base class for shader rendering.
A four-component color value.
Definition: Types.h:389
Helper class for rendering generated GLSL code to produce images.
Definition: GlslRenderer.h:43
GLFrameBufferPtr getFrameBuffer() const
Return the GL frame buffer.
Definition: GlslRenderer.h:92
GlslProgramPtr getProgram()
Return the GLSL program.
Definition: GlslRenderer.h:98
virtual ~GlslRenderer()
Destructor.
Definition: GlslRenderer.h:49
Base class for renderers that generate shader code to produce images.
Definition: ShaderRenderer.h:29
A vector of three floating-point values.
Definition: Types.h:303