20 #if !defined(__MITSUBA_RENDER_SHADER_H_)
21 #define __MITSUBA_RENDER_SHADER_H_
23 #include <mitsuba/mitsuba.h>
76 virtual Float getAlpha()
const;
79 virtual void putDependencies(std::vector<Shader *> &deps);
88 virtual bool isComplete()
const;
99 virtual void generateCode(std::ostringstream &oss,
100 const std::string &evalName,
101 const std::vector<std::string> &depNames)
const = 0;
110 virtual void resolve(
const GPUProgram *program,
const std::string &evalName,
111 std::vector<int> ¶meterIDs)
const;
119 virtual void bind(
GPUProgram *program,
const std::vector<int> ¶meterIDs,
120 int &textureUnitOffset)
const;
123 virtual void unbind()
const;
126 virtual void cleanup(
Renderer *renderer);
EShaderType getType() const
Definition: shader.h:67
Shader base class for use with a VPL-style renderer.
Definition: shader.h:54
EShaderType
Definition: shader.h:56
Abstract hardware resource.
Definition: shader.h:39
virtual ~HWResource()
Definition: shader.h:43
uint32_t getFlags() const
Return a list of flags.
Definition: shader.h:70
Abstract shader program (for fragment/vertex shading)
Definition: gpuprogram.h:30
#define MTS_DECLARE_CLASS()
This macro must be used in the initial definition in classes that derive from Object.
Definition: class.h:158
Abstract renderer implementation.
Definition: renderer.h:79
Parent of all Mitsuba classes.
Definition: object.h:38
EFlags
Definition: shader.h:62