[GH-ISSUE #4405] PPSSPP: Linear Texture Filtering broken in Tekken 6 since v0.9.1-2045-ga3f2fcf #1798

Open
opened 2026-03-18 03:51:24 +03:00 by kerem · 18 comments
Owner

Originally created by @solarmystic on GitHub (Nov 2, 2013).
Original GitHub issue: https://github.com/hrydgard/ppsspp/issues/4405

Issue is as stated above. Responsible commit is github.com/hrydgard/ppsspp@4567acaf92 by @DanyalZia merged into master with v0.9.1-2045-ga3f2fcf github.com/hrydgard/ppsspp@a3f2fcfd8f by @hrydgard

Setting texture filtering to Linear or Linear on FMV doesn't work anymore for Tekken 6 since then, both ingame and during FMVs:

(click on the screenshots to observe the issue clearly)

FMV (pixellated even after Linear Filtering is forced in the graphics menu):
screen00192

Ingame menu (letters remain pixellated even when Linear Filtering is forced in the Graphics menu):
linfail2045

Last working revision is v0.9.1-2043-g99d4ef1 github.com/hrydgard/ppsspp@99d4ef1e06

FMV (smoothed out as expected):
screen00193

Ingame menu (letters are smoothed out as expected with Linear Filtering)
works2043

I suspect other games may be affected by this commit too. Will add them into the issue report if and when I find them.

Tested on the following machine:

sysspec

Originally created by @solarmystic on GitHub (Nov 2, 2013). Original GitHub issue: https://github.com/hrydgard/ppsspp/issues/4405 Issue is as stated above. Responsible commit is https://github.com/hrydgard/ppsspp/commit/4567acaf928b3660a1aa67100635d9e27ece1290 by @DanyalZia merged into master with v0.9.1-2045-ga3f2fcf https://github.com/hrydgard/ppsspp/commit/a3f2fcfd8f7897d1543e213f68096ecfd8d3a2c4 by @hrydgard Setting texture filtering to Linear or Linear on FMV doesn't work anymore for Tekken 6 since then, both ingame and during FMVs: (click on the screenshots to observe the issue clearly) FMV (pixellated even after Linear Filtering is forced in the graphics menu): ![screen00192](https://f.cloud.github.com/assets/4345150/1458648/217efe74-438d-11e3-8302-685d2b091e38.jpg) Ingame menu (letters remain pixellated even when Linear Filtering is forced in the Graphics menu): ![linfail2045](https://f.cloud.github.com/assets/4345150/1458653/7dbe6012-438d-11e3-92bf-b3d2d9ca056f.JPG) Last working revision is v0.9.1-2043-g99d4ef1 https://github.com/hrydgard/ppsspp/commit/99d4ef1e0679f2f89fa4160269f15bf2eaa36983 FMV (smoothed out as expected): ![screen00193](https://f.cloud.github.com/assets/4345150/1458655/915faf54-438d-11e3-9fe2-b9e897686731.jpg) Ingame menu (letters are smoothed out as expected with Linear Filtering) ![works2043](https://f.cloud.github.com/assets/4345150/1458651/6aba3fa4-438d-11e3-80f3-8109fded8fb7.JPG) I suspect other games may be affected by this commit too. Will add them into the issue report if and when I find them. Tested on the following machine: ![sysspec](https://f.cloud.github.com/assets/4345150/1458515/0cb2f508-437a-11e3-87ce-9862e0d2d794.PNG)
Author
Owner

@solarmystic commented on GitHub (Nov 2, 2013):

Soul Calibur is also affected by this issue it seems.

(Observe the text in the red box)

Working as expected with v0.9.1-2043-g99d4ef1 github.com/hrydgard/ppsspp@99d4ef1e06 (smoothed letters when Linear Filtering is selected)
scworks

Broken in v0.9.1-2045-ga3f2fcf github.com/hrydgard/ppsspp@a3f2fcfd8f (pixellated letters even with Linear Texture Filtering selected):
scfail

<!-- gh-comment-id:27617390 --> @solarmystic commented on GitHub (Nov 2, 2013): Soul Calibur is also affected by this issue it seems. (Observe the text in the red box) Working as expected with v0.9.1-2043-g99d4ef1 https://github.com/hrydgard/ppsspp/commit/99d4ef1e0679f2f89fa4160269f15bf2eaa36983 (smoothed letters when Linear Filtering is selected) ![scworks](https://f.cloud.github.com/assets/4345150/1458681/69d032de-4391-11e3-8ccb-7d2849418727.jpg) Broken in v0.9.1-2045-ga3f2fcf https://github.com/hrydgard/ppsspp/commit/a3f2fcfd8f7897d1543e213f68096ecfd8d3a2c4 (pixellated letters even with Linear Texture Filtering selected): ![scfail](https://f.cloud.github.com/assets/4345150/1458683/7417548e-4391-11e3-9e28-59c7725afed9.jpg)
Author
Owner

@unknownbrackets commented on GitHub (Nov 2, 2013):

Why would the game use alpha testing for video? Well, it might be "enabled" but not really doing anything. I guess we could try harder to detect those cases.

Or just give up and let filtering break things at 2x.... which ain't great.

-[Unknown]

<!-- gh-comment-id:27617451 --> @unknownbrackets commented on GitHub (Nov 2, 2013): Why would the game use alpha testing for video? Well, it might be "enabled" but not really doing anything. I guess we could try harder to detect those cases. Or just give up and let filtering break things at 2x.... which ain't great. -[Unknown]
Author
Owner

@hrydgard commented on GitHub (Nov 2, 2013):

That would probably be the same reason as always - alpha testing and color testing are free on the PSP so games sometimes just leave them on by accident, probably just forgetting to disable the state, as there's no harm anyway if you draw things that don't match the test criterion.

But yeah there are more checks we can do to rule out effects of these, and use the result of those checks for the linear filter enabling...

<!-- gh-comment-id:27619053 --> @hrydgard commented on GitHub (Nov 2, 2013): That would probably be the same reason as always - alpha testing and color testing are free on the PSP so games sometimes just leave them on by accident, probably just forgetting to disable the state, as there's no harm anyway if you draw things that don't match the test criterion. But yeah there are more checks we can do to rule out effects of these, and use the result of those checks for the linear filter enabling...
Author
Owner

@Antonio1994 commented on GitHub (Nov 3, 2013):

It broke MGS PW too. Changing texture filter doesn't make any difference....

<!-- gh-comment-id:27644138 --> @Antonio1994 commented on GitHub (Nov 3, 2013): It broke MGS PW too. Changing texture filter doesn't make any difference....
Author
Owner

@hrydgard commented on GitHub (Nov 3, 2013):

Broke the filtering in MGS PW or broke the game? That's some ambiguous wording.

<!-- gh-comment-id:27645212 --> @hrydgard commented on GitHub (Nov 3, 2013): Broke the filtering in MGS PW or broke the game? That's some ambiguous wording.
Author
Owner

@Antonio1994 commented on GitHub (Nov 3, 2013):

Uh....sorry...I meant it broke the filtering....my mistake! :)

