MaterialX 1.38.2
ShaderRenderer.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_SHADERRENDERER_H
7#define MATERIALX_SHADERRENDERER_H
8
11
17
19
20namespace MaterialX
21{
22
24using ShaderRendererPtr = std::shared_ptr<class ShaderRenderer>;
25
28class MX_RENDER_API ShaderRenderer
29{
30 public:
33
34 public:
35 virtual ~ShaderRenderer() { }
36
39
41 virtual void initialize() { }
42
45 {
46 _imageHandler = imageHandler;
47 }
48
51 {
52 return _imageHandler;
53 }
54
57 {
58 _lightHandler = lightHandler;
59 }
60
63 {
64 return _lightHandler;
65 }
66
69 {
70 _geometryHandler = geometryHandler;
71 }
72
75 {
76 return _geometryHandler;
77 }
78
81 {
82 _viewHandler = viewHandler;
83 }
84
87 {
88 return _viewHandler;
89 }
90
94
96 virtual void createProgram(ShaderPtr shader);
97
100 virtual void createProgram(const StageMap& stages);
101
103 virtual void validateInputs() { }
104
106 virtual void setSize(unsigned int width, unsigned int height);
107
109 virtual void render() { }
110
114
116 virtual ImagePtr captureImage(ImagePtr image = nullptr)
117 {
118 return nullptr;
119 }
120
122
123 protected:
125 _width(0),
126 _height(0),
127 _baseType(Image::BaseType::UINT8)
128 { }
129
130 ShaderRenderer(unsigned int width, unsigned int height, Image::BaseType baseType) :
131 _width(width),
132 _height(height),
133 _baseType(baseType)
134 { }
135
136 protected:
137 unsigned int _width;
138 unsigned int _height;
139 Image::BaseType _baseType;
140
141 ImageHandlerPtr _imageHandler;
142 GeometryHandlerPtr _geometryHandler;
143 LightHandlerPtr _lightHandler;
144 ViewHandlerPtr _viewHandler;
145};
146
151class MX_RENDER_API ExceptionRenderError : public Exception
152{
153 public:
154 ExceptionRenderError(const string& msg, const StringVec& errorLog = StringVec()) :
155 Exception(msg),
156 _errorLog(errorLog)
157 {
158 }
159
161 Exception(e),
162 _errorLog(e._errorLog)
163 {
164 }
165
166 ExceptionRenderError& operator=(const ExceptionRenderError& e)
167 {
168 Exception::operator=(e);
169 _errorLog = e._errorLog;
170 return *this;
171 }
172
173 const StringVec& errorLog() const
174 {
175 return _errorLog;
176 }
177
178 private:
179 StringVec _errorLog;
180};
181
182} // namespace MaterialX
183
184#endif
Geometry loader interfaces.
std::shared_ptr< class GeometryHandler > GeometryHandlerPtr
Shared pointer to an GeometryHandler.
Definition: GeometryHandler.h:55
shared_ptr< Image > ImagePtr
A shared pointer to an image.
Definition: Image.h:24
Image handler interfaces.
std::shared_ptr< ImageHandler > ImageHandlerPtr
Shared pointer to an ImageHandler.
Definition: ImageHandler.h:33
Handler for hardware lights.
std::shared_ptr< class LightHandler > LightHandlerPtr
Shared pointer to a LightHandler.
Definition: LightHandler.h:23
vector< string > StringVec
A vector of strings.
Definition: Library.h:56
std::unordered_map< string, string > StringMap
An unordered map with strings as both keys and values.
Definition: Library.h:58
shared_ptr< Shader > ShaderPtr
Shared pointer to a Shader.
Definition: Library.h:34
Macros for declaring imported and exported symbols.
Shader instance class created during shader generation.
std::shared_ptr< class ShaderRenderer > ShaderRendererPtr
Shared pointer to a shader renderer.
Definition: ShaderRenderer.h:24
Utility for providing view data.
std::shared_ptr< class ViewHandler > ViewHandlerPtr
Shared pointer to a ViewHandler.
Definition: ViewHandler.h:20
The base class for exceptions that are propagated from the MaterialX library to the client applicatio...
Definition: Exception.h:23
An exception that is thrown when a rendering operation fails.
Definition: ShaderRenderer.h:152
Class representing an image in system memory.
Definition: Image.h:44
Base class for renderers that generate shader code to produce images.
Definition: ShaderRenderer.h:29
virtual ImagePtr captureImage(ImagePtr image=nullptr)
Capture the current rendered output as an image.
Definition: ShaderRenderer.h:116
virtual void render()
Render the current program to produce an image.
Definition: ShaderRenderer.h:109
void setImageHandler(ImageHandlerPtr imageHandler)
Set the image handler used by this renderer for image I/O.
Definition: ShaderRenderer.h:44
void setLightHandler(LightHandlerPtr lightHandler)
Set the light handler used by this renderer for light bindings.
Definition: ShaderRenderer.h:56
virtual void validateInputs()
Validate inputs for the program.
Definition: ShaderRenderer.h:103
void setGeometryHandler(GeometryHandlerPtr geometryHandler)
Set the geometry handler.
Definition: ShaderRenderer.h:68
GeometryHandlerPtr getGeometryHandler() const
Return the geometry handler.
Definition: ShaderRenderer.h:74
ImageHandlerPtr getImageHandler() const
Return the image handler.
Definition: ShaderRenderer.h:50
virtual void initialize()
Initialize the renderer.
Definition: ShaderRenderer.h:41
ViewHandlerPtr getViewHandler() const
Return the view handler.
Definition: ShaderRenderer.h:86
LightHandlerPtr getLightHandler() const
Return the light handler.
Definition: ShaderRenderer.h:62
StringMap StageMap
A map with name and source code for each shader stage.
Definition: ShaderRenderer.h:32
void setViewHandler(ViewHandlerPtr viewHandler)
Set the view handler.
Definition: ShaderRenderer.h:80