mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-12-27 16:04:52 +01:00
74 lines
3.0 KiB
C
74 lines
3.0 KiB
C
|
/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */
|
||
|
|
||
|
#ifndef SE_INCL_RENDERSCENE_H
|
||
|
#define SE_INCL_RENDERSCENE_H
|
||
|
#ifdef PRAGMA_ONCE
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#include <Engine/Math/TextureMapping.h>
|
||
|
//#include <Engine/Graphics/Vertex.h>
|
||
|
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
// WORLD RENDER CONSTANTS
|
||
|
|
||
|
// scene polygon flags
|
||
|
#define SPOF_SELECTED (1UL<< 0) // is polygon currently selected or not?
|
||
|
#define SPOF_TRANSPARENT (1UL<< 1) // polygon has alpha keying
|
||
|
#define SPOF_RENDERFOG (1UL<< 9) // polygon has fog
|
||
|
#define SPOF_RENDERHAZE (1UL<<10) // polygon has haze
|
||
|
#define SPOF_BACKLIGHT (1UL<<31) // used internaly
|
||
|
|
||
|
// scene texture flags
|
||
|
#define STXF_CLAMPU (0x01) // clamp u coordinate in texture
|
||
|
#define STXF_CLAMPV (0x02) // clamp v coordinate in texture
|
||
|
#define STXF_REFLECTION (0x04) // clamp v coordinate in texture
|
||
|
#define STXF_AFTERSHADOW (0x08) // texture is to be applied after shadow
|
||
|
|
||
|
#define STXF_BLEND_OPAQUE (0x00) // opaque texture (just put it on screen)
|
||
|
#define STXF_BLEND_ALPHA (0x10) // alpha blend with screen
|
||
|
#define STXF_BLEND_ADD (0x20) // add to screen
|
||
|
#define STXF_BLEND_SHADE (0x30) // darken or brighten (same as used by shadow maps)
|
||
|
|
||
|
#define STXF_BLEND_MASK (0x70)
|
||
|
|
||
|
/*
|
||
|
* RENDER SCENE structures (for world purposes)
|
||
|
*/
|
||
|
// structure that holds information about a polygon that is fully on partially visible
|
||
|
struct ScenePolygon {
|
||
|
ScenePolygon *spo_pspoSucc; // next polygon in list
|
||
|
INDEX spo_iVtx0; // first vertex in arrays
|
||
|
INDEX spo_ctVtx; // number of vertices in arrays
|
||
|
INDEX *spo_piElements; // array of triangle elements
|
||
|
INDEX spo_ctElements; // element count
|
||
|
|
||
|
// texture and shadow parameters: 0, 1, 2 are texture maps, 3 is shadow
|
||
|
CMappingVectors spo_amvMapping[4]; // texture colors and alpha
|
||
|
COLOR spo_acolColors[4]; // texture flags
|
||
|
UBYTE spo_aubTextureFlags[4]; // current mip factors for each texture
|
||
|
// textures and shadowmap
|
||
|
class CTextureObject *spo_aptoTextures[3];
|
||
|
class CShadowMap *spo_psmShadowMap;
|
||
|
|
||
|
// internal for rendering
|
||
|
INDEX spo_iVtx0Pass; // index of first coordinate in per-pass arrays
|
||
|
COLOR spo_cColor; // polygon color (for flat or shadow modes)
|
||
|
ULONG spo_ulFlags; // polygon flags (selected or not? ...)
|
||
|
FLOAT spo_fNearestZ; // Z coord of nearest vertex to viewer
|
||
|
void *spo_pvPolygon; // user data for high level renderer (brush polygon)
|
||
|
};
|
||
|
|
||
|
// renders whole scene (all visible polygons) to screen drawport
|
||
|
void RenderScene( CDrawPort *pDP, ScenePolygon *pspoFirst, CAnyProjection3D &prProjection,
|
||
|
COLOR colSelection, BOOL bTranslucent);
|
||
|
// renders only scene z-buffer
|
||
|
void RenderSceneZOnly( CDrawPort *pDP, ScenePolygon *pspoFirst, CAnyProjection3D &prProjection);
|
||
|
// renders flat background of the scene
|
||
|
void RenderSceneBackground(CDrawPort *pDP, COLOR col);
|
||
|
|
||
|
|
||
|
#endif /* include-once check. */
|
||
|
|