<!-- gh-comment-id:27647021 --> @Antonio1994 commented on GitHub (Nov 3, 2013): Uh....sorry...I meant it broke the filtering....my mistake! :)
Author
Owner

@unknownbrackets commented on GitHub (Dec 3, 2013):

How's the status of this? I recall there were related changes recently.

-[Unknown]

<!-- gh-comment-id:29761677 --> @unknownbrackets commented on GitHub (Dec 3, 2013): How's the status of this? I recall there were related changes recently. -[Unknown]
Author
Owner

@solarmystic commented on GitHub (Dec 4, 2013):

The filtering works in FMVs now, but forcing Linear Filtering still does nothing for the pixelated ingame fonts. Same thing for Soul Calibur Broken Destiny.

<!-- gh-comment-id:29771885 --> @solarmystic commented on GitHub (Dec 4, 2013): The filtering works in FMVs now, but forcing Linear Filtering still does nothing for the pixelated ingame fonts. Same thing for Soul Calibur Broken Destiny.
Author
Owner

@Antonio1994 commented on GitHub (Dec 9, 2013):

I dont know have you guys tryed it, but in MGS when I get in-game and exit fullscreen and enter fullscreen again the filtering works.....

<!-- gh-comment-id:30109550 --> @Antonio1994 commented on GitHub (Dec 9, 2013): I dont know have you guys tryed it, but in MGS when I get in-game and exit fullscreen and enter fullscreen again the filtering works.....
Author
Owner

