-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Combine bicubic upscale shaders #17294
Comments
While I agree there a bit too many similar shader I think much depends on how much semantic meaning these coefficients have. Can you define a user friendly name for them? In general parameters tuning is quite the opposite of UX. |
The official names for the coefficients are "B" and "C" respectively. The usual figure for visual quality is
I imagine only "advanced users" would be doing some tuning, and most would be ok with the default. E.g. I don't think I've seen a single case where Catmull-Rom didn't look straight-up better between the two current bicubic shaders on a PSP game (but, of course, "look better" is subjective, and I have only one data point that's not my own (that one is in texture upscaling topic, but the filters are the same)). It is sharper, and while it is supposed to have more ringing, it never seemed problematic. |
I wouldn't mind a single parameter for 1-B called "sharpness". Blurriness make me feel like some user would just set it to 0 'cuz he don't want blurriness :) Anyway I don't have a really strong opinion on this. |
Can be closed now. |
What should happen
Back when both shaders were introduced there was a comment:
This struck a note with me, because having two separate bicubic filters does feel awkward. And now that I think about it, I can just combine them into a single, configurable, shader.
Both "Bicubic (Catmull-Rom) Upscaler" and "Bicubic (Mitchell-Netravali) Upscaler" shaders are members of Mitchell-Netravali class of filters (paper), which are parametrized by a pair of coefficients B, C, so it fits fits nicely into PPSSPP's 4 shader parameters as
float4 u_setting
setup. Live preview (so to speak) feature of PPSSPP also should work nicely with this.Now, this would probably be somewhat slower (disappointing, considering I introduced these as a lightweight replacement for Spline36) since you would need to calculate weight coefficients on the fly rather than hardcode them, but I expect it to be rather minor, since most of the time is probably spent on 16 texture lookups anyway.
I can do a PR (probably defaulting unified shader to Catmull-Rom), but here I'm just gathering opinions whether this is worthwhile to do at all. Do people even use these shaders (I tend to just use 1x internal + nearest filtering myself, for maximum blocky Authentic Experience™, even in 3D games)?
Who would this benefit
People who care about bicubic upscalers would be able to tune them just right, and people who don't would have one less "bicubic whatever" option cluttering the menu.
Platform (if relevant)
None
Games this would be useful in
Other emulators or software with a similar feature
No response
Checklist
The text was updated successfully, but these errors were encountered: