Merge pull request #9928 from Pokechu22/shadow-the-hedgehog-eyelids-NaN
Convert NaN to 1 when generating texture coordinates
This commit is contained in:
commit
c9c5f7a89c
|
@ -137,6 +137,15 @@ static void TransformTexCoordRegular(const TexMtxInfo& texinfo, int coordNum,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert NaNs to 1 - needed to fix eyelids in Shadow the Hedgehog during cutscenes
|
||||||
|
// See https://bugs.dolphin-emu.org/issues/11458
|
||||||
|
if (std::isnan(src.x))
|
||||||
|
src.x = 1;
|
||||||
|
if (std::isnan(src.y))
|
||||||
|
src.y = 1;
|
||||||
|
if (std::isnan(src.z))
|
||||||
|
src.z = 1;
|
||||||
|
|
||||||
const float* mat = &xfmem.posMatrices[srcVertex->texMtx[coordNum] * 4];
|
const float* mat = &xfmem.posMatrices[srcVertex->texMtx[coordNum] * 4];
|
||||||
Vec3* dst = &dstVertex->texCoords[coordNum];
|
Vec3* dst = &dstVertex->texCoords[coordNum];
|
||||||
|
|
||||||
|
|
|
@ -435,6 +435,13 @@ static void GenVertexShaderTexGens(APIType api_type, u32 num_texgen, ShaderCode&
|
||||||
out.Write(" coord.z = 1.0f;\n"
|
out.Write(" coord.z = 1.0f;\n"
|
||||||
"\n");
|
"\n");
|
||||||
|
|
||||||
|
// Convert NaNs to 1 - needed to fix eyelids in Shadow the Hedgehog during cutscenes
|
||||||
|
// See https://bugs.dolphin-emu.org/issues/11458
|
||||||
|
out.Write(" // Convert NaN to 1\n");
|
||||||
|
out.Write(" if (isnan(coord.x)) coord.x = 1.0;\n");
|
||||||
|
out.Write(" if (isnan(coord.y)) coord.y = 1.0;\n");
|
||||||
|
out.Write(" if (isnan(coord.z)) coord.z = 1.0;\n");
|
||||||
|
|
||||||
out.Write(" // first transformation\n");
|
out.Write(" // first transformation\n");
|
||||||
out.Write(" uint texgentype = {};\n", BitfieldExtract<&TexMtxInfo::texgentype>("texMtxInfo"));
|
out.Write(" uint texgentype = {};\n", BitfieldExtract<&TexMtxInfo::texgentype>("texMtxInfo"));
|
||||||
out.Write(" float3 output_tex;\n"
|
out.Write(" float3 output_tex;\n"
|
||||||
|
|
|
@ -332,6 +332,13 @@ ShaderCode GenerateVertexShaderCode(APIType api_type, const ShaderHostConfig& ho
|
||||||
if (texinfo.inputform == TexInputForm::AB11)
|
if (texinfo.inputform == TexInputForm::AB11)
|
||||||
out.Write("coord.z = 1.0;\n");
|
out.Write("coord.z = 1.0;\n");
|
||||||
|
|
||||||
|
// Convert NaNs to 1 - needed to fix eyelids in Shadow the Hedgehog during cutscenes
|
||||||
|
// See https://bugs.dolphin-emu.org/issues/11458
|
||||||
|
out.Write("// Convert NaN to 1\n");
|
||||||
|
out.Write("if (isnan(coord.x)) coord.x = 1.0;\n");
|
||||||
|
out.Write("if (isnan(coord.y)) coord.y = 1.0;\n");
|
||||||
|
out.Write("if (isnan(coord.z)) coord.z = 1.0;\n");
|
||||||
|
|
||||||
// first transformation
|
// first transformation
|
||||||
switch (texinfo.texgentype)
|
switch (texinfo.texgentype)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue