diff options
| author | Léo Lam <leo@leolam.fr> | 2021-05-08 00:21:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-08 00:21:15 +0200 |
| commit | a6f6211ddeaa87fee5009df7ba467ef733fa3fcf (patch) | |
| tree | f0677c763f4960d8373b2bb424a4d93ead8a0df3 /Source/Core/VideoCommon/UberShaderCommon.cpp | |
| parent | 049b92b7ef51b8aaa0f3a9370c3e8bccd44d185b (diff) | |
| parent | 0f7c9ef76783ac8c93d3fb099b43cede1e6915f4 (diff) | |
Merge pull request #9633 from Pokechu22/BitfieldExtract-pointer-to-member
Change BitfieldExtract to use a pointer to the bitfield member
Diffstat (limited to 'Source/Core/VideoCommon/UberShaderCommon.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/UberShaderCommon.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/Source/Core/VideoCommon/UberShaderCommon.cpp b/Source/Core/VideoCommon/UberShaderCommon.cpp index e26fd13bf8..a8b99b429e 100644 --- a/Source/Core/VideoCommon/UberShaderCommon.cpp +++ b/Source/Core/VideoCommon/UberShaderCommon.cpp @@ -103,29 +103,29 @@ void WriteVertexLighting(ShaderCode& out, APIType api_type, std::string_view wor " int4 lacc = int4(255, 255, 255, 255);\n" "\n"); - out.Write(" if ({} != 0u)\n", BitfieldExtract("colorreg", LitChannel().matsource)); + out.Write(" if ({} != 0u)\n", BitfieldExtract<&LitChannel::matsource>("colorreg")); out.Write(" mat.xyz = int3(round(((chan == 0u) ? {}.xyz : {}.xyz) * 255.0));\n", in_color_0_var, in_color_1_var); - out.Write(" if ({} != 0u)\n", BitfieldExtract("alphareg", LitChannel().matsource)); + out.Write(" if ({} != 0u)\n", BitfieldExtract<&LitChannel::matsource>("alphareg")); out.Write(" mat.w = int(round(((chan == 0u) ? {}.w : {}.w) * 255.0));\n", in_color_0_var, in_color_1_var); out.Write(" else\n" " mat.w = " I_MATERIALS " [chan + 2u].w;\n" "\n"); - out.Write(" if ({} != 0u) {{\n", BitfieldExtract("colorreg", LitChannel().enablelighting)); - out.Write(" if ({} != 0u)\n", BitfieldExtract("colorreg", LitChannel().ambsource)); + out.Write(" if ({} != 0u) {{\n", BitfieldExtract<&LitChannel::enablelighting>("colorreg")); + out.Write(" if ({} != 0u)\n", BitfieldExtract<&LitChannel::ambsource>("colorreg")); out.Write(" lacc.xyz = int3(round(((chan == 0u) ? {}.xyz : {}.xyz) * 255.0));\n", in_color_0_var, in_color_1_var); out.Write(" else\n" " lacc.xyz = " I_MATERIALS " [chan].xyz;\n" "\n"); out.Write(" uint light_mask = {} | ({} << 4u);\n", - BitfieldExtract("colorreg", LitChannel().lightMask0_3), - BitfieldExtract("colorreg", LitChannel().lightMask4_7)); - out.Write(" uint attnfunc = {};\n", BitfieldExtract("colorreg", LitChannel().attnfunc)); - out.Write(" uint diffusefunc = {};\n", BitfieldExtract("colorreg", LitChannel().diffusefunc)); + BitfieldExtract<&LitChannel::lightMask0_3>("colorreg"), + BitfieldExtract<&LitChannel::lightMask4_7>("colorreg")); + out.Write(" uint attnfunc = {};\n", BitfieldExtract<&LitChannel::attnfunc>("colorreg")); + out.Write(" uint diffusefunc = {};\n", BitfieldExtract<&LitChannel::diffusefunc>("colorreg")); out.Write( " for (uint light_index = 0u; light_index < 8u; light_index++) {{\n" " if ((light_mask & (1u << light_index)) != 0u)\n" @@ -135,8 +135,8 @@ void WriteVertexLighting(ShaderCode& out, APIType api_type, std::string_view wor " }}\n" "\n"); - out.Write(" if ({} != 0u) {{\n", BitfieldExtract("alphareg", LitChannel().enablelighting)); - out.Write(" if ({} != 0u) {{\n", BitfieldExtract("alphareg", LitChannel().ambsource)); + out.Write(" if ({} != 0u) {{\n", BitfieldExtract<&LitChannel::enablelighting>("alphareg")); + out.Write(" if ({} != 0u) {{\n", BitfieldExtract<&LitChannel::ambsource>("alphareg")); out.Write(" if ((components & ({}u << chan)) != 0u) // VB_HAS_COL0\n", VB_HAS_COL0); out.Write(" lacc.w = int(round(((chan == 0u) ? {}.w : {}.w) * 255.0));\n", in_color_0_var, in_color_1_var); @@ -149,10 +149,10 @@ void WriteVertexLighting(ShaderCode& out, APIType api_type, std::string_view wor " }}\n" "\n"); out.Write(" uint light_mask = {} | ({} << 4u);\n", - BitfieldExtract("alphareg", LitChannel().lightMask0_3), - BitfieldExtract("alphareg", LitChannel().lightMask4_7)); - out.Write(" uint attnfunc = {};\n", BitfieldExtract("alphareg", LitChannel().attnfunc)); - out.Write(" uint diffusefunc = {};\n", BitfieldExtract("alphareg", LitChannel().diffusefunc)); + BitfieldExtract<&LitChannel::lightMask0_3>("alphareg"), + BitfieldExtract<&LitChannel::lightMask4_7>("alphareg")); + out.Write(" uint attnfunc = {};\n", BitfieldExtract<&LitChannel::attnfunc>("alphareg")); + out.Write(" uint diffusefunc = {};\n", BitfieldExtract<&LitChannel::diffusefunc>("alphareg")); out.Write(" for (uint light_index = 0u; light_index < 8u; light_index++) {{\n\n" " if ((light_mask & (1u << light_index)) != 0u)\n\n" " lacc.w += CalculateLighting(light_index, attnfunc, diffusefunc, {}, {}).w;\n", |
