#pragma once #include "defines.h" #include #include #include #include #include "VUMeter.h" //#include "ScriptState.h" #include "Renderjob.h" #include "Texture.h" #include "Shader.h" #include "PSSM.h" #include "Water.h" #include "Environment.h" #include "TerrainGrid.h" #include "FluidContext.h" #include "random.h" #include "camera.h" ///////////////////////////////////////////////////////////////////////////// // Konstanten ///////////////////////////////////////////////////////////////////////////// extern const float c_2PI; extern const float c_PI; ///////////////////////////////////////////////////////////////////////////// // Globale Daten ///////////////////////////////////////////////////////////////////////////// extern LPDIRECT3D9 g_D3D; extern IDirect3DDevice9 *g_d3d_device; extern D3DPRESENT_PARAMETERS d3dpp; extern UINT g_nShadowResolution; extern UINT g_nEnvResolution; extern UINT g_nEnvBlurResolution; extern float g_fResolutionFactor; extern int g_iResolutionFactorExp; extern D3DLIGHT9 d3dLight[3]; extern D3DMATERIAL9 d3dMaterial; extern D3DXMATRIX g_matView; extern D3DXMATRIX g_matProjection; enum TextureIndices { TI_RotMatrix= 0, TI_Random= 1, TI_RandomCube= 2, TI_Wave=3, TI_LightSpec1D= 7, TI_First1D= 8, TI_White= 8, TI_Light1D= 9, TI_LightTest= 10, TextureCount= 32, TI_IgnoreSetting= -1, TI_CLAMP= -2, }; extern Texture g_pTextures[ TextureCount ]; enum RenderTargetIndices { RT_DEPTH, RT_COLOR, RT_AUX1, RT_AUX2, RT_SHADOW, RT_REFLECTION_DEPTH, RT_REFLECTION, RT_CUBE_DEPTH, RT_COUNT }; extern IDirect3DTexture9* g_pFullScreenRT[ RT_COUNT ]; enum CubeRenderTargetIndices { RT_ENVCUBE, RT_ENVCUBEINT, RT_CUBE_COUNT }; extern IDirect3DCubeTexture9* g_pCubeRT[RT_CUBE_COUNT]; enum RenderTargetSurfaceIndices { RTS_DEFAULT_DS, RTS_DEPTH, RTS_DEPTH_MS, RTS_COLOR, RTS_COLOR_MS, RTS_AUX1, RTS_AUX2, RTS_SHADOW, RTS_REFLECTION_DEPTH, RTS_REFLECTION, RTS_CUBE_DEPTH, RTS_ENVCUBE1, RTS_ENVCUBE2, RTS_ENVCUBE3, RTS_ENVCUBE4, RTS_ENVCUBE5, RTS_ENVCUBE6, RTS_ENVCUBEINT1, RTS_ENVCUBEINT2, RTS_ENVCUBEINT3, RTS_ENVCUBEINT4, RTS_ENVCUBEINT5, RTS_ENVCUBEINT6, RTS_AUX_DS, RTS_CUBE_DS, RTS_COUNT }; extern IDirect3DSurface9* g_pFullScreenRTS[ RTS_COUNT ]; extern unsigned int g_nFullScreenResX[ RTS_COUNT ]; extern unsigned int g_nFullScreenResY[ RTS_COUNT ]; extern SCameraDefinition g_Camera; extern D3DXVECTOR3 g_CamFront; extern D3DXVECTOR3 g_LightDir; extern float g_fGlow; extern float g_fCamTime; extern float g_fShaderBeat; extern SCameraDefinition g_CubeMapCamera; extern D3DXVECTOR3 g_CubeMapLightDir; extern PSSM g_PSSM; extern Water g_OceanWater; extern Environment g_Environment; extern TerrainGrid g_IsleTerrainGrid; extern TerrainGrid g_CaveTerrainGrid; extern TerrainGrid g_CaveGroundTerrainGrid; extern FluidContext g_FluidContext; extern Fluid g_Fluid; enum PointMapIndex { PMI_Spike, PMI_Cylinder, PMI_Greeble1, PMI_Greeble2, PMI_Greeble3, PMI_Greeble4, PMI_Count }; enum FluidIndex { FI_Spike, FI_Cylinder, FI_Greeble1, FI_Greeble2, FI_Greeble3, FI_Greeble4, FI_Flock, FI_Count }; extern D3DXVECTOR4 g_FluidPointMap[PMI_Count][100000]; extern FluidParticleSystem g_FluidParticleSystem[FI_Count]; extern float g_FluidParticleSize[FI_Count]; extern float g_PointMapDistance[PMI_Count]; extern float g_StartMeltTime; extern float g_EndMeltTime; float TimeToFrozenObj( float fTime ); enum ObjectIndices { OI_Test= 0, OI_TextFirst= 0, OI_TextLast= 63, OI_FlockFirst= 64, OI_FlockLast= 127, OI_OBJTEST= 128, OI_OBJTEST_LAST= OI_OBJTEST + 15, OI_CYLINDER, OI_SPIKEBALL, OI_GREEBLE_1, OI_GREEBLE_2, OI_GREEBLE_3, OI_GREEBLE_4, OI_ISLE_FIRST, OI_ISLE_LAST= OI_ISLE_FIRST + 31, OI_ISLE_BASE_FIRST, OI_ISLE_BASE_LAST= OI_ISLE_BASE_FIRST+ 31, OI_CAVE_FIRST, OI_CAVE_LAST= OI_CAVE_FIRST + 1, OI_CAVE_LIGHT_FIRST, OI_CAVE_LIGHT_LAST= OI_CAVE_LIGHT_FIRST + 31, OI_CAVE_GROUND_FIRST, OI_CAVE_GROUND_LAST= OI_CAVE_GROUND_FIRST + 3, OI_SWARM_FIRST, OI_SWARM_LAST= OI_SWARM_FIRST + 95, OI_MAGE, OI_YETI1, OI_YETI2, OI_MAGE2, OI_OUTRO1, OI_OUTRO2, OI_OUTRO3, ObjectCount= 1024, OI_SKY= ObjectCount, OI_SKY_CAVE, OI_SKY_CUBEMAP, OI_OCEAN, OI_FLUIDS, SceneObjCount, }; static const int g_ObjGroupsDesc[]= { 0, SceneObjCount - 1, OI_SKY, OI_SKY, OI_SKY_CAVE, OI_SKY_CAVE, OI_SKY_CUBEMAP, OI_SKY_CUBEMAP, OI_OCEAN, OI_OCEAN, OI_ISLE_FIRST, OI_ISLE_BASE_LAST, OI_CAVE_FIRST, OI_CAVE_LIGHT_LAST, OI_CAVE_GROUND_FIRST, OI_CAVE_GROUND_LAST, OI_CYLINDER, OI_CYLINDER, OI_SPIKEBALL, OI_SPIKEBALL, OI_GREEBLE_1, OI_GREEBLE_1, OI_GREEBLE_2, OI_GREEBLE_2, OI_GREEBLE_3, OI_GREEBLE_3, OI_GREEBLE_4, OI_GREEBLE_4, OI_TextFirst, OI_TextLast, OI_FLUIDS, OI_FLUIDS, OI_SWARM_FIRST, OI_SWARM_LAST, OI_MAGE, OI_YETI2, OI_MAGE2, OI_MAGE2, OI_OUTRO1, OI_OUTRO3, -1 }; extern Renderjob g_Objects[ ObjectCount ]; extern Renderjob* g_pEditObject; extern int g_ObjGroupIndex[SceneObjCount]; const int g_SceneMaskCount= 32; #ifdef EXTRACODE extern DWORD g_SceneMask[g_SceneMaskCount]; #else extern DWORD g_SceneMask[]; #endif extern Renderjob g_SkyBox; extern Renderjob g_Ocean; extern Renderjob g_FullScreenQuad; const int g_iShaderCount= 64; extern Shader g_Shaders[ g_iShaderCount ]; extern DWORD g_dwTimeReplaceStart; extern int g_iTempo; const int g_iSampleOffsetGeneral= 2205; extern int g_iSampleOffset; extern int g_dwSamplesPassed; extern int g_dwSamples; extern SVUMeter g_vuBaseDrum; extern SVUMeter g_vuSnare; extern RandomGenerator g_Random; enum ShaderIndices { PreDepth, PSSM_Proj, SSAO, SSAO_BlurH, SSAO_BlurV, DOF_Intensity, DOF, BlurBilH, BlurBilV, Underwater, Underwater_Filter, Ray_Mask, Ray_Extrude, BlurH, BlurV, Extract_InvAlpha, Phong, Sky, CaveSky, EnvSky, SkyDepth, Text, EnvLit, Crystal, Ocean, Terrain, Cave, CaveGround, TerrainDepth, FluidDepth, FluidPosition, FluidNormal, FluidBlur, FluidCompose, TexGen_Perlin, TexGen_Wave, TexGen_Normal, TexGen_CubeBlur, Overlay_Logo, Overlay_Fade }; #ifdef EXTRACODE extern char g_ShaderVSGeneral[ 65536 ]; extern char g_ShaderPSPhong[ 65536 ]; extern char g_ShaderPSCrystal[ 65536 ]; extern char g_ShaderPSDepth[ 65536 ]; extern char g_ShaderPSText[ 65536 ]; extern char g_ShaderPSEnvLit[ 65536 ]; extern char g_ShaderVSSky[ 65536 ]; extern char g_ShaderPSSky[ 65536 ]; extern char g_ShaderVSOcean[ 65536 ]; extern char g_ShaderPSOcean[ 65536 ]; extern char g_ShaderVSFSQuad[ 65536 ]; extern char g_ShaderPSTexGen[ 65536 ]; extern char g_ShaderPSPSSM[ 65536 ]; extern char g_ShaderPSAmbOcc[ 65536 ]; extern char g_ShaderPSDOF[ 65536 ]; extern char g_ShaderPSRay[ 65536 ]; extern char g_ShaderPSBlur[ 65536 ]; extern char g_ShaderPSTerrain[ 65536 ]; extern char g_ShaderVSFluid[ 65536 ]; extern char g_ShaderPSFluid[ 65536 ]; #else #include "shaderdata.h" #endif void InitGlobals(); bool IsObjInScene( ObjectIndices oi );