@unknownbrackets commented on GitHub (May 13, 2014):

Does using something more like this help?

    if (g_Config.iTexFiltering == LINEARFMV && g_iNumVideos > 0 && (entry.dim & 0xF) >= 9) {
        magFilt |= 1;
        minFilt |= 1;
    }
    if (g_Config.iTexFiltering == LINEAR && !gstate.isColorTestEnabled()) {
        if (!gstate.isAlphaTestEnabled() || entry.GetAlphaStatus() == TexCacheEntry::STATUS_ALPHA_FULL || !gstate.isTextureAlphaUsed()) {
            magFilt |= 1;
            minFilt |= 1;
        }
    }

-[Unknown]

<!-- gh-comment-id:42971949 --> @unknownbrackets commented on GitHub (May 13, 2014): Does using something more like this help? ``` c++ if (g_Config.iTexFiltering == LINEARFMV && g_iNumVideos > 0 && (entry.dim & 0xF) >= 9) { magFilt |= 1; minFilt |= 1; } if (g_Config.iTexFiltering == LINEAR && !gstate.isColorTestEnabled()) { if (!gstate.isAlphaTestEnabled() || entry.GetAlphaStatus() == TexCacheEntry::STATUS_ALPHA_FULL || !gstate.isTextureAlphaUsed()) { magFilt |= 1; minFilt |= 1; } } ``` -[Unknown]
Author
Owner

@solarmystic commented on GitHub (May 13, 2014):

@unknownbrackets Just adding those lines in? Or do I have to replace any prior lines with these ones?

In any case, appending those lines to the current master version of the file does not resolve the issue. Lnear Texture Filtering is still broken for the ingame fonts in Tekken 6.

<!-- gh-comment-id:43004805 --> @solarmystic commented on GitHub (May 13, 2014): @unknownbrackets Just adding those lines in? Or do I have to replace any prior lines with these ones? In any case, appending those lines to the current master version of the file does not resolve the issue. Lnear Texture Filtering is still broken for the ingame fonts in Tekken 6.
Author
Owner

@unknownbrackets commented on GitHub (May 13, 2014):

Replacing the if block that starts with g_Config.iTexFiltering == LINEAR with those. But, these should apply separately anyway. That means we can't safely force linear filtering because it's inventing pixels that may have other alpha values than the game expects.

Or we could make it ignore that and people will complain about the green outlines around characters or etc. in some games again.

-[Unknown]

<!-- gh-comment-id:43024122 --> @unknownbrackets commented on GitHub (May 13, 2014): Replacing the if block that starts with `g_Config.iTexFiltering == LINEAR` with those. But, these should apply separately anyway. That means we can't safely force linear filtering because it's inventing pixels that may have other alpha values than the game expects. Or we could make it ignore that and people will complain about the green outlines around characters or etc. in some games again. -[Unknown]
Author
Owner

@solarmystic commented on GitHub (May 16, 2014):

@unknownbrackets Unfortunately, https://github.com/hrydgard/ppsspp/issues/6088 doesn't resolve the issue in Tekken 6 for the pixelated fonts. Setting it to Linear still causes it to be pixelated.

ulus10466_00009

