/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// //@cpp #ifndef S3D_DRV_D3D9_PROG_H #define S3D_DRV_D3D9_PROG_H #include "drv_d3d9_types.h" #include "drv_d3d9_env.h" #include "drv_d3d9_param.h" #include "drv_d3d9_paramblk.h" /////////////////////////////////////////////////////////////////////////////// struct s3d_CDrvD3d9VertBufDesc; /////////////////////////////////////////////////////////////////////////////// struct s3d_CDrvD3d9VertComprFmt : public s3d_CUtilPtrBase { int m_Normal; int m_BoneWgh; //int m_SampTexArray[S3D_DRV_D3D9_MAX_ATTR_CNT]; }; //@ typedef s3d_CUtilPtr s3d_CDrvD3d9VertComprFmtPtr; /////////////////////////////////////////////////////////////////////////////// //@ struct s3d_CDrvD3d9ProgCtx : public s3d_CUtilPtrBase { s3d_CUtilMsgHandlerPtr m_MsgHandler; s3d_CCompResMgrPtr m_ResMgr; s3d_CUtilMemPoolPtr m_MemPool; s3d_CUtilAtomMgrPtr m_AtomMgr; s3d_CCompSupplPtr m_UnivProgSuppl; s3d_CCompSupplPtr m_UnivProgGivenSuppl; s3d_CDrvD3d9Env *m_Env; s3d_CDrvD3d9ParamPtr m_D3dParam; s3d_CDrvD3d9Device m_D3dDev; DWORD m_MaxVS; DWORD m_MaxPS; int m_MaxLightCnt; int m_MaxAttrCnt; int m_MaxSampCnt; }; //@ typedef s3d_CUtilPtr s3d_CDrvD3d9ProgCtxPtr; /////////////////////////////////////////////////////////////////////////////// //@ struct s3d_CDrvD3d9ProgDecl { s3d_CSysIntps m_SemanticsCnt; s3d_CUtilOwnArray m_SemanticArray; int m_ProgUsage; s3d_CDrvD3d9ProgDecl(); }; /////////////////////////////////////////////////////////////////////////////// //@ struct s3d_CDrvD3d9Prog : public s3d_CDrvGfxProg { s3d_CDrvD3d9Prog(); ~s3d_CDrvD3d9Prog(); //@ virtual void TrackParams( s3d_CDrvGfxParam_cr GfxParam, const s3d_CDrvD3d9ParamBlk &ParamBlk, const s3d_CDrvD3d9ParamBlkState &ParamBlkState); //@ virtual void TrackTransfBone( s3d_CSysIntps BoneIdxCnt, const s3d_CSysInt32u *BoneIdxData, s3d_CSysIntps MatBoneCnt, const D3DXMATRIXA16 *MatBoneArray); //@ virtual void CalcVertBufDesc( const s3d_CDrvGfxCharge *Charge, s3d_CDrvD3d9VertBufDesc &VertBufDesc) const; //@ s3d_CUtilStr_cr GetInfo() const; //@ virtual void GetVertProgCodeInfoName( s3d_CUtilStr &CodeInfo, s3d_CUtilStr &CodeName) const; //@ virtual void GetPixProgCodeInfoName( s3d_CUtilStr &CodeInfo, s3d_CUtilStr &CodeName) const; //@ virtual bool IsValid(); enum CUsage { Usage_BoneWgh = (1 << 0), Usage_BoneSubscr = (1 << 1), }; s3d_CDrvD3d9ProgCtxPtr m_ProgCtx; s3d_CDrvD3d9ProgDecl m_VertProgDecl; s3d_CDrvD3d9VertComprFmtPtr m_VertComprFmt; s3d_CDrvD3d9VertShader m_VertShader; s3d_CDrvD3d9PixShader m_PixShader; s3d_CUtilStr m_Info; s3d_CUtilMsgHandlerPtr m_ReportMsgHandler; s3d_CDrvGfxUnivProgPtr m_UnivProg; }; S3D_UTIL_RECOG_DECLAREINFO(s3d_CDrvD3d9Prog); //@ typedef s3d_CUtilPtr s3d_CDrvD3d9ProgPtr; /////////////////////////////////////////////////////////////////////////////// // Definitions S3D_SYS_INLINE s3d_CDrvD3d9ProgDecl::s3d_CDrvD3d9ProgDecl() { m_SemanticsCnt = 0; m_ProgUsage = 0; } /////////////////////////////////////////////////////////////////////////////// S3D_SYS_INLINE s3d_CUtilStr_cr s3d_CDrvD3d9Prog::GetInfo() const { return m_Info; } S3D_SYS_INLINE bool s3d_CDrvD3d9Prog::IsValid() { return true; } /////////////////////////////////////////////////////////////////////////////// #endif