LosaDev source snapshot 2019
This commit is contained in:
commit
c198676e97
20588 files changed
+8812878
No files matched your search
@@ -0,0 +1,164 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: DXUTEffectMap.h
|
||||
//
|
||||
// Desc: Maps the set of standard semantics and annotations to a collection
|
||||
// of ID3DXEffect objects.
|
||||
//
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#pragma once
|
||||
#ifndef DXUT_EFFECTMAP_H
|
||||
#define DXUT_EFFECTMAP_H
|
||||
|
||||
const int MAX_INDEX = 5;
|
||||
|
||||
enum DXUT_SEMANTIC
|
||||
{
|
||||
DXUT_UNKNOWN_SEMANTIC,
|
||||
|
||||
DXUT_Diffuse,
|
||||
DXUT_Specular,
|
||||
DXUT_Ambient,
|
||||
DXUT_SpecularPower,
|
||||
DXUT_Emissive,
|
||||
DXUT_Normal,
|
||||
DXUT_Height,
|
||||
DXUT_Refraction,
|
||||
DXUT_Opacity,
|
||||
DXUT_Environment,
|
||||
DXUT_EnvironmentNormal,
|
||||
DXUT_Fresnel,
|
||||
|
||||
DXUT_World,
|
||||
DXUT_WorldInverse,
|
||||
DXUT_WorldInverseTranspose,
|
||||
DXUT_WorldView,
|
||||
DXUT_WorldViewInverse,
|
||||
DXUT_WorldViewInverseTranspose,
|
||||
DXUT_WorldViewProjection,
|
||||
DXUT_WorldViewProjectionInverse,
|
||||
DXUT_WorldViewProjectionInverseTranspose,
|
||||
DXUT_View,
|
||||
DXUT_ViewInverse,
|
||||
DXUT_ViewInverseTranspose,
|
||||
DXUT_ViewProjection,
|
||||
DXUT_ViewProjectionInverse,
|
||||
DXUT_ViewProjectionInverseTranspose,
|
||||
DXUT_Projection,
|
||||
DXUT_ProjectionInverse,
|
||||
DXUT_ProjectionInverseTranspose,
|
||||
|
||||
DXUT_RenderTargetDimensions,
|
||||
DXUT_RenderTargetClipping,
|
||||
DXUT_Time,
|
||||
DXUT_LastTime,
|
||||
DXUT_ElapsedTime,
|
||||
DXUT_Position,
|
||||
DXUT_Direction,
|
||||
DXUT_BoundingCenter,
|
||||
DXUT_BoundingSphereSize,
|
||||
DXUT_BoundingSphereMin,
|
||||
DXUT_BoundingSphereMax,
|
||||
DXUT_BoundingBoxSize,
|
||||
DXUT_BoundingBoxMin,
|
||||
DXUT_BoundingBoxMax,
|
||||
DXUT_Attenuation,
|
||||
DXUT_RenderColorTarget,
|
||||
DXUT_RenderDepthStencilTarget,
|
||||
DXUT_UnitsScale,
|
||||
DXUT_StandardsGlobal,
|
||||
|
||||
NUM_DXUT_SEMANTICS
|
||||
};
|
||||
|
||||
enum DXUT_OBJECT
|
||||
{
|
||||
DXUT_UNKNOWN_OBJECT,
|
||||
|
||||
DXUT_Geometry,
|
||||
DXUT_Light,
|
||||
DXUT_Camera,
|
||||
DXUT_Frame,
|
||||
|
||||
NUM_DXUT_OBJECTS
|
||||
};
|
||||
|
||||
|
||||
struct ParamList
|
||||
{
|
||||
ID3DXEffect* pEffect;
|
||||
CGrowableArray< D3DXHANDLE > ahParameters;
|
||||
|
||||
void Reset();
|
||||
};
|
||||
|
||||
|
||||
class CDXUTEffectMap
|
||||
{
|
||||
public:
|
||||
CDXUTEffectMap() { Reset(); }
|
||||
~CDXUTEffectMap() { Reset(); }
|
||||
|
||||
VOID Reset();
|
||||
|
||||
HRESULT AddEffect( ID3DXEffect* pEffect );
|
||||
HRESULT RemoveEffect( ID3DXEffect* pEffect );
|
||||
|
||||
HRESULT SetStandardParameter( const WCHAR* strSemantic, const WCHAR* strObject, DWORD dwObjectIndex, float* pData, DWORD dwDataLen, const WCHAR* strType = NULL, const WCHAR* strUnits = NULL, const WCHAR* strSpace = NULL );
|
||||
HRESULT SetStandardParameter( DXUT_SEMANTIC eSemantic, DXUT_OBJECT eObject, DWORD dwObjectIndex, float* pData, DWORD dwDataLen, const WCHAR* strType = NULL, const WCHAR* strUnits = NULL, const WCHAR* strSpace = NULL );
|
||||
|
||||
HRESULT SetWorldMatrix( D3DXMATRIXA16* pWorldMatrix, const WCHAR* strUnits = NULL );
|
||||
HRESULT SetViewMatrix( D3DXMATRIXA16* pViewMatrix, const WCHAR* strUnits = NULL );
|
||||
HRESULT SetProjectionMatrix( D3DXMATRIXA16* pProjectionMatrix );
|
||||
|
||||
static DXUT_SEMANTIC StringToSemantic( const char* cstrSemantic );
|
||||
static DXUT_SEMANTIC StringToSemantic( const WCHAR* strSemantic );
|
||||
static DXUT_OBJECT StringToObject( const char* cstrObject );
|
||||
static DXUT_OBJECT StringToObject( const WCHAR* strObject );
|
||||
|
||||
private:
|
||||
HRESULT UpdateTransforms( DXUT_SEMANTIC eSemantic, const WCHAR* strUnits = L"m" );
|
||||
|
||||
D3DXMATRIXA16 m_matWorld;
|
||||
D3DXMATRIXA16 m_matView;
|
||||
D3DXMATRIXA16 m_matProjection;
|
||||
|
||||
// Database of DXUTEffect object parameter handles which are indexed accoring to
|
||||
// Semantic, Object annotation, index, and containing mesh pointer
|
||||
CGrowableArray<ParamList> m_Bindings[ NUM_DXUT_SEMANTICS ][ NUM_DXUT_OBJECTS ][ MAX_INDEX ];
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
inline bool StringBegins( const char* strTest, const char* strStartsWith )
|
||||
{
|
||||
return ( 0 == _strnicmp( strTest, strStartsWith, strlen(strStartsWith) ) );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
inline bool StringEquals( const char* strTest, const char* strEquals )
|
||||
{
|
||||
return( 0 == _stricmp( strTest, strEquals ) );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
inline void RemoveTrailingNumber( char* strWithoutNumber, DWORD dwBufLen, const char* str )
|
||||
{
|
||||
StringCchCopyA( strWithoutNumber, dwBufLen, str );
|
||||
|
||||
char* strIndex = strWithoutNumber + strlen(strWithoutNumber);
|
||||
|
||||
// If there is a digit at the end of the semantic discard it
|
||||
while( isdigit( (BYTE) (*(strIndex-1)) ) )
|
||||
{
|
||||
--strIndex;
|
||||
}
|
||||
|
||||
*strIndex = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif //DXUT_EFFECTMAP_H
|
||||
Reference in new issue
Block a user