Changeset View
Changeset View
Standalone View
Standalone View
source/gameengine/Ketsji/BL_Texture.h
| /* | |||||
| * ***** BEGIN GPL LICENSE BLOCK ***** | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or | |||||
| * modify it under the terms of the GNU General Public License | |||||
| * as published by the Free Software Foundation; either version 2 | |||||
| * of the License, or (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * You should have received a copy of the GNU General Public License | |||||
| * along with this program; if not, write to the Free Software Foundation, | |||||
| * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
| * | |||||
| * ***** END GPL LICENSE BLOCK ***** | |||||
| */ | |||||
| /** \file BL_Texture.h | /** \file BL_Texture.h | ||||
| * \ingroup ketsji | * \ingroup ketsji | ||||
| Context not available. | |||||
| #ifndef __BL_TEXTURE_H__ | #ifndef __BL_TEXTURE_H__ | ||||
| #define __BL_TEXTURE_H__ | #define __BL_TEXTURE_H__ | ||||
| // #include <vector> | #include "RAS_Texture.h" | ||||
| // #include <map> | #include "EXP_Value.h" | ||||
| #include "MT_Matrix4x4.h" | |||||
| #include "KX_Camera.h" | |||||
| // -- | #ifdef USE_MATHUTILS | ||||
| struct Image; | /// Setup mathutils callbacks. | ||||
| struct EnvMap; | void BL_Texture_Mathutils_Callback_Init(); | ||||
| class BL_Material; | #endif | ||||
| class RAS_Rect; | |||||
| class RAS_ICanvas; | |||||
| //class RTData; | |||||
| #include "STR_String.h" | |||||
| class BL_Texture | class BL_Texture : public CValue, public RAS_Texture | ||||
| { | { | ||||
| Py_Header | |||||
| private: | private: | ||||
| unsigned int mTexture; // Bound texture unit data | bool m_isCubeMap; | ||||
| bool mOk; // ... | MTex *m_mtex; | ||||
| bool mNeedsDeleted; // If generated | GPUTexture *m_gpuTex; | ||||
| unsigned int mType; // enum TEXTURE_2D | CUBE_MAP | |||||
| int mUnit; // Texture unit associated with mTexture | struct { | ||||
| unsigned int mEnvState; // cache textureEnv | unsigned int bindcode; | ||||
| static unsigned int mDisableState; // speed up disabling calls | float colintensfac; | ||||
| float colfac; | |||||
| void InitNonPow2Tex(unsigned int *p,int x,int y,bool mipmap ); | float alphafac; | ||||
| void InitGLTex(unsigned int *p,int x,int y,bool mipmap ); | float specintensfac; | ||||
| void InitGLCompressedTex(struct ImBuf *p, bool mipmap); | float speccolorfac; | ||||
| public: | float hardnessfac; | ||||
| BL_Texture(); | float emitfac; | ||||
| ~BL_Texture( ); | float mirrorfac; | ||||
| float normalfac; | |||||
| bool Ok(); | float parallaxbumpfac; | ||||
| int GetUnit() {return mUnit;} | float parallaxstepfac; | ||||
| void SetUnit(int unit) {mUnit = unit;} | float lodbias; | ||||
| float ior; | |||||
| unsigned int GetTextureType() const; | float ratio; | ||||
| void DeleteTex(); | float uvrot; | ||||
| float uvoffset[3]; | |||||
| bool InitFromImage(int unit, Image *img, bool mipmap); | float uvsize[3]; | ||||
| bool InitCubeMap(int unit,EnvMap *cubemap ); | } m_savedData; | ||||
| bool IsValid(); | public: | ||||
| void Validate(); | BL_Texture(MTex *mtex); | ||||
| virtual ~BL_Texture(); | |||||
| static void ActivateFirst(); | |||||
| static void DisableAllTextures(); | // stuff for cvalue related things | ||||
| static void ActivateUnit(int unit); | virtual std::string GetName(); | ||||
| static int GetMaxUnits(); | |||||
| static int GetPow2(int x); | virtual bool Ok() const; | ||||
| static void SplitEnvMap(EnvMap *map); | virtual bool IsCubeMap() const; | ||||
| virtual MTex *GetMTex() const; | |||||
| void ActivateTexture(); | virtual Tex *GetTex() const; | ||||
| void SetMapping(int mode); | virtual Image *GetImage() const; | ||||
| void DisableUnit(); | virtual GPUTexture *GetGPUTexture() const; | ||||
| void setTexEnv(BL_Material *mat, bool modulate=false); | |||||
| unsigned int swapTexture (unsigned int newTex) { | virtual unsigned int GetTextureType(); | ||||
| // swap texture codes | |||||
| unsigned int tmp = mTexture; | enum {MaxUnits = 8}; | ||||
| mTexture = newTex; | |||||
| // return original texture code | virtual void CheckValidTexture(); | ||||
| return tmp; | virtual void ActivateTexture(int unit); | ||||
| } | virtual void DisableTexture(); | ||||
| unsigned int swapTexture(unsigned int bindcode); | |||||
| #ifdef WITH_CXX_GUARDEDALLOC | |||||
| MEM_CXX_CLASS_ALLOC_FUNCS("GE:BL_Texture") | #ifdef WITH_PYTHON | ||||
| #endif | |||||
| static PyObject *pyattr_get_diffuse_intensity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_diffuse_intensity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_diffuse_factor(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_diffuse_factor(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_alpha(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_alpha(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_specular_intensity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_specular_intensity(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_specular_factor(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_specular_factor(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_hardness(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_hardness(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_emit(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_emit(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_mirror(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_mirror(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_normal(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_normal(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_parallax_bump(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_parallax_bump(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_parallax_step(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_parallax_step(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_lod_bias(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_lod_bias(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_bind_code(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_bind_code(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_cube_map(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static PyObject *pyattr_get_ior(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_ior(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_refraction_ratio(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_refraction_ratio(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_uv_rotation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_uv_rotation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_uv_offset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_uv_offset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| static PyObject *pyattr_get_uv_size(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef); | |||||
| static int pyattr_set_uv_size(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value); | |||||
| #endif // WITH_PYTHON | |||||
| }; | }; | ||||
| #endif /* __BL_TEXTURE_H__ */ | #endif // __BL_TEXTURE_H__ | ||||
| Context not available. | |||||