diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2023-12-12 17:56:26 -0600 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2023-12-12 17:56:26 -0600 |
| commit | b1d9e13d75ecab111dae12a328c5a7f8933277dc (patch) | |
| tree | aa9869ced34b1cc6217ea8ebaa9b22fe36ebc290 /Source/Core/VideoCommon/PixelShaderGen.cpp | |
| parent | 7b57a4a37d7897fcc47412e32d0e9e280f59fe4c (diff) | |
VideoCommon: prepare graphics mods for custom shader material data
Diffstat (limited to 'Source/Core/VideoCommon/PixelShaderGen.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/PixelShaderGen.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index 69fdc36efc..fff2374531 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -345,7 +345,8 @@ void ClearUnusedPixelShaderUidBits(APIType api_type, const ShaderHostConfig& hos } void WritePixelShaderCommonHeader(ShaderCode& out, APIType api_type, - const ShaderHostConfig& host_config, bool bounding_box) + const ShaderHostConfig& host_config, bool bounding_box, + const CustomPixelShaderContents& custom_details) { // dot product for integer vectors out.Write("int idot(int3 x, int3 y)\n" @@ -426,6 +427,14 @@ void WritePixelShaderCommonHeader(ShaderCode& out, APIType api_type, out.Write("}};\n"); } + if (!custom_details.shaders.empty() && + !custom_details.shaders.back().material_uniform_block.empty()) + { + out.Write("UBO_BINDING(std140, 3) uniform CustomShaderBlock {{\n"); + out.Write("{}", custom_details.shaders.back().material_uniform_block); + out.Write("}} custom_uniforms;\n"); + } + if (bounding_box) { out.Write("SSBO_BINDING(0) coherent buffer BBox {{\n" @@ -907,7 +916,7 @@ ShaderCode GeneratePixelShaderCode(APIType api_type, const ShaderHostConfig& hos // Stuff that is shared between ubershaders and pixelgen. WriteBitfieldExtractHeader(out, api_type, host_config); - WritePixelShaderCommonHeader(out, api_type, host_config, uid_data->bounding_box); + WritePixelShaderCommonHeader(out, api_type, host_config, uid_data->bounding_box, custom_details); // Custom shader details WriteCustomShaderStructDef(&out, uid_data->genMode_numtexgens); |
