Redline/source/transparency.h
maride 02061d74c2 Original 1.0.5 code
(as received from Jonas Echterhoff)
2016-04-02 14:43:55 +02:00

60 lines
1.3 KiB
C

#ifndef __TRANSPARENCY
#define __TRANSPARENCY
#include "vectors.h"
#include "fileio.h"
enum{
kMaterialBothSides=1<<0,
kMaterialUseAlphaChannel=1<<1,
kMaterialSphereMap=1<<2,
kMaterialDisableWrap=1<<3,
kMaterialAlphaTest=1<<4,
kMaterialDisableShadow=1<<5,
kMaterialDisableWrapS=1<<6,
kMaterialDisableWrapT=1<<7,
kMaterialEnableGlow=1<<8,
//kMaterialBlurMap=1<<9,
kMaterialEnableShine=1<<10,
kMaterialDisableLighting=1<<11,
kMaterialMoveUVs=1<<12
};
typedef struct{
int numTextures;
tFileRef *texRefs;
} tTexRefRecord;
typedef struct{
tFileRef texRef;
int flags;
float shininess;
tVector3 specular,ambient,diffuse;
}tPolyMaterial;
typedef struct{
tVector2 texel;
tVector3 normal,vertex;
tVector2 texel2;
} tVertexArrayVertex;
typedef tVertexArrayVertex tVertexArrayElement[3];
typedef struct{
tVertexArrayElement v;
int textureSet;
int ghost;
float glow,blur;
tPolyMaterial *mat;
}tTransparentPoly;
extern float gTunnelFactor,gGlowFactor,gShineFactor,gBlurMapFactor;
extern int gGhostShine;
void InitTransparency();
void DrawTransparentPolys(tVector3 *clipPlanes);
tTransparentPoly* GetNextTransparentPoly(int allocateMaterial);
int UseMaterial(tPolyMaterial *mat,int allowTransparency,int textureSet);
void UseMaterial2(tPolyMaterial *mat,tPolyMaterial *mat2,int textureSet);
#endif