forked from bartvdbraak/blender
77b4c66cc3
Rename PHY_GetActiveScene() to KX_GetActiveScene(): more logical name Add KX_GetActiveEngine() new KX_KetsjiEngine::GetClockTime(void) to return current render frame time: if the CPU does not keep up with the frame rate, up to 5 consecutive logic frames are processed between each render frame, so that the logic system stays accurate even if the graphic system is slow. For the video texture module, it is important to stay in sync with the render frame: no need to update the texture for logic frame. BL_Texture::swapTexture(): texture id manipulation BL_Texture::getTex() : return material texture Enable video support in ffmpeg for Linux.
138 lines
3.0 KiB
C++
138 lines
3.0 KiB
C++
#ifndef __KX_BLENDER_MATERIAL_H__
|
|
#define __KX_BLENDER_MATERIAL_H__
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include "RAS_IPolygonMaterial.h"
|
|
#include "BL_Material.h"
|
|
#include "BL_Texture.h"
|
|
#include "BL_Shader.h"
|
|
#include "BL_BlenderShader.h"
|
|
|
|
#include "PyObjectPlus.h"
|
|
|
|
#include "MT_Vector3.h"
|
|
#include "MT_Vector4.h"
|
|
|
|
struct MTFace;
|
|
class KX_Scene;
|
|
|
|
class KX_BlenderMaterial : public PyObjectPlus, public RAS_IPolyMaterial
|
|
{
|
|
Py_Header;
|
|
public:
|
|
// --------------------------------
|
|
KX_BlenderMaterial(
|
|
class KX_Scene* scene,
|
|
BL_Material* mat,
|
|
bool skin,
|
|
int lightlayer,
|
|
PyTypeObject* T=&Type
|
|
);
|
|
|
|
virtual ~KX_BlenderMaterial();
|
|
|
|
// --------------------------------
|
|
virtual TCachingInfo GetCachingInfo(void) const {
|
|
return (void*) this;
|
|
}
|
|
|
|
virtual
|
|
bool Activate(
|
|
RAS_IRasterizer* rasty,
|
|
TCachingInfo& cachingInfo
|
|
) const;
|
|
|
|
virtual
|
|
void ActivateMeshSlot(
|
|
const RAS_MeshSlot & ms,
|
|
RAS_IRasterizer* rasty
|
|
) const;
|
|
|
|
void ActivateMat(
|
|
RAS_IRasterizer* rasty,
|
|
TCachingInfo& cachingInfo
|
|
)const;
|
|
|
|
void ActivatShaders(
|
|
RAS_IRasterizer* rasty,
|
|
TCachingInfo& cachingInfo
|
|
)const;
|
|
|
|
void ActivateBlenderShaders(
|
|
RAS_IRasterizer* rasty,
|
|
TCachingInfo& cachingInfo
|
|
)const;
|
|
|
|
MTFace* GetMTFace(void) const;
|
|
unsigned int* GetMCol(void) const;
|
|
BL_Texture * getTex (unsigned int idx) {
|
|
return (idx < MAXTEX) ? mTextures + idx : NULL;
|
|
}
|
|
|
|
// for ipos
|
|
void UpdateIPO(
|
|
MT_Vector4 rgba, MT_Vector3 specrgb,
|
|
MT_Scalar hard, MT_Scalar spec,
|
|
MT_Scalar ref, MT_Scalar emit, MT_Scalar alpha
|
|
);
|
|
|
|
// --------------------------------
|
|
virtual PyObject* _getattr(const STR_String& attr);
|
|
virtual int _setattr(const STR_String& attr, PyObject *pyvalue);
|
|
|
|
KX_PYMETHOD_DOC( KX_BlenderMaterial, getShader );
|
|
KX_PYMETHOD_DOC( KX_BlenderMaterial, getMaterialIndex );
|
|
KX_PYMETHOD_DOC( KX_BlenderMaterial, getTexture );
|
|
KX_PYMETHOD_DOC( KX_BlenderMaterial, setTexture );
|
|
|
|
KX_PYMETHOD_DOC( KX_BlenderMaterial, setBlending );
|
|
|
|
// --------------------------------
|
|
// pre calculate to avoid pops/lag at startup
|
|
virtual void OnConstruction( );
|
|
|
|
static void EndFrame();
|
|
|
|
private:
|
|
BL_Material* mMaterial;
|
|
BL_Shader* mShader;
|
|
BL_BlenderShader* mBlenderShader;
|
|
KX_Scene* mScene;
|
|
BL_Texture mTextures[MAXTEX]; // texture array
|
|
bool mUserDefBlend;
|
|
unsigned int mBlendFunc[2];
|
|
bool mModified;
|
|
bool mConstructed; // if false, don't clean on exit
|
|
|
|
void SetBlenderGLSLShader();
|
|
|
|
void ActivatGLMaterials( RAS_IRasterizer* rasty )const;
|
|
void ActivateTexGen( RAS_IRasterizer *ras ) const;
|
|
|
|
bool UsesLighting(RAS_IRasterizer *rasty) const;
|
|
|
|
// message centers
|
|
void setTexData( bool enable,RAS_IRasterizer *ras);
|
|
void setBlenderShaderData( bool enable, RAS_IRasterizer *ras);
|
|
void setShaderData( bool enable, RAS_IRasterizer *ras);
|
|
|
|
void setObjectMatrixData(int i, RAS_IRasterizer *ras);
|
|
void setTexMatrixData(int i);
|
|
|
|
void setLightData();
|
|
|
|
// cleanup stuff
|
|
void OnExit();
|
|
|
|
// shader chacing
|
|
static BL_BlenderShader *mLastBlenderShader;
|
|
static BL_Shader *mLastShader;
|
|
|
|
mutable int mPass;
|
|
};
|
|
|
|
|
|
#endif
|