|
|
//===== Copyright (c), Valve Corporation, All rights reserved. ======//
#ifndef imaterialsystem_declarations_h
#define imaterialsystem_declarations_h
#ifndef IMPLEMENT_OPERATOR_EQUAL
// Define a reasonable operator=
#define IMPLEMENT_OPERATOR_EQUAL( _classname ) \
public: \ _classname &operator=( const _classname &src ) \ { \ memcpy( this, &src, sizeof(_classname) ); \ return *this; \ } #endif
// Sergiy: moved to _declarations.h
/** EAPS3 [ pWallace ]
* Moved to DmaPacketPcStubs.h: * * - Standard vertex shader constants */
enum MaterialMatrixMode_t { MATERIAL_VIEW = 0, MATERIAL_PROJECTION,
/*
MATERIAL_MATRIX_UNUSED0, MATERIAL_MATRIX_UNUSED1, MATERIAL_MATRIX_UNUSED2, MATERIAL_MATRIX_UNUSED3, MATERIAL_MATRIX_UNUSED4, MATERIAL_MATRIX_UNUSED5, MATERIAL_MATRIX_UNUSED6, MATERIAL_MATRIX_UNUSED7, */ // Texture matrices; used to be UNUSED
MATERIAL_TEXTURE0, MATERIAL_TEXTURE1, MATERIAL_TEXTURE2, MATERIAL_TEXTURE3, MATERIAL_TEXTURE4, MATERIAL_TEXTURE5, MATERIAL_TEXTURE6, MATERIAL_TEXTURE7,
MATERIAL_MODEL,
// Total number of matrices
NUM_MATRIX_MODES = MATERIAL_MODEL+1,
// Number of texture transforms
NUM_TEXTURE_TRANSFORMS = MATERIAL_TEXTURE7 - MATERIAL_TEXTURE0 + 1 };
/*******************************************************************************
* MaterialFogMode_t *******************************************************************************/
enum MaterialFogMode_t { MATERIAL_FOG_NONE, MATERIAL_FOG_LINEAR, MATERIAL_FOG_LINEAR_BELOW_FOG_Z, };
//--------------------------------------------------------------------------------
// Uberlight parameters
//--------------------------------------------------------------------------------
struct UberlightState_t { UberlightState_t() { m_fNearEdge = 2.0f; m_fFarEdge = 100.0f; m_fCutOn = 10.0f; m_fCutOff = 650.0f; m_fShearx = 0.0f; m_fSheary = 0.0f; m_fWidth = 0.3f; m_fWedge = 0.05f; m_fHeight = 0.3f; m_fHedge = 0.05f; m_fRoundness = 0.8f; }
float m_fNearEdge; float m_fFarEdge; float m_fCutOn; float m_fCutOff; float m_fShearx; float m_fSheary; float m_fWidth; float m_fWedge; float m_fHeight; float m_fHedge; float m_fRoundness;
IMPLEMENT_OPERATOR_EQUAL( UberlightState_t ); };
class ITexture; class IMaterial;
// fixme: should move this into something else.
struct FlashlightState_t { FlashlightState_t() { m_bEnableShadows = false; // Provide reasonable defaults for shadow depth mapping parameters
m_bDrawShadowFrustum = false; m_flShadowMapResolution = 1024.0f; m_flShadowFilterSize = 3.0f; m_flShadowSlopeScaleDepthBias = 16.0f; m_flShadowDepthBias = 0.0005f; m_flShadowJitterSeed = 0.0f; m_flFlashlightTime = 0.0f; m_flShadowAtten = 0.0f; m_flAmbientOcclusion = 0.0f; m_bScissor = false; m_nLeft = -1; m_nTop = -1; m_nRight = -1; m_nBottom = -1; m_nShadowQuality = 0; m_bShadowHighRes = false; m_bUberlight = false; m_bVolumetric = false; m_flNoiseStrength = 0.8f; m_nNumPlanes = 64; m_flPlaneOffset = 0.0f; m_flVolumetricIntensity = 1.0f; m_bOrtho = false; m_fOrthoLeft = -1.0f; m_fOrthoRight = 1.0f; m_fOrthoTop = -1.0f; m_fOrthoBottom = 1.0f; m_flProjectionSize = 500.0f; m_flProjectionRotation = 0.0f; }
Vector m_vecLightOrigin; Quaternion m_quatOrientation; float m_NearZ; float m_FarZ; float m_fHorizontalFOVDegrees; float m_fVerticalFOVDegrees; bool m_bOrtho; float m_fOrthoLeft; float m_fOrthoRight; float m_fOrthoTop; float m_fOrthoBottom; float m_fQuadraticAtten; float m_fLinearAtten; float m_fConstantAtten; float m_FarZAtten; float m_Color[4]; ITexture *m_pSpotlightTexture; IMaterial *m_pProjectedMaterial; int m_nSpotlightTextureFrame;
// Shadow depth mapping parameters
bool m_bEnableShadows; bool m_bDrawShadowFrustum; float m_flShadowMapResolution; float m_flShadowFilterSize; float m_flShadowSlopeScaleDepthBias; float m_flShadowDepthBias; float m_flShadowJitterSeed; float m_flShadowAtten; float m_flAmbientOcclusion; int m_nShadowQuality; bool m_bShadowHighRes;
// simple projection
float m_flProjectionSize; float m_flProjectionRotation;
// Uberlight parameters
bool m_bUberlight; UberlightState_t m_uberlightState;
bool m_bVolumetric; float m_flNoiseStrength; float m_flFlashlightTime; int m_nNumPlanes; float m_flPlaneOffset; float m_flVolumetricIntensity;
// Getters for scissor members
bool DoScissor() const { return m_bScissor; } int GetLeft() const { return m_nLeft; } int GetTop() const { return m_nTop; } int GetRight() const { return m_nRight; } int GetBottom() const { return m_nBottom; }
private:
friend class CShadowMgr;
bool m_bScissor; int m_nLeft; int m_nTop; int m_nRight; int m_nBottom; IMPLEMENT_OPERATOR_EQUAL( FlashlightState_t ) ; };
#endif
|