Merge pull request #12530 from iwubcode/custom_shaders_compilation_fixes
VideoCommon: fix some issues when compiling custom shaders
This commit is contained in:
commit
8482a50154
|
@ -839,6 +839,7 @@ void WriteCustomShaderStructImpl(ShaderCode* out, u32 num_stages, bool per_pixel
|
||||||
texcoord);
|
texcoord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (per_pixel_lighting)
|
||||||
GenerateCustomLightingImplementation(out, uid_data->lighting, "colors_");
|
GenerateCustomLightingImplementation(out, uid_data->lighting, "colors_");
|
||||||
|
|
||||||
for (u32 i = 0; i < 16; i++)
|
for (u32 i = 0; i < 16; i++)
|
||||||
|
@ -1326,8 +1327,20 @@ ShaderCode GeneratePixelShaderCode(APIType api_type, const ShaderHostConfig& hos
|
||||||
if (!shader_details.custom_shader.empty())
|
if (!shader_details.custom_shader.empty())
|
||||||
{
|
{
|
||||||
out.Write("\t{{\n");
|
out.Write("\t{{\n");
|
||||||
|
if (uid_data->uint_output)
|
||||||
|
{
|
||||||
|
out.Write("\t\tcustom_data.final_color = float4(ocol0.x / 255.0, ocol0.y / 255.0, ocol0.z "
|
||||||
|
"/ 255.0, ocol0.w / 255.0);\n");
|
||||||
|
out.Write("\t\tfloat3 custom_output = {}_{}(custom_data).xyz;\n",
|
||||||
|
CUSTOM_PIXELSHADER_COLOR_FUNC, i);
|
||||||
|
out.Write("\t\tocol0.xyz = uint3(custom_output.x * 255, custom_output.y * 255, "
|
||||||
|
"custom_output.z * 255);\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
out.Write("\t\tcustom_data.final_color = ocol0;\n");
|
out.Write("\t\tcustom_data.final_color = ocol0;\n");
|
||||||
out.Write("\t\tocol0.xyz = {}_{}(custom_data).xyz;\n", CUSTOM_PIXELSHADER_COLOR_FUNC, i);
|
out.Write("\t\tocol0.xyz = {}_{}(custom_data).xyz;\n", CUSTOM_PIXELSHADER_COLOR_FUNC, i);
|
||||||
|
}
|
||||||
out.Write("\t}}\n\n");
|
out.Write("\t}}\n\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,6 +127,8 @@ void WriteCustomShaderStructImpl(ShaderCode* out, u32 num_texgen, bool per_pixel
|
||||||
out->Write("\t}}\n");
|
out->Write("\t}}\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (per_pixel_lighting)
|
||||||
|
{
|
||||||
out->Write("\tuint light_count = 0;\n");
|
out->Write("\tuint light_count = 0;\n");
|
||||||
out->Write("\tfor (uint chan = 0u; chan < {}u; chan++)\n", NUM_XF_COLOR_CHANNELS);
|
out->Write("\tfor (uint chan = 0u; chan < {}u; chan++)\n", NUM_XF_COLOR_CHANNELS);
|
||||||
out->Write("\t{{\n");
|
out->Write("\t{{\n");
|
||||||
|
@ -227,6 +229,7 @@ void WriteCustomShaderStructImpl(ShaderCode* out, u32 num_texgen, bool per_pixel
|
||||||
out->Write("\t\t}}\n");
|
out->Write("\t\t}}\n");
|
||||||
}
|
}
|
||||||
out->Write("\t}}\n");
|
out->Write("\t}}\n");
|
||||||
|
}
|
||||||
|
|
||||||
for (u32 i = 0; i < 16; i++)
|
for (u32 i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
|
@ -1593,8 +1596,20 @@ ShaderCode GenPixelShader(APIType api_type, const ShaderHostConfig& host_config,
|
||||||
if (!shader_details.custom_shader.empty())
|
if (!shader_details.custom_shader.empty())
|
||||||
{
|
{
|
||||||
out.Write("\t{{\n");
|
out.Write("\t{{\n");
|
||||||
|
if (uid_data->uint_output)
|
||||||
|
{
|
||||||
|
out.Write("\t\tcustom_data.final_color = float4(ocol0.x / 255.0, ocol0.y / 255.0, ocol0.z "
|
||||||
|
"/ 255.0, ocol0.w / 255.0);\n");
|
||||||
|
out.Write("\t\tfloat3 custom_output = {}_{}(custom_data).xyz;\n",
|
||||||
|
CUSTOM_PIXELSHADER_COLOR_FUNC, i);
|
||||||
|
out.Write("\t\tocol0.xyz = uint3(custom_output.x * 255, custom_output.y * 255, "
|
||||||
|
"custom_output.z * 255);\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
out.Write("\t\tcustom_data.final_color = ocol0;\n");
|
out.Write("\t\tcustom_data.final_color = ocol0;\n");
|
||||||
out.Write("\t\tocol0.xyz = {}_{}(custom_data).xyz;\n", CUSTOM_PIXELSHADER_COLOR_FUNC, i);
|
out.Write("\t\tocol0.xyz = {}_{}(custom_data).xyz;\n", CUSTOM_PIXELSHADER_COLOR_FUNC, i);
|
||||||
|
}
|
||||||
out.Write("\t}}\n\n");
|
out.Write("\t}}\n\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue