Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/Ketsji/BL_Shader.h')
-rw-r--r--source/gameengine/Ketsji/BL_Shader.h180
1 files changed, 83 insertions, 97 deletions
diff --git a/source/gameengine/Ketsji/BL_Shader.h b/source/gameengine/Ketsji/BL_Shader.h
index e3dc4b19773..aef4b42a85a 100644
--- a/source/gameengine/Ketsji/BL_Shader.h
+++ b/source/gameengine/Ketsji/BL_Shader.h
@@ -9,7 +9,6 @@
#include "EXP_PyObjectPlus.h"
#include "BL_Material.h"
#include "BL_Texture.h"
-// --
#include "MT_Matrix4x4.h"
#include "MT_Matrix3x3.h"
#include "MT_Tuple2.h"
@@ -18,17 +17,19 @@
/**
* BL_Sampler
- * Sampler access
+ * Sampler access
*/
class BL_Sampler
{
public:
- BL_Sampler():
+ BL_Sampler()
+ :
mLoc(-1)
{
}
- int mLoc; // Sampler location
-
+
+ int mLoc; // Sampler location
+
#ifdef WITH_CXX_GUARDEDALLOC
MEM_CXX_CLASS_ALLOC_FUNCS("GE:BL_Sampler")
#endif
@@ -36,27 +37,23 @@ public:
/**
* BL_Uniform
- * uniform storage
+ * uniform storage
*/
-class BL_Uniform
+class BL_Uniform
{
private:
- int mLoc; // Uniform location
- void* mData; // Memory allocated for variable
- bool mDirty; // Caching variable
- int mType; // Enum UniformTypes
- bool mTranspose; // Transpose matrices
- const int mDataLen; // Length of our data
+ int mLoc; // Uniform location
+ void *mData; // Memory allocated for variable
+ bool mDirty; // Caching variable
+ int mType; // Enum UniformTypes
+ bool mTranspose; // Transpose matrices
+ const int mDataLen; // Length of our data
public:
BL_Uniform(int data_size);
~BL_Uniform();
-
-
- void Apply(class BL_Shader *shader);
- void SetData(int location, int type, bool transpose=false);
enum UniformTypes {
- UNI_NONE =0,
+ UNI_NONE = 0,
UNI_INT,
UNI_FLOAT,
UNI_INT2,
@@ -70,10 +67,11 @@ public:
UNI_MAX
};
- int GetLocation() { return mLoc; }
- void* getData() { return mData; }
-
-
+ void Apply(class BL_Shader *shader);
+ void SetData(int location, int type, bool transpose = false);
+ int GetLocation() { return mLoc; }
+ void *getData() { return mData; }
+
#ifdef WITH_CXX_GUARDEDALLOC
MEM_CXX_CLASS_ALLOC_FUNCS("GE:BL_Uniform")
#endif
@@ -81,22 +79,23 @@ public:
/**
* BL_DefUniform
- * pre defined uniform storage
+ * pre defined uniform storage
*/
class BL_DefUniform
{
public:
- BL_DefUniform() :
+ BL_DefUniform()
+ :
mType(0),
mLoc(0),
mFlag(0)
{
}
- int mType;
- int mLoc;
- unsigned int mFlag;
-
-
+
+ int mType;
+ int mLoc;
+ unsigned int mFlag;
+
#ifdef WITH_CXX_GUARDEDALLOC
MEM_CXX_CLASS_ALLOC_FUNCS("GE:BL_DefUniform")
#endif
@@ -104,46 +103,46 @@ public:
/**
* BL_Shader
- * shader access
+ * shader access
*/
class BL_Shader : public PyObjectPlus
{
Py_Header
private:
- typedef std::vector<BL_Uniform*> BL_UniformVec;
- typedef std::vector<BL_DefUniform*> BL_UniformVecDef;
-
- unsigned int mShader; // Shader object
- int mPass; // 1.. unused
- bool mOk; // Valid and ok
- bool mUse; // ...
-//BL_Sampler mSampler[MAXTEX]; // Number of samplers
- int mAttr; // Tangent attribute
- const char* vertProg; // Vertex program string
- const char* fragProg; // Fragment program string
- bool mError; // ...
- bool mDirty; //
+ typedef std::vector<BL_Uniform *> BL_UniformVec;
+ typedef std::vector<BL_DefUniform *> BL_UniformVecDef;
+
+ unsigned int mShader; // Shader object
+ int mPass; // 1.. unused
+ bool mOk; // Valid and ok
+ bool mUse;
+ //BL_Sampler mSampler[MAXTEX]; // Number of samplers
+ int mAttr; // Tangent attribute
+ const char *vertProg; // Vertex program string
+ const char *fragProg; // Fragment program string
+ bool mError;
+ bool mDirty;
+
+ // Stored uniform variables
+ BL_UniformVec mUniforms;
+ BL_UniformVecDef mPreDef;
// Compiles and links the shader
bool LinkProgram();
- // Stored uniform variables
- BL_UniformVec mUniforms;
- BL_UniformVecDef mPreDef;
-
// search by location
- BL_Uniform* FindUniform(const int location);
+ BL_Uniform *FindUniform(const int location);
+
// clears uniform data
- void ClearUniforms();
+ void ClearUniforms();
public:
BL_Shader();
virtual ~BL_Shader();
- // Unused for now tangent is set as
- // tex coords
+ // Unused for now tangent is set as tex coords
enum AttribTypes {
- SHD_TANGENT =1
+ SHD_TANGENT = 1
};
enum GenType {
@@ -151,76 +150,63 @@ public:
MODELVIEWMATRIX_TRANSPOSE,
MODELVIEWMATRIX_INVERSE,
MODELVIEWMATRIX_INVERSETRANSPOSE,
-
- // Model matrix
MODELMATRIX,
MODELMATRIX_TRANSPOSE,
MODELMATRIX_INVERSE,
MODELMATRIX_INVERSETRANSPOSE,
-
- // View Matrix
VIEWMATRIX,
VIEWMATRIX_TRANSPOSE,
VIEWMATRIX_INVERSE,
VIEWMATRIX_INVERSETRANSPOSE,
-
- // Current camera position
CAM_POS,
-
- // RAS timer
CONSTANT_TIMER
};
- const char* GetVertPtr();
- const char* GetFragPtr();
- void SetVertPtr( char *vert );
- void SetFragPtr( char *frag );
-
- // ---
- int getNumPass() {return mPass;}
- bool GetError() {return mError;}
- // ---
- //const BL_Sampler* GetSampler(int i);
- void SetSampler(int loc, int unit);
-
- bool Ok()const;
- unsigned int GetProg();
- void SetProg(bool enable);
- int GetAttribute() { return mAttr; }
-
- // --
+ const char *GetVertPtr();
+ const char *GetFragPtr();
+ void SetVertPtr(char *vert);
+ void SetFragPtr(char *frag);
+ int getNumPass() { return mPass; }
+ bool GetError() { return mError; }
+
+ //const BL_Sampler *GetSampler(int i);
+ void SetSampler(int loc, int unit);
+ bool Ok() const;
+ unsigned int GetProg();
+ void SetProg(bool enable);
+ int GetAttribute() { return mAttr; }
+
// Apply methods : sets colected uniforms
void ApplyShader();
void UnloadShader();
// Update predefined uniforms each render call
- void Update(const class RAS_MeshSlot & ms, class RAS_IRasterizer* rasty);
-
- //// Set sampler units (copied)
- //void InitializeSampler(int unit, BL_Texture* texture );
-
-
- void SetUniformfv(int location,int type, float *param, int size,bool transpose=false);
- void SetUniformiv(int location,int type, int *param, int size,bool transpose=false);
+ void Update(const class RAS_MeshSlot &ms, class RAS_IRasterizer *rasty);
+ // Set sampler units (copied)
+ //void InitializeSampler(int unit, BL_Texture *texture);
+ void SetUniformfv(int location, int type, float *param, int size, bool transpose = false);
+ void SetUniformiv(int location, int type, int *param, int size, bool transpose = false);
int GetAttribLocation(const char *name);
void BindAttribute(const char *attr, int loc);
int GetUniformLocation(const char *name);
-
- void SetUniform(int uniform, const MT_Tuple2& vec);
- void SetUniform(int uniform, const MT_Tuple3& vec);
- void SetUniform(int uniform, const MT_Tuple4& vec);
- void SetUniform(int uniform, const MT_Matrix4x4& vec, bool transpose=false);
- void SetUniform(int uniform, const MT_Matrix3x3& vec, bool transpose=false);
- void SetUniform(int uniform, const float& val);
- void SetUniform(int uniform, const float* val, int len);
- void SetUniform(int uniform, const int* val, int len);
- void SetUniform(int uniform, const unsigned int& val);
+ void SetUniform(int uniform, const MT_Tuple2 &vec);
+ void SetUniform(int uniform, const MT_Tuple3 &vec);
+ void SetUniform(int uniform, const MT_Tuple4 &vec);
+ void SetUniform(int uniform, const MT_Matrix4x4 &vec, bool transpose = false);
+ void SetUniform(int uniform, const MT_Matrix3x3 &vec, bool transpose = false);
+ void SetUniform(int uniform, const float &val);
+ void SetUniform(int uniform, const float *val, int len);
+ void SetUniform(int uniform, const int *val, int len);
+ void SetUniform(int uniform, const unsigned int &val);
void SetUniform(int uniform, const int val);
// Python interface
#ifdef WITH_PYTHON
- virtual PyObject *py_repr(void) { return PyUnicode_FromFormat("BL_Shader\n\tvertex shader:%s\n\n\tfragment shader%s\n\n", vertProg, fragProg); }
+ virtual PyObject *py_repr()
+ {
+ return PyUnicode_FromFormat("BL_Shader\n\tvertex shader:%s\n\n\tfragment shader%s\n\n", vertProg, fragProg);
+ }
// -----------------------------------
KX_PYMETHOD_DOC(BL_Shader, setSource);