14GX_CORE_NAMESPACE_BEGIN()
17class GxShaderCompileMessenger;
29 enum class COMPILE_SHADER
37#if GX_SHADER_MODEL >= GX_SHADER_MODEL_4
40#if GX_ENABLE_TESSELLATION
45#if GX_SHADER_MODEL >= GX_SHADER_MODEL_5
48#if GX_ENABLE_TESSELLATION
61 static const GX_CHAR* COMPILE_SHADER_TEXT[
static_cast<u32
>(COMPILE_SHADER::MAX)];
64 struct GxShaderCompilerMemorySuite
67 void* (*_pMallocFunction)(
size_t size);
69 void (*_pFreeFunction)(
void* pPointer);
73 struct GxConstantRegisterTypeInformation
75 u32 _registerTableCount;
81 struct GxConstantRegisterElement
86 u32 _bindingLocationIndex;
92 GX_CHAR _name[PARAMETER_NAME_MAX];
97 static GX_CSTR VERTEX_SHADER_PROFILE_2_0;
99 static GX_CSTR VERTEX_SHADER_PROFILE_3_0;
101 static GX_CSTR PIXEL_SHADER_PROFILE_2_0;
103 static GX_CSTR PIXEL_SHADER_PROFILE_3_0;
112 GxShaderCompiler(
void);
114 ~GxShaderCompiler(
void);
123 static void setMemoryFunction(
const GxShaderCompilerMemorySuite& memoryFunctionSuite);
128 b32 compile(
const void* pSrcData, u32 size, COMPILE_SHADER shaderType, GX_CSTR entryName, GX_CSTR* ppPragmaArray =
nullptr,
b32 noneRegisterSpace =
true);
132 static void* allocateMemory(u32 size);
134 static void freeMemory(
void* pAddress);
136 static void* allocateDevelopMemory(
size_t size);
138 static void freeDevelopMemory(
void* pAddress);
140 static b32 convertShader(
const void* pSrcData, u32 srcSize,
void** ppDstData, u32& dstSize, GX_CSTR* ppPragmaArray =
nullptr);
142 static b32 isCommentLine(GX_CSTR text);
144 static b32 isReturnCode(GX_CSTR text, u32& codeSize);
146 static b32 addReturnCode(GX_STR& pDst, u32& size);
150 b32 compileLocal(
const void* pSrcData, u32 size, COMPILE_SHADER shaderType);
154 static u32 getRegisterCount(
const GLSLCuniformInfo* pUniformData);
166 static GX_CSTR getShaderFolder(
b32 isGlsl, u32 shaderModel);
168 u32 getShaderSize(
void)
const;
170 void getShaderCode(
void* pDst, u32 size)
const;
172 u32 getConstantRegisterTableTotal(
void)
const;
182 const GxConstantRegisterElement* getConstantRegisterElement(u32 index)
const;
184 u32 getUsageInputSemantics(
void)
const;
188 u32 getConstantBufferSize(
void)
const;
190 GX_CSTR getShaderVersion(
void)
const {
return _shaderVersion; }
198 static GxShaderCompilerMemorySuite _memoryManager;
200 GX_CSTR _shaderVersion;
203 GxConstantRegisterElement* _pRegisterElementTable;
204 u32 _constantBufferSize;
207 ComPtr<IDxcBlob> _pShader;
208#elif GX_USE_DX11 || GX_USE_DX12
210#elif defined(_NX64) || defined(_PS5)
215#if ENABLE_PARARELL_SHADER_COMPILE
216 GxShaderCompileMessenger* _pCompileMessenger;
222#if GX_USE_DX11 || (GX_USE_DX12 && !defined(_XBOX_XS))
234 struct MacroInformation
239 struct MacroInformation* _pNext;
249 GxShaderMacro(
void) : _pTop(nullptr), _pLast(nullptr), _pMacro(nullptr){}
251 ~GxShaderMacro(
void);
260 void push(GX_CSTR name, GX_CSTR attribute);
273 D3D10_SHADER_MACRO* getD3D10(
void);
281 MacroInformation* _pTop;
282 MacroInformation* _pLast;
283 D3D10_SHADER_MACRO* _pMacro;
291GX_CORE_NAMESPACE_END()
RENDER_SEMANTICS
セマンティックス
Definition GxRender.h:234
static constexpr u32 VALUE_64
64
Definition GxMath.h:125
PARAMETER_TYPE
パラメータの種類
Definition GxRenderShader.h:44
REGISTER_SET_TYPE
定数レジスタの種類
Definition GxRenderShader.h:34
32bitブーリアン
Definition GxDefine.h:173