38 #ifndef IECOREGL_SHADER_H
39 #define IECOREGL_SHADER_H
41 #include <boost/utility.hpp>
43 #include "IECoreGL/Export.h"
45 #include "IECoreGL/Bindable.h"
46 #include "IECoreGL/TypeIds.h"
48 #include "IECore/CompoundData.h"
53 IE_CORE_FORWARDDECLARE( Shader );
54 IE_CORE_FORWARDDECLARE( Texture );
67 Shader(
const std::string &vertexSource,
const std::string &fragmentSource );
71 Shader(
const std::string &vertexSource,
const std::string &geometrySource,
const std::string &fragmentSource );
76 GLuint program()
const;
85 const std::string &vertexSource()
const;
86 const std::string &geometrySource()
const;
87 const std::string &fragmentSource()
const;
90 struct IECOREGL_API Parameter
108 bool operator == (
const Parameter &other )
const;
116 void uniformParameterNames( std::vector<std::string> &names )
const;
120 const Parameter *uniformParameter(
const std::string &name )
const;
123 void vertexAttributeNames( std::vector<std::string> &names )
const;
127 const Parameter *vertexAttribute(
const std::string &name )
const;
138 const Parameter *csParameter()
const;
154 IE_CORE_DECLAREMEMBERPTR(
Setup )
156 Setup( ConstShaderPtr shader );
159 const Shader *shader()
const;
161 void addUniformParameter(
const std::string &name, ConstTexturePtr value );
162 void addUniformParameter(
const std::string &name, IECore::ConstDataPtr value );
165 void addVertexAttribute(
const std::string &name, IECore::ConstDataPtr value, GLuint divisor = 0 );
168 bool hasCsValue()
const;
189 GLint m_previousProgram;
190 const Setup &m_setup;
196 IE_CORE_FORWARDDECLARE( MemberData );
198 MemberDataPtr m_memberData;
202 IE_CORE_DECLAREPTR(
Setup );
209 static const std::string &defaultVertexSource();
217 static const std::string &defaultGeometrySource();
220 static const std::string &defaultFragmentSource();
222 static const std::string &constantFragmentSource();
224 static const std::string &lambertFragmentSource();
232 static Shader *constant();
235 static Shader *facingRatio();
240 IE_CORE_FORWARDDECLARE( Implementation )
241 ImplementationPtr m_implementation;
247 #endif // IECOREGL_SHADER_H
The namespace within which all CoreGL functionality is defined.
Definition: AlphaTexture.h:41
A class to represent GLSL shaders.
Definition: Shader.h:57
Definition: RefCounted.h:124
Definition: RunTimeTyped.h:211