mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-23 11:18:25 +00:00
647 lines
24 KiB
C
647 lines
24 KiB
C
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: d3dx9shader.h
|
|
// Content: D3DX Shader APIs
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "d3dx9.h"
|
|
|
|
#ifndef __D3DX9SHADER_H__
|
|
#define __D3DX9SHADER_H__
|
|
|
|
#define D3DXTX_VERSION(_Major,_Minor) (('T' << 24) | ('X' << 16) | ((_Major) << 8) | (_Minor))
|
|
|
|
#define D3DXSHADER_DEBUG (1 << 0)
|
|
#define D3DXSHADER_SKIPVALIDATION (1 << 1)
|
|
#define D3DXSHADER_SKIPOPTIMIZATION (1 << 2)
|
|
#define D3DXSHADER_PACKMATRIX_ROWMAJOR (1 << 3)
|
|
#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR (1 << 4)
|
|
#define D3DXSHADER_PARTIALPRECISION (1 << 5)
|
|
#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT (1 << 6)
|
|
#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT (1 << 7)
|
|
#define D3DXSHADER_NO_PRESHADER (1 << 8)
|
|
#define D3DXSHADER_AVOID_FLOW_CONTROL (1 << 9)
|
|
#define D3DXSHADER_PREFER_FLOW_CONTROL (1 << 10)
|
|
#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY (1 << 12)
|
|
#define D3DXSHADER_IEEE_STRICTNESS (1 << 13)
|
|
#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL (1 << 16)
|
|
|
|
|
|
// optimization level flags
|
|
#define D3DXSHADER_OPTIMIZATION_LEVEL0 (1 << 14)
|
|
#define D3DXSHADER_OPTIMIZATION_LEVEL1 0
|
|
#define D3DXSHADER_OPTIMIZATION_LEVEL2 ((1 << 14) | (1 << 15))
|
|
#define D3DXSHADER_OPTIMIZATION_LEVEL3 (1 << 15)
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXCONSTTABLE flags:
|
|
// -------------------
|
|
|
|
#define D3DXCONSTTABLE_LARGEADDRESSAWARE (1 << 17)
|
|
|
|
#ifndef D3DXFX_LARGEADDRESS_HANDLE
|
|
typedef LPCSTR D3DXHANDLE;
|
|
#else
|
|
typedef UINT_PTR D3DXHANDLE;
|
|
#endif
|
|
typedef D3DXHANDLE *LPD3DXHANDLE;
|
|
|
|
typedef struct _D3DXMACRO
|
|
{
|
|
LPCSTR Name;
|
|
LPCSTR Definition;
|
|
|
|
} D3DXMACRO, *LPD3DXMACRO;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXSEMANTIC:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef struct _D3DXSEMANTIC
|
|
{
|
|
UINT Usage;
|
|
UINT UsageIndex;
|
|
|
|
} D3DXSEMANTIC, *LPD3DXSEMANTIC;
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXREGISTER_SET:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum _D3DXREGISTER_SET
|
|
{
|
|
D3DXRS_BOOL,
|
|
D3DXRS_INT4,
|
|
D3DXRS_FLOAT4,
|
|
D3DXRS_SAMPLER,
|
|
|
|
// force 32-bit size enum
|
|
D3DXRS_FORCE_DWORD = 0x7fffffff
|
|
|
|
} D3DXREGISTER_SET, *LPD3DXREGISTER_SET;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXPARAMETER_CLASS:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum _D3DXPARAMETER_CLASS
|
|
{
|
|
D3DXPC_SCALAR,
|
|
D3DXPC_VECTOR,
|
|
D3DXPC_MATRIX_ROWS,
|
|
D3DXPC_MATRIX_COLUMNS,
|
|
D3DXPC_OBJECT,
|
|
D3DXPC_STRUCT,
|
|
|
|
// force 32-bit size enum
|
|
D3DXPC_FORCE_DWORD = 0x7fffffff
|
|
|
|
} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXPARAMETER_TYPE:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef enum _D3DXPARAMETER_TYPE
|
|
{
|
|
D3DXPT_VOID,
|
|
D3DXPT_BOOL,
|
|
D3DXPT_INT,
|
|
D3DXPT_FLOAT,
|
|
D3DXPT_STRING,
|
|
D3DXPT_TEXTURE,
|
|
D3DXPT_TEXTURE1D,
|
|
D3DXPT_TEXTURE2D,
|
|
D3DXPT_TEXTURE3D,
|
|
D3DXPT_TEXTURECUBE,
|
|
D3DXPT_SAMPLER,
|
|
D3DXPT_SAMPLER1D,
|
|
D3DXPT_SAMPLER2D,
|
|
D3DXPT_SAMPLER3D,
|
|
D3DXPT_SAMPLERCUBE,
|
|
D3DXPT_PIXELSHADER,
|
|
D3DXPT_VERTEXSHADER,
|
|
D3DXPT_PIXELFRAGMENT,
|
|
D3DXPT_VERTEXFRAGMENT,
|
|
D3DXPT_UNSUPPORTED,
|
|
|
|
// force 32-bit size enum
|
|
D3DXPT_FORCE_DWORD = 0x7fffffff
|
|
|
|
} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXCONSTANTTABLE_DESC:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef struct _D3DXCONSTANTTABLE_DESC
|
|
{
|
|
LPCSTR Creator; // Creator string
|
|
DWORD Version; // Shader version
|
|
UINT Constants; // Number of constants
|
|
|
|
} D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXCONSTANT_DESC:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef struct _D3DXCONSTANT_DESC
|
|
{
|
|
LPCSTR Name; // Constant name
|
|
|
|
D3DXREGISTER_SET RegisterSet; // Register set
|
|
UINT RegisterIndex; // Register index
|
|
UINT RegisterCount; // Number of registers occupied
|
|
|
|
D3DXPARAMETER_CLASS Class; // Class
|
|
D3DXPARAMETER_TYPE Type; // Component type
|
|
|
|
UINT Rows; // Number of rows
|
|
UINT Columns; // Number of columns
|
|
UINT Elements; // Number of array elements
|
|
UINT StructMembers; // Number of structure member sub-parameters
|
|
|
|
UINT Bytes; // Data size, in bytes
|
|
LPCVOID DefaultValue; // Pointer to default value
|
|
|
|
} D3DXCONSTANT_DESC, *LPD3DXCONSTANT_DESC;
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// ID3DXConstantTable:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef interface ID3DXConstantTable ID3DXConstantTable;
|
|
typedef interface ID3DXConstantTable *LPD3DXCONSTANTTABLE;
|
|
|
|
// {AB3C758F-093E-4356-B762-4DB18F1B3A01}
|
|
DEFINE_GUID(IID_ID3DXConstantTable,
|
|
0xab3c758f, 0x93e, 0x4356, 0xb7, 0x62, 0x4d, 0xb1, 0x8f, 0x1b, 0x3a, 0x1);
|
|
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXConstantTable
|
|
|
|
DECLARE_INTERFACE_(ID3DXConstantTable, IUnknown)
|
|
{
|
|
// IUnknown
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
// Buffer
|
|
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
|
|
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
|
|
|
|
// Descs
|
|
STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE;
|
|
STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
|
|
STDMETHOD_(UINT, GetSamplerIndex)(THIS_ D3DXHANDLE hConstant) PURE;
|
|
|
|
// Handle operations
|
|
STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
|
|
STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE;
|
|
STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
|
|
|
|
// Set Constants
|
|
STDMETHOD(SetDefaults)(THIS_ LPDIRECT3DDEVICE9 pDevice) PURE;
|
|
STDMETHOD(SetValue)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, LPCVOID pData, UINT Bytes) PURE;
|
|
STDMETHOD(SetBool)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, BOOL b) PURE;
|
|
STDMETHOD(SetBoolArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST BOOL* pb, UINT Count) PURE;
|
|
STDMETHOD(SetInt)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, INT n) PURE;
|
|
STDMETHOD(SetIntArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST INT* pn, UINT Count) PURE;
|
|
STDMETHOD(SetFloat)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, FLOAT f) PURE;
|
|
STDMETHOD(SetFloatArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST FLOAT* pf, UINT Count) PURE;
|
|
STDMETHOD(SetVector)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector) PURE;
|
|
STDMETHOD(SetVectorArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
|
|
STDMETHOD(SetMatrix)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
|
|
STDMETHOD(SetMatrixArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
|
STDMETHOD(SetMatrixPointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
|
STDMETHOD(SetMatrixTranspose)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
|
|
STDMETHOD(SetMatrixTransposeArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
|
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
|
};
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// ID3DXTextureShader:
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef interface ID3DXTextureShader ID3DXTextureShader;
|
|
typedef interface ID3DXTextureShader *LPD3DXTEXTURESHADER;
|
|
|
|
// {3E3D67F8-AA7A-405d-A857-BA01D4758426}
|
|
DEFINE_GUID(IID_ID3DXTextureShader,
|
|
0x3e3d67f8, 0xaa7a, 0x405d, 0xa8, 0x57, 0xba, 0x1, 0xd4, 0x75, 0x84, 0x26);
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXTextureShader
|
|
|
|
DECLARE_INTERFACE_(ID3DXTextureShader, IUnknown)
|
|
{
|
|
// IUnknown
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
|
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG, Release)(THIS) PURE;
|
|
|
|
// Gets
|
|
STDMETHOD(GetFunction)(THIS_ LPD3DXBUFFER *ppFunction) PURE;
|
|
STDMETHOD(GetConstantBuffer)(THIS_ LPD3DXBUFFER *ppConstantBuffer) PURE;
|
|
|
|
// Descs
|
|
STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE;
|
|
STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
|
|
|
|
// Handle operations
|
|
STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
|
|
STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE;
|
|
STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
|
|
|
|
// Set Constants
|
|
STDMETHOD(SetDefaults)(THIS) PURE;
|
|
STDMETHOD(SetValue)(THIS_ D3DXHANDLE hConstant, LPCVOID pData, UINT Bytes) PURE;
|
|
STDMETHOD(SetBool)(THIS_ D3DXHANDLE hConstant, BOOL b) PURE;
|
|
STDMETHOD(SetBoolArray)(THIS_ D3DXHANDLE hConstant, CONST BOOL* pb, UINT Count) PURE;
|
|
STDMETHOD(SetInt)(THIS_ D3DXHANDLE hConstant, INT n) PURE;
|
|
STDMETHOD(SetIntArray)(THIS_ D3DXHANDLE hConstant, CONST INT* pn, UINT Count) PURE;
|
|
STDMETHOD(SetFloat)(THIS_ D3DXHANDLE hConstant, FLOAT f) PURE;
|
|
STDMETHOD(SetFloatArray)(THIS_ D3DXHANDLE hConstant, CONST FLOAT* pf, UINT Count) PURE;
|
|
STDMETHOD(SetVector)(THIS_ D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector) PURE;
|
|
STDMETHOD(SetVectorArray)(THIS_ D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
|
|
STDMETHOD(SetMatrix)(THIS_ D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
|
|
STDMETHOD(SetMatrixArray)(THIS_ D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
|
STDMETHOD(SetMatrixPointerArray)(THIS_ D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
|
STDMETHOD(SetMatrixTranspose)(THIS_ D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
|
|
STDMETHOD(SetMatrixTransposeArray)(THIS_ D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
|
|
STDMETHOD(SetMatrixTransposePointerArray)(THIS_ D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
|
|
};
|
|
|
|
typedef enum _D3DXINCLUDE_TYPE
|
|
{
|
|
D3DXINC_LOCAL,
|
|
D3DXINC_SYSTEM,
|
|
|
|
// force 32-bit size enum
|
|
D3DXINC_FORCE_DWORD = 0x7fffffff
|
|
|
|
} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE;
|
|
|
|
typedef interface ID3DXInclude ID3DXInclude;
|
|
typedef interface ID3DXInclude *LPD3DXINCLUDE;
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ID3DXInclude
|
|
|
|
DECLARE_INTERFACE(ID3DXInclude)
|
|
{
|
|
STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
|
|
STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
|
|
};
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// APIs //////////////////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif //__cplusplus
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromFileA(
|
|
LPCSTR pSrcFile,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromFileW(
|
|
LPCWSTR pSrcFile,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileW
|
|
#else
|
|
#define D3DXAssembleShaderFromFile D3DXAssembleShaderFromFileA
|
|
#endif
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromResourceA(
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShaderFromResourceW(
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceW
|
|
#else
|
|
#define D3DXAssembleShaderFromResource D3DXAssembleShaderFromResourceA
|
|
#endif
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DXAssembleShader(
|
|
LPCSTR pSrcData,
|
|
UINT SrcDataLen,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
HRESULT WINAPI
|
|
D3DXCompileShaderFromFileA(
|
|
LPCSTR pSrcFile,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPCSTR pFunctionName,
|
|
LPCSTR pProfile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
HRESULT WINAPI
|
|
D3DXCompileShaderFromFileW(
|
|
LPCWSTR pSrcFile,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPCSTR pFunctionName,
|
|
LPCSTR pProfile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXCompileShaderFromFile D3DXCompileShaderFromFileW
|
|
#else
|
|
#define D3DXCompileShaderFromFile D3DXCompileShaderFromFileA
|
|
#endif
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DXCompileShaderFromResourceA(
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPCSTR pFunctionName,
|
|
LPCSTR pProfile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
HRESULT WINAPI
|
|
D3DXCompileShaderFromResourceW(
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPCSTR pFunctionName,
|
|
LPCSTR pProfile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXCompileShaderFromResource D3DXCompileShaderFromResourceW
|
|
#else
|
|
#define D3DXCompileShaderFromResource D3DXCompileShaderFromResourceA
|
|
#endif
|
|
|
|
|
|
HRESULT WINAPI
|
|
D3DXCompileShader(
|
|
LPCSTR pSrcData,
|
|
UINT SrcDataLen,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPCSTR pFunctionName,
|
|
LPCSTR pProfile,
|
|
DWORD Flags,
|
|
LPD3DXBUFFER* ppShader,
|
|
LPD3DXBUFFER* ppErrorMsgs,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
HRESULT WINAPI
|
|
D3DXDisassembleShader(
|
|
CONST DWORD* pShader,
|
|
BOOL EnableColorCode,
|
|
LPCSTR pComments,
|
|
LPD3DXBUFFER* ppDisassembly);
|
|
|
|
LPCSTR WINAPI
|
|
D3DXGetPixelShaderProfile(
|
|
LPDIRECT3DDEVICE9 pDevice);
|
|
|
|
LPCSTR WINAPI
|
|
D3DXGetVertexShaderProfile(
|
|
LPDIRECT3DDEVICE9 pDevice);
|
|
|
|
HRESULT WINAPI
|
|
D3DXFindShaderComment(
|
|
CONST DWORD* pFunction,
|
|
DWORD FourCC,
|
|
LPCVOID* ppData,
|
|
UINT* pSizeInBytes);
|
|
|
|
UINT WINAPI
|
|
D3DXGetShaderSize(
|
|
CONST DWORD* pFunction);
|
|
|
|
DWORD WINAPI
|
|
D3DXGetShaderVersion(
|
|
CONST DWORD* pFunction);
|
|
|
|
HRESULT WINAPI
|
|
D3DXGetShaderInputSemantics(
|
|
CONST DWORD* pFunction,
|
|
D3DXSEMANTIC* pSemantics,
|
|
UINT* pCount);
|
|
|
|
HRESULT WINAPI
|
|
D3DXGetShaderOutputSemantics(
|
|
CONST DWORD* pFunction,
|
|
D3DXSEMANTIC* pSemantics,
|
|
UINT* pCount);
|
|
|
|
HRESULT WINAPI
|
|
D3DXGetShaderSamplers(
|
|
CONST DWORD* pFunction,
|
|
LPCSTR* pSamplers,
|
|
UINT* pCount);
|
|
|
|
HRESULT WINAPI
|
|
D3DXGetShaderConstantTable(
|
|
CONST DWORD* pFunction,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
HRESULT WINAPI
|
|
D3DXGetShaderConstantTableEx(
|
|
CONST DWORD* pFunction,
|
|
DWORD Flags,
|
|
LPD3DXCONSTANTTABLE* ppConstantTable);
|
|
|
|
HRESULT WINAPI
|
|
D3DXCreateTextureShader(
|
|
CONST DWORD* pFunction,
|
|
LPD3DXTEXTURESHADER* ppTextureShader);
|
|
|
|
HRESULT WINAPI
|
|
D3DXPreprocessShaderFromFileA(
|
|
LPCSTR pSrcFile,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPD3DXBUFFER* ppShaderText,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
HRESULT WINAPI
|
|
D3DXPreprocessShaderFromFileW(
|
|
LPCWSTR pSrcFile,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPD3DXBUFFER* ppShaderText,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXPreprocessShaderFromFile D3DXPreprocessShaderFromFileW
|
|
#else
|
|
#define D3DXPreprocessShaderFromFile D3DXPreprocessShaderFromFileA
|
|
#endif
|
|
|
|
HRESULT WINAPI
|
|
D3DXPreprocessShaderFromResourceA(
|
|
HMODULE hSrcModule,
|
|
LPCSTR pSrcResource,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPD3DXBUFFER* ppShaderText,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
HRESULT WINAPI
|
|
D3DXPreprocessShaderFromResourceW(
|
|
HMODULE hSrcModule,
|
|
LPCWSTR pSrcResource,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPD3DXBUFFER* ppShaderText,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
#ifdef UNICODE
|
|
#define D3DXPreprocessShaderFromResource D3DXPreprocessShaderFromResourceW
|
|
#else
|
|
#define D3DXPreprocessShaderFromResource D3DXPreprocessShaderFromResourceA
|
|
#endif
|
|
|
|
HRESULT WINAPI
|
|
D3DXPreprocessShader(
|
|
LPCSTR pSrcData,
|
|
UINT SrcDataSize,
|
|
CONST D3DXMACRO* pDefines,
|
|
LPD3DXINCLUDE pInclude,
|
|
LPD3DXBUFFER* ppShaderText,
|
|
LPD3DXBUFFER* ppErrorMsgs);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif //__cplusplus
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// Shader comment block layouts //////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//----------------------------------------------------------------------------
|
|
// D3DXSHADER_CONSTANTTABLE:
|
|
// -------------------------
|
|
// Shader constant information; included as an CTAB comment block inside
|
|
// shaders. All offsets are BYTE offsets from start of CONSTANTTABLE struct.
|
|
// Entries in the table are sorted by Name in ascending order.
|
|
//----------------------------------------------------------------------------
|
|
|
|
typedef struct _D3DXSHADER_CONSTANTTABLE
|
|
{
|
|
DWORD Size; // sizeof(D3DXSHADER_CONSTANTTABLE)
|
|
DWORD Creator; // LPCSTR offset
|
|
DWORD Version; // shader version
|
|
DWORD Constants; // number of constants
|
|
DWORD ConstantInfo; // D3DXSHADER_CONSTANTINFO[Constants] offset
|
|
DWORD Flags; // flags shader was compiled with
|
|
DWORD Target; // LPCSTR offset
|
|
|
|
} D3DXSHADER_CONSTANTTABLE, *LPD3DXSHADER_CONSTANTTABLE;
|
|
|
|
|
|
typedef struct _D3DXSHADER_CONSTANTINFO
|
|
{
|
|
DWORD Name; // LPCSTR offset
|
|
WORD RegisterSet; // D3DXREGISTER_SET
|
|
WORD RegisterIndex; // register number
|
|
WORD RegisterCount; // number of registers
|
|
WORD Reserved; // reserved
|
|
DWORD TypeInfo; // D3DXSHADER_TYPEINFO offset
|
|
DWORD DefaultValue; // offset of default value
|
|
|
|
} D3DXSHADER_CONSTANTINFO, *LPD3DXSHADER_CONSTANTINFO;
|
|
|
|
|
|
typedef struct _D3DXSHADER_TYPEINFO
|
|
{
|
|
WORD Class; // D3DXPARAMETER_CLASS
|
|
WORD Type; // D3DXPARAMETER_TYPE
|
|
WORD Rows; // number of rows (matrices)
|
|
WORD Columns; // number of columns (vectors and matrices)
|
|
WORD Elements; // array dimension
|
|
WORD StructMembers; // number of struct members
|
|
DWORD StructMemberInfo; // D3DXSHADER_STRUCTMEMBERINFO[Members] offset
|
|
|
|
} D3DXSHADER_TYPEINFO, *LPD3DXSHADER_TYPEINFO;
|
|
|
|
|
|
typedef struct _D3DXSHADER_STRUCTMEMBERINFO
|
|
{
|
|
DWORD Name; // LPCSTR offset
|
|
DWORD TypeInfo; // D3DXSHADER_TYPEINFO offset
|
|
|
|
} D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO;
|
|
|
|
|
|
|
|
#endif //__D3DX9SHADER_H__
|