#ifndef RPMATFX_H #define RPMATFX_H /*===========================================================================* *--- Include files ---------------------------------------------------------* *===========================================================================*/ #include "rwcore.h" #include "rpworld.h" /*---- start: ./matfx.h----*/ #ifndef RPMATFX_MATFX_H #define RPMATFX_MATFX_H /** * \defgroup rpmatfx RpMatFX * \ingroup rpplugin * * Material Effects Plugin for RenderWare Graphics. */ /*===========================================================================* *--- Global Types ----------------------------------------------------------* *===========================================================================*/ /** * \ingroup rpmatfx * RpMatFXMaterialFlags, this type represents the different types of * material effects that can be used on a material. The effects are * initialized with \ref RpMatFXMaterialSetEffects: */ enum RpMatFXMaterialFlags { rpMATFXEFFECTNULL = 0, rpMATFXEFFECTBUMPMAP = 1, /**<Bump mapping */ rpMATFXEFFECTENVMAP = 2, /**<Environment mapping */ rpMATFXEFFECTBUMPENVMAP = 3, /**<Bump and environment mapping */ rpMATFXEFFECTDUAL = 4, /**<Dual pass */ rpMATFXEFFECTMAX, rpMATFXNUMEFFECTS = rpMATFXEFFECTMAX - 1, rpMATFXFORCEENUMSIZEINT = RWFORCEENUMSIZEINT }; typedef enum RpMatFXMaterialFlags RpMatFXMaterialFlags; /*===========================================================================* *--- Plugin API Functions --------------------------------------------------* *===========================================================================*/ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /*--- Plugin functions ------------------------------------------------------*/ extern RwBool RpMatFXPluginAttach( void ); /*--- Setup functions -------------------------------------------------------*/ extern RpAtomic * RpMatFXAtomicEnableEffects( RpAtomic *atomic ); extern RwBool RpMatFXAtomicQueryEffects( RpAtomic *atomic ); extern RpWorldSector * RpMatFXWorldSectorEnableEffects( RpWorldSector *worldSector ); extern RwBool RpMatFXWorldSectorQueryEffects( RpWorldSector *worldSector ); extern RpMaterial * RpMatFXMaterialSetEffects( RpMaterial *material, RpMatFXMaterialFlags flags ); /*--- Setup Effects ---------------------------------------------------------*/ extern RpMaterial * RpMatFXMaterialSetupBumpMap( RpMaterial *material, RwTexture *texture, RwFrame *frame, RwReal coef ); extern RpMaterial * RpMatFXMaterialSetupEnvMap( RpMaterial *material, RwTexture *texture, RwFrame *frame, RwBool useFrameBufferAlpha, RwReal coef ); extern RpMaterial * RpMatFXMaterialSetupDualTexture( RpMaterial *material, RwTexture *texture, RwBlendFunction srcBlendMode, RwBlendFunction dstBlendMode ); /*--- Tinker with effects ---------------------------------------------------*/ extern RpMatFXMaterialFlags RpMatFXMaterialGetEffects( const RpMaterial *material ); /*--- Bump Map --------------------------------------------------------------*/ extern RpMaterial * RpMatFXMaterialSetBumpMapTexture( RpMaterial *material, RwTexture *texture ); extern RpMaterial * RpMatFXMaterialSetBumpMapFrame( RpMaterial *material, RwFrame *frame ); extern RpMaterial * RpMatFXMaterialSetBumpMapCoefficient( RpMaterial *material, RwReal coef ); extern RwTexture * RpMatFXMaterialGetBumpMapTexture( const RpMaterial *material ); extern RwTexture * RpMatFXMaterialGetBumpMapBumpedTexture( const RpMaterial *material ); extern RwFrame * RpMatFXMaterialGetBumpMapFrame( const RpMaterial *material ); extern RwReal RpMatFXMaterialGetBumpMapCoefficient( const RpMaterial *material ); /*--- Env Map ---------------------------------------------------------------*/ extern RpMaterial * RpMatFXMaterialSetEnvMapTexture( RpMaterial *material, RwTexture *texture ); extern RpMaterial * RpMatFXMaterialSetEnvMapFrame( RpMaterial *material, RwFrame *frame ); extern RpMaterial * RpMatFXMaterialSetEnvMapFrameBufferAlpha( RpMaterial *material, RwBool useFrameBufferAlpha ); extern RpMaterial * RpMatFXMaterialSetEnvMapCoefficient( RpMaterial *material, RwReal coef ); extern RwTexture * RpMatFXMaterialGetEnvMapTexture( const RpMaterial *material ); extern RwFrame * RpMatFXMaterialGetEnvMapFrame( const RpMaterial *material ); extern RwBool RpMatFXMaterialGetEnvMapFrameBufferAlpha( const RpMaterial *material ); extern RwReal RpMatFXMaterialGetEnvMapCoefficient( const RpMaterial *material ); /*--- Dual Pass -------------------------------------------------------------*/ extern RpMaterial * RpMatFXMaterialSetDualTexture( RpMaterial *material, RwTexture *texture ); extern RpMaterial * RpMatFXMaterialSetDualBlendModes( RpMaterial *material, RwBlendFunction srcBlendMode, RwBlendFunction dstBlendMode ); extern RwTexture * RpMatFXMaterialGetDualTexture( const RpMaterial *material ); extern const RpMaterial * RpMatFXMaterialGetDualBlendModes( const RpMaterial *material, RwBlendFunction *srcBlendMode, RwBlendFunction *dstBlendMode ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* RPMATFX_MATFX_H */ /*---- end: ./matfx.h----*/ /*---- start: c:/daily/rwsdk/plugin/matfx/d3d8/matfxplatform.h----*/ /** * \defgroup rpmatfxd3d8 D3D8 * \ingroup rpmatfx * * D3D8 specific documentation. */ /****************************************************************************** * Enum types */ /** * \ingroup rpmatfxd3d8 * \ref RpMatFXD3D8Pipeline */ enum RpMatFXD3D8Pipeline { rpNAMATFXD3D8PIPELINE = 0, rpMATFXD3D8ATOMICPIPELINE = 1, /**<D3D8 atomic material effect rendering pipeline. */ rpMATFXD3D8WORLDSECTORPIPELINE = 2, /**<D3D8 world sector material effect rendering pipeline. */ rpMATFXD3D8PIPELINEMAX, rpMATFXD3D8PIPELINEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT }; typedef enum RpMatFXD3D8Pipeline RpMatFXD3D8Pipeline; /****************************************************************************** * Global types */ /****************************************************************************** * Functions */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ extern RxPipeline * RpMatFXGetD3D8Pipeline( RpMatFXD3D8Pipeline d3d8Pipeline ); #ifdef __cplusplus } #endif /* __cplusplus */ /*---- end: c:/daily/rwsdk/plugin/matfx/d3d8/matfxplatform.h----*/ #endif /* RPMATFX_H */