Again, a reminder of what it used to look like with Linear Filtering set:-

ulus10466_00010

Seems to be the only straggler though. Other games have functioning Linear Filtering now when forced in the options.. (like Crisis Core etc.)

<!-- gh-comment-id:43315564 --> @solarmystic commented on GitHub (May 16, 2014): @unknownbrackets Unfortunately, https://github.com/hrydgard/ppsspp/issues/6088 doesn't resolve the issue in Tekken 6 for the pixelated fonts. Setting it to Linear still causes it to be pixelated. ![ulus10466_00009](https://cloud.githubusercontent.com/assets/4345150/2995665/54b3d722-dce1-11e3-885d-fe9086fab67c.jpg) Again, a reminder of what it used to look like with Linear Filtering set:- ![ulus10466_00010](https://cloud.githubusercontent.com/assets/4345150/2995676/73c8175e-dce1-11e3-8287-5aef137ac275.jpg) Seems to be the only straggler though. Other games have functioning Linear Filtering now when forced in the options.. (like Crisis Core etc.)
Author
Owner

@unknownbrackets commented on GitHub (May 16, 2014):

Well, I think that means it's using alpha test in a way that we can't know that we can safely ignore.

-[Unknown]

<!-- gh-comment-id:43349762 --> @unknownbrackets commented on GitHub (May 16, 2014): Well, I think that means it's using alpha test in a way that we can't know that we can safely ignore. -[Unknown]
Author
Owner

@ppmeis commented on GitHub (Jul 25, 2015):

Testing with latest build. Same status:
tekken6linearfilter

<!-- gh-comment-id:124903467 --> @ppmeis commented on GitHub (Jul 25, 2015): Testing with latest build. Same status: ![tekken6linearfilter](https://cloud.githubusercontent.com/assets/4381277/8891438/ceb13b1a-3329-11e5-8280-22e4f127381b.png)
Author
Owner

@unknownbrackets commented on GitHub (Feb 10, 2019):

So, thinking about this, I guess what we could do is use sampler objects (GL3.3+ / GLES3) to bind the texture in two slots, and then do BOTH nearest and linear.

That way, we could do color and alpha testing based on the nearest value, but still output the linear value. I think that's more or less staying true to the goals of higher render resolutions.

We could take this further, and when upscaling (not not texture replacements? not sure...), we could bind the original texture to the second slot. This would again allow for using nearest which would give us better chances of color tests and alpha tests working correctly.

-[Unknown]

<!-- gh-comment-id:462181756 --> @unknownbrackets commented on GitHub (Feb 10, 2019): So, thinking about this, I guess what we could do is use sampler objects (GL3.3+ / GLES3) to bind the texture in two slots, and then do BOTH nearest and linear. That way, we could do color and alpha testing based on the nearest value, but still output the linear value. I think that's more or less staying true to the goals of higher render resolutions. We could take this further, and when upscaling (not not texture replacements? not sure...), we could bind the original texture to the second slot. This would again allow for using nearest which would give us better chances of color tests and alpha tests working correctly. -[Unknown]
Author
Owner

@hrydgard commented on GitHub (Feb 10, 2019):

Yeah, that's definitely a possibility, although the mix between smooth filtering inside the solid regions coupled with the hard edges against the surroundings might look odd. Also, if the test is done against an ugly color it would still be able to bleed into the solid region.

<!-- gh-comment-id:462183553 --> @hrydgard commented on GitHub (Feb 10, 2019): Yeah, that's definitely a possibility, although the mix between smooth filtering inside the solid regions coupled with the hard edges against the surroundings might look odd. Also, if the test is done against an ugly color it would still be able to bleed into the solid region.
Author
Owner

@ghost commented on GitHub (Sep 14, 2021):

Auto Max Quality possible help this?

<!-- gh-comment-id:918942525 --> @ghost commented on GitHub (Sep 14, 2021): Auto Max Quality possible help this?
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ppsspp#1798
No description provided.