RetroArch/gfx/include/d3d9/d3dx9shader.h

623 lines
22 KiB
C
Raw Normal View History

2017-12-31 03:36:43 +01:00
/*
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* File: d3dx9shader.h
* Content: D3DX Shader APIs
*
*/
2016-04-23 18:17:28 +02:00
#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)
2017-12-31 03:36:43 +01:00
/* optimization level flags */
2016-04-23 18:17:28 +02:00
#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)
2017-12-31 03:36:43 +01:00
/*
* D3DXCONSTTABLE flags:
*/
2016-04-23 18:17:28 +02:00
#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;
2017-12-31 03:36:43 +01:00
/*
* D3DXSEMANTIC:
*/
2016-04-23 18:17:28 +02:00
typedef struct _D3DXSEMANTIC
{
UINT Usage;
UINT UsageIndex;
} D3DXSEMANTIC, *LPD3DXSEMANTIC;
2017-12-31 03:36:43 +01:00
/*
* D3DXREGISTER_SET:
*/
2016-04-23 18:17:28 +02:00
typedef enum _D3DXREGISTER_SET
{
D3DXRS_BOOL,
D3DXRS_INT4,
D3DXRS_FLOAT4,
D3DXRS_SAMPLER,
2017-12-31 03:36:43 +01:00
/* force 32-bit size enum */
2016-04-23 18:17:28 +02:00
D3DXRS_FORCE_DWORD = 0x7fffffff
} D3DXREGISTER_SET, *LPD3DXREGISTER_SET;
2017-12-31 03:36:43 +01:00
/*
* D3DXPARAMETER_CLASS:
*/
2016-04-23 18:17:28 +02:00
typedef enum _D3DXPARAMETER_CLASS
{
D3DXPC_SCALAR,
D3DXPC_VECTOR,
D3DXPC_MATRIX_ROWS,
D3DXPC_MATRIX_COLUMNS,
D3DXPC_OBJECT,
D3DXPC_STRUCT,
2017-12-31 03:36:43 +01:00
/* force 32-bit size enum */
2016-04-23 18:17:28 +02:00
D3DXPC_FORCE_DWORD = 0x7fffffff
} D3DXPARAMETER_CLASS, *LPD3DXPARAMETER_CLASS;
2017-12-31 03:36:43 +01:00
/*
* D3DXPARAMETER_TYPE:
*/
2016-04-23 18:17:28 +02:00
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,
2017-12-31 03:36:43 +01:00
/* force 32-bit size enum */
2016-04-23 18:17:28 +02:00
D3DXPT_FORCE_DWORD = 0x7fffffff
} D3DXPARAMETER_TYPE, *LPD3DXPARAMETER_TYPE;
2017-12-31 03:36:43 +01:00
/*
* D3DXCONSTANTTABLE_DESC:
*/
2016-04-23 18:17:28 +02:00
typedef struct _D3DXCONSTANTTABLE_DESC
{
2017-12-31 03:36:43 +01:00
LPCSTR Creator; /* Creator string */
DWORD Version; /* Shader version */
UINT Constants; /* Number of constants */
2016-04-23 18:17:28 +02:00
} D3DXCONSTANTTABLE_DESC, *LPD3DXCONSTANTTABLE_DESC;
2017-12-31 03:36:43 +01:00
/*
* D3DXCONSTANT_DESC:
*/
2016-04-23 18:17:28 +02:00
typedef struct _D3DXCONSTANT_DESC
{
2017-12-31 03:36:43 +01:00
LPCSTR Name; /* Constant name */
2016-04-23 18:17:28 +02:00
2017-12-31 03:36:43 +01:00
D3DXREGISTER_SET RegisterSet; /* Register set */
UINT RegisterIndex; /* Register index */
UINT RegisterCount; /* Number of registers occupied */
2016-04-23 18:17:28 +02:00
2017-12-31 03:36:43 +01:00
D3DXPARAMETER_CLASS Class; /* Class */
D3DXPARAMETER_TYPE Type; /* Component type */
2016-04-23 18:17:28 +02:00
2017-12-31 03:36:43 +01:00
UINT Rows; /* Number of rows */
UINT Columns; /* Number of columns */
UINT Elements; /* Number of array elements */
UINT StructMembers; /* Number of structure member sub-parameters */
2016-04-23 18:17:28 +02:00
2017-12-31 03:36:43 +01:00
UINT Bytes; /* Data size, in bytes */
LPCVOID DefaultValue; /* Pointer to default value */
2016-04-23 18:17:28 +02:00
} D3DXCONSTANT_DESC, *LPD3DXCONSTANT_DESC;
2017-12-31 03:36:43 +01:00
/*
* ID3DXConstantTable:
*/
2016-04-23 18:17:28 +02:00
typedef interface ID3DXConstantTable ID3DXConstantTable;
typedef interface ID3DXConstantTable *LPD3DXCONSTANTTABLE;
2017-12-31 03:36:43 +01:00
/* {AB3C758F-093E-4356-B762-4DB18F1B3A01} */
DEFINE_GUID(IID_ID3DXConstantTable,
2016-04-23 18:17:28 +02:00
0xab3c758f, 0x93e, 0x4356, 0xb7, 0x62, 0x4d, 0xb1, 0x8f, 0x1b, 0x3a, 0x1);
#undef INTERFACE
#define INTERFACE ID3DXConstantTable
DECLARE_INTERFACE_(ID3DXConstantTable, IUnknown)
{
2017-12-31 03:36:43 +01:00
/* IUnknown */
2016-04-23 18:17:28 +02:00
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
2017-12-31 03:36:43 +01:00
/* Buffer */
2016-04-23 18:17:28 +02:00
STDMETHOD_(LPVOID, GetBufferPointer)(THIS) PURE;
STDMETHOD_(DWORD, GetBufferSize)(THIS) PURE;
2017-12-31 03:36:43 +01:00
/* Descs */
2016-04-23 18:17:28 +02:00
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;
2017-12-31 03:36:43 +01:00
/* Handle operations */
2016-04-23 18:17:28 +02:00
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;
2017-12-31 03:36:43 +01:00
/* Set Constants */
2016-04-23 18:17:28 +02:00
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;
};
2017-12-31 03:36:43 +01:00
/*
* ID3DXTextureShader:
*/
2016-04-23 18:17:28 +02:00
typedef interface ID3DXTextureShader ID3DXTextureShader;
typedef interface ID3DXTextureShader *LPD3DXTEXTURESHADER;
2017-12-31 03:36:43 +01:00
/* {3E3D67F8-AA7A-405d-A857-BA01D4758426} */
DEFINE_GUID(IID_ID3DXTextureShader,
2016-04-23 18:17:28 +02:00
0x3e3d67f8, 0xaa7a, 0x405d, 0xa8, 0x57, 0xba, 0x1, 0xd4, 0x75, 0x84, 0x26);
#undef INTERFACE
#define INTERFACE ID3DXTextureShader
DECLARE_INTERFACE_(ID3DXTextureShader, IUnknown)
{
2017-12-31 03:36:43 +01:00
/* IUnknown */
2016-04-23 18:17:28 +02:00
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
2017-12-31 03:36:43 +01:00
/* Gets */
2016-04-23 18:17:28 +02:00
STDMETHOD(GetFunction)(THIS_ LPD3DXBUFFER *ppFunction) PURE;
STDMETHOD(GetConstantBuffer)(THIS_ LPD3DXBUFFER *ppConstantBuffer) PURE;
2017-12-31 03:36:43 +01:00
/* Descs */
2016-04-23 18:17:28 +02:00
STDMETHOD(GetDesc)(THIS_ D3DXCONSTANTTABLE_DESC *pDesc) PURE;
STDMETHOD(GetConstantDesc)(THIS_ D3DXHANDLE hConstant, D3DXCONSTANT_DESC *pConstantDesc, UINT *pCount) PURE;
2017-12-31 03:36:43 +01:00
/* Handle operations */
2016-04-23 18:17:28 +02:00
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;
2017-12-31 03:36:43 +01:00
/* Set Constants */
2016-04-23 18:17:28 +02:00
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,
2017-12-31 03:36:43 +01:00
/* force 32-bit size enum */
2016-04-23 18:17:28 +02:00
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;
};
2017-12-31 03:36:43 +01:00
/*
* APIs
*/
2016-04-23 18:17:28 +02:00
#ifdef __cplusplus
extern "C" {
2017-12-31 03:36:43 +01:00
#endif
2016-04-23 18:17:28 +02:00
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,
2016-04-23 18:17:28 +02:00
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,
2016-04-23 18:17:28 +02:00
LPD3DXTEXTURESHADER* ppTextureShader);
HRESULT WINAPI
2016-04-23 18:17:28 +02:00
D3DXPreprocessShaderFromFileA(
LPCSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPD3DXBUFFER* ppShaderText,
LPD3DXBUFFER* ppErrorMsgs);
HRESULT WINAPI
2016-04-23 18:17:28 +02:00
D3DXPreprocessShaderFromFileW(
LPCWSTR pSrcFile,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPD3DXBUFFER* ppShaderText,
LPD3DXBUFFER* ppErrorMsgs);
#ifdef UNICODE
#define D3DXPreprocessShaderFromFile D3DXPreprocessShaderFromFileW
#else
#define D3DXPreprocessShaderFromFile D3DXPreprocessShaderFromFileA
#endif
HRESULT WINAPI
2016-04-23 18:17:28 +02:00
D3DXPreprocessShaderFromResourceA(
HMODULE hSrcModule,
LPCSTR pSrcResource,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPD3DXBUFFER* ppShaderText,
LPD3DXBUFFER* ppErrorMsgs);
HRESULT WINAPI
2016-04-23 18:17:28 +02:00
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
2016-04-23 18:17:28 +02:00
D3DXPreprocessShader(
LPCSTR pSrcData,
UINT SrcDataSize,
CONST D3DXMACRO* pDefines,
LPD3DXINCLUDE pInclude,
LPD3DXBUFFER* ppShaderText,
LPD3DXBUFFER* ppErrorMsgs);
#ifdef __cplusplus
}
2017-12-31 03:36:43 +01:00
#endif
2016-04-23 18:17:28 +02:00
2017-12-31 03:36:43 +01:00
/*
* Shader comment block layouts
*/
2016-04-23 18:17:28 +02:00
2017-12-31 03:36:43 +01:00
/*
* 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.
*/
2016-04-23 18:17:28 +02:00
typedef struct _D3DXSHADER_CONSTANTTABLE
{
2017-12-31 03:36:43 +01:00
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 */
2016-04-23 18:17:28 +02:00
} D3DXSHADER_CONSTANTTABLE, *LPD3DXSHADER_CONSTANTTABLE;
typedef struct _D3DXSHADER_CONSTANTINFO
{
2017-12-31 03:36:43 +01:00
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 */
2016-04-23 18:17:28 +02:00
} D3DXSHADER_CONSTANTINFO, *LPD3DXSHADER_CONSTANTINFO;
typedef struct _D3DXSHADER_TYPEINFO
{
2017-12-31 03:36:43 +01:00
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 */
2016-04-23 18:17:28 +02:00
} D3DXSHADER_TYPEINFO, *LPD3DXSHADER_TYPEINFO;
typedef struct _D3DXSHADER_STRUCTMEMBERINFO
{
2017-12-31 03:36:43 +01:00
DWORD Name; /* LPCSTR offset */
DWORD TypeInfo; /* D3DXSHADER_TYPEINFO offset */
2016-04-23 18:17:28 +02:00
} D3DXSHADER_STRUCTMEMBERINFO, *LPD3DXSHADER_STRUCTMEMBERINFO;
2017-12-05 16:40:13 +01:00
#endif /* __D3DX9SHADER_H__ */