You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
8.0 KiB
C
258 lines
8.0 KiB
C
|
|
#ifndef RPMATFX_H
|
|
#define RPMATFX_H
|
|
|
|
/*===========================================================================*
|
|
*--- Include files ---------------------------------------------------------*
|
|
*===========================================================================*/
|
|
|
|
#include "../src/rwcore.h"
|
|
#include "../world/rpworld.h"
|
|
|
|
/*---- start: ./matfx.h----*/
|
|
|
|
#ifndef RPMATFX_MATFX_H
|
|
#define RPMATFX_MATFX_H
|
|
|
|
|
|
/**
|
|
* \defgroup rpmatfx RpMatFX
|
|
* \ingroup materials
|
|
*
|
|
* 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, /**<No material effect. */
|
|
rpMATFXEFFECTBUMPMAP = 1, /**<Bump mapping */
|
|
rpMATFXEFFECTENVMAP = 2, /**<Environment mapping */
|
|
rpMATFXEFFECTBUMPENVMAP = 3, /**<Bump and environment mapping */
|
|
rpMATFXEFFECTDUAL = 4, /**<Dual pass */
|
|
rpMATFXEFFECTUVTRANSFORM = 5, /**<Base UV transform */
|
|
rpMATFXEFFECTDUALUVTRANSFORM = 6, /**<Dual UV transform (2 pass) */
|
|
|
|
rpMATFXEFFECTMAX,
|
|
rpMATFXNUMEFFECTS = rpMATFXEFFECTMAX - 1,
|
|
|
|
rpMATFXFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
|
|
};
|
|
typedef enum RpMatFXMaterialFlags RpMatFXMaterialFlags;
|
|
|
|
|
|
/*===========================================================================*
|
|
*--- Plugin API Functions --------------------------------------------------*
|
|
*===========================================================================*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif /* __cplusplus */
|
|
|
|
/*--- Plugin functions ------------------------------------------------------*/
|
|
extern void
|
|
RpMatFXMaterialDataSetFreeListCreateParams( RwInt32 blockSize,
|
|
RwInt32 numBlocksToPrealloc );
|
|
|
|
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 );
|
|
|
|
/*--- UV Transform + Dual UV Transform---------------------------------------*/
|
|
extern RpMaterial *
|
|
RpMatFXMaterialSetUVTransformMatrices( RpMaterial *material,
|
|
RwMatrix *baseTransform,
|
|
RwMatrix *dualTransform );
|
|
|
|
extern const RpMaterial *
|
|
RpMatFXMaterialGetUVTransformMatrices( const RpMaterial *material,
|
|
RwMatrix **baseTransform,
|
|
RwMatrix **dualTransform );
|
|
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
|
|
#endif /* RPMATFX_MATFX_H */
|
|
|
|
/*---- end: ./matfx.h----*/
|
|
|
|
/*---- start: c:/daily/rwsdk/plugin/matfx/d3d9/matfxplatform.h----*/
|
|
|
|
/**
|
|
* \defgroup rpmatfxd3d9 D3D9
|
|
* \ingroup rpmatfx
|
|
*
|
|
* D3D9 specific documentation.
|
|
*/
|
|
|
|
|
|
/******************************************************************************
|
|
* Enum types
|
|
*/
|
|
|
|
/**
|
|
* \ingroup rpmatfxd3d9
|
|
* \ref RpMatFXD3D9Pipeline
|
|
*/
|
|
enum RpMatFXD3D9Pipeline
|
|
{
|
|
rpNAMATFXD3D9PIPELINE = 0,
|
|
rpMATFXD3D9ATOMICPIPELINE = 1, /**<D3D9 atomic material effect rendering pipeline. */
|
|
rpMATFXD3D9WORLDSECTORPIPELINE = 2, /**<D3D9 world sector material effect rendering pipeline. */
|
|
rpMATFXD3D9PIPELINEMAX,
|
|
rpMATFXD3D9PIPELINEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
|
|
};
|
|
typedef enum RpMatFXD3D9Pipeline RpMatFXD3D9Pipeline;
|
|
|
|
/******************************************************************************
|
|
* Global types
|
|
*/
|
|
|
|
/******************************************************************************
|
|
* Functions
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif /* __cplusplus */
|
|
|
|
extern RxPipeline *
|
|
RpMatFXGetD3D9Pipeline( RpMatFXD3D9Pipeline d3d9Pipeline );
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
/*---- end: c:/daily/rwsdk/plugin/matfx/d3d9/matfxplatform.h----*/
|
|
|
|
#endif /* RPMATFX_H */
|
|
|
|
|