libretro-mirrors / beetle-saturn-libretro

Standalone port of Mednafen Saturn to the libretro API.
GNU General Public License v2.0
62 stars 40 forks source link

Option for all 2D Elements to remain in 1x Rez When Increasing Internal Rez #50

Open shinra358 opened 7 years ago

shinra358 commented 7 years ago

Would like the option for to increase the internal rez and a separate option for all 2D elements in saturn games to remain in their native 1x rez when increasing the internal resolution for 3D elements. This way, the majority of the scaling like shaders can continue to work correctly and performance can be improved when increasing the internal resolution. I believe the n64 core has something like this as an option.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/48468023-option-for-all-2d-elements-to-remain-in-1x-rez-when-increasing-internal-rez?utm_campaign=plugin&utm_content=tracker%2F43093589&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F43093589&utm_medium=issues&utm_source=github).
andres-asm commented 7 years ago

if you scale the 3D and you don't scale the framebuffer everything would be enormous (wouldn't fit on the screen).

shinra358 commented 7 years ago

Doesnt ppsspp do it though?

On Aug 21, 2017 1:17 AM, "Andrés" notifications@github.com wrote:

if you scale the 3D and you don't scale the framebuffer everything would be enormous (wouldn't fit on the screen).

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/libretro/beetle-saturn-libretro/issues/50#issuecomment-323648462, or mute the thread https://github.com/notifications/unsubscribe-auth/ADy0M5sLTEK_O9CCz9xn6e2z3-bYEtNTks5saRMAgaJpZM4O82GQ .

andres-asm commented 7 years ago

Where? Tell me the options that you think achieve this.

shinra358 commented 7 years ago

For ppsspp, theres an option called lower resolution for effects. Im sure, since it's code, it can be modified and applied to hud, or any other 2d based sprite instead.

On Aug 21, 2017 1:19 AM, "Andrés" notifications@github.com wrote:

Where? Tell me the options that you think achieve this.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/libretro/beetle-saturn-libretro/issues/50#issuecomment-323648653, or mute the thread https://github.com/notifications/unsubscribe-auth/ADy0M1mvYrwbZUsKiQZFxFi1RIvNwei5ks5saRN3gaJpZM4O82GQ .

andres-asm commented 7 years ago

Effects are most likely particle effects. That doesn't necessarily mean it can be applied to huds or other 2d elements.

Assuming there was a renderer that supported scaling, you could theoretically have it scale 2d elements with linear/nearest.

That said, the framebuffer would definitely need to scale, so any shaders that rely on the original framebuffer size (such as most CRT shaders) wouldn't work properly, and for the rest, it would still process the whole scene, not just 2D elements unless the shader performs detection of 3D elements like hyllian shaders can do.

shinra358 commented 7 years ago

What about then for this core, we have increased rez with texture packs? Or are texture pack features too cumbersome to code in a decent period of time?

On Aug 21, 2017 1:31 AM, "Andrés" notifications@github.com wrote:

Effects are most likely particle effects. That doesn't necessarily mean it can be applied to huds or other 2d elements.

Assuming there was a renderer that supported scaling, you could theoretically have it scale 2d elements with linear/nearest.

That said, the framebuffer would definitely need to scale, so any shaders that rely on the original framebuffer size (such as most CRT shaders) wouldn't work properly, and for the rest, it would still process the whole scene, not just 2D elements unless the shader performs detection of 3D elements like hyllian shaders can do.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/libretro/beetle-saturn-libretro/issues/50#issuecomment-323649961, or mute the thread https://github.com/notifications/unsubscribe-auth/ADy0M4VXIQtDEquPzGtWVO8Pf3LFeBWkks5saRY5gaJpZM4O82GQ .

andres-asm commented 7 years ago

The emulator isn't even stable or fast yet... Enhancements at this time would probably break more stuff than what it would improve.

shinra358 commented 7 years ago

Ok.

On Aug 21, 2017 1:38 AM, "Andrés" notifications@github.com wrote:

The emulator isn't even stable or fast yet... Enhancements at this time would probably break more stuff than what it would improve.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/libretro/beetle-saturn-libretro/issues/50#issuecomment-323650792, or mute the thread https://github.com/notifications/unsubscribe-auth/ADy0M6QMSZNUo6qomBXl2G1aOTZ7mdIiks5saRfXgaJpZM4O82GQ .

shinra358 commented 7 years ago

https://www.libretro.com/index.php/introducing-vulkan-psx-renderer-for-beetlemednafen-psx/

skip to section 'feature - adaptive smoothing'.

hiddenasbestos commented 6 years ago

Hardware accelerating the VDP1 will be very tricky to do accurately due to some of the quad rendering tricks you can do that triangles don't support, like twisting. I suppose you could upscale the software rendering but I think either way you'd probably also introduce seams between faces of the geometry. Plus you'd still need a 1x copy in RAM for Burning Rangers.

I suppose you could do a high-rez mode for VDP2, so you'd get less aliasing on the "flat infinite planes" - I've seen that done for Super Nintendo.

I'm a bit of purist though, so I only want accuracy to the original hardware and not enhanced visuals like this. It's a fun challenge to consider but not something I'm volunteering for. Basically it's way harder to accelerate/upscale a Saturn and than the (much simpler) PlayStation hardware.

inactive123 commented 6 years ago

@hiddenasbestos Would it maybe be possible to research resolution upscaling to begin with ? I imagine only 2x might have a chance of being fullspeed on the fastest hardware out there right now, but at least it's something to work with, and from there stuff like GL/Vulkan could eventually become a possibility.

Maybe there is stuff in Yabause we could look at to serve as inspiration.

Papermanzero commented 6 years ago

Maybe a branch like the PS1 Version could be a solution. Means to keep this repo aligned with the master and to create a separate hardware acceleration repo with experiments like hardware upscaling.

andres-asm commented 6 years ago

I think uoyabause works around the problems due upscaling via tesselation https://www.youtube.com/watch?v=8TleepxIORU

At least this one looks pretty nice: https://youtu.be/h3XACBKbJ0w?t=465