libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.37k stars 1.84k forks source link

Wii U shader "support" #7217

Open westonlast opened 6 years ago

westonlast commented 6 years ago

Shaders have been "supported" on Wii U for a while. I have a shader binary prepared for the Wii U. How do I test this thing? No matter what I do, including renaming the file to have a ".slang" extension, creating a Preset "SLANGP" file (the knowledge of the dummy file extensions to use required me looking at the Retroarch source code), the shader never seems to apply.

What kind of "Wii U shader support" is this where it's not even documented how to input a Wii U GX2 shader binary to Retroarch? It's like a bad joke. Please tell me how to use this Retroarch "feature."

westonlast commented 6 years ago

Manual modification of "retroarch.cfg?:" https://github.com/libretro/RetroArch/commit/d953ec2b5fdfb1a6e4995374c0623b7844578772

Still no luck.

andres-asm commented 6 years ago

It's not a joke, it works just fine. You have to combine the compiled shader source tree with the sources and load them normally.

westonlast commented 6 years ago

You mean, you need both the SLANGP (not actually SLANG) from here: https://github.com/libretro/slang-shaders

And then you need the GX2 binary of the same shader (not actually SLANG) in the same directory as the source? But the source is still required?

It's details like these that need to be documented. And I still don't have it right. The user has no idea to name things as if they were SLANG, to give one example.

westonlast commented 6 years ago

If someone will please tell me what to name my GX2 binary and where to locate said binary in relation to the other two files which are apparently required, I'd be eternally grateful. My gratitude might even spill over into a documentation pull request, depending on the weather, time of day, and my mood.

andres-asm commented 6 years ago

I don't know what you mean with GX2 binary What you do is

On Sun, Sep 16, 2018 at 10:29 AM westonlast notifications@github.com wrote:

If someone will please tell me what to name my GX2 binary and where to locate said binary in relation to the other two files which are apparently required, I'd be eternally grateful. My gratitude might even spill over into a documentation pull request, depending on the weather, time of day, and my mood.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/7217#issuecomment-421782915, or mute the thread https://github.com/notifications/unsubscribe-auth/ABpC0CdgRqNLOMPq9NWpckblGeMTgcaZks5ubm49gaJpZM4WqAUP .

westonlast commented 6 years ago

Here are the files that I have:

folder/sharp-bilinear-simple.slangp (the content points to the file below, one directory nested) folder/shaders/sharp-bilinear-simple.slang (dummy source file; Wii U doesn't compile shaders at runtime) folder/shaders/sharp-bilinear-simple.gsh (the compiled, binary file)

Not working. What's the difference between the Quick Menu > Shaders > Apply menu compared the check in this change?: https://github.com/libretro/RetroArch/commit/d953ec2b5fdfb1a6e4995374c0623b7844578772

And why isn't there an error message when I select Apply? No feedback at all.

andres-asm commented 6 years ago

Not sure why you keep bringing up that commit, it just fixes loading presets at startup. Nothing more, nothing else.

I haven't tried that particular shader but others I have work just fine.

westonlast commented 6 years ago

So I have the correct kinds of files in the right relative directories? Are the relative filenames correct?

westonlast commented 6 years ago

Yes? No? Perhaps? Perhaps not?

In case you were wondering (I know I was), this is the shader that I am trying to use: https://retropie.org.uk/forum/topic/12387/a-simple-sharp-pixel-shader-config-for-retropie-with-integer-prescale-and-no-pixelwobble

westonlast commented 5 years ago

Now I'm trying to use shaders_slang/retro/bandlimit-pixel.slangp, because it makes obsolete the previous one that I was attempting.

Will you please simply post your directory structure of one of the shaders that works for you on Wii U? No compiler copyright infringement fear necessary; I just need to follow your pattern. And then (I will) freaking document this.

I've wasted hours trying different directory structures in an attempt to guess Retroarch's illogical assumptions about where the GX2 shader binaries are supposed to be. No feedback when shader loading fails, of course.

Here's a question: How the heck is the Retroarch Menu using a shader without infringing on the stupid GX2 compiler copyright? What I mean is the following retroarch.cfg property: menu_shader_pipeline = "2"

How is Retroarch using a Menu shader on Wii U without compiling the shader for Wii U? :O

ashquarky commented 5 years ago

Here's a question: How the heck is the Retroarch Menu using a shader without infringing on the stupid GX2 compiler copyright?

Old bug, but still relevant: The menu shader was compiled with another tool - GPUOpen ShaderAnalyser. Despite the name, the tool isn't open at all, so there's no convenient way to actually integrate it nicely into a wiiu app. In addition, the output it gives is as assembly text rather than a shader binary; so it needs to get piped through another tool. For RetroArch, it was rewritten as C source by hand, though latte-assembler exists. The whole setup is kinda fragile though, and often the output from shaderanalyser is considered invalid by latte-assembler, and the fact the dang thing is Windows-only makes it difficult to automate. With that said; in the time between now and the last I tried this, ShaderAnalyser started running in Wine, so maybe automation isn't impossible.

westonlast commented 5 years ago

Thank you for explaining at least a piece of this, which otherwise would be impossible to know. (sincerely)

It will be a nice puzzle for the next sorry soul who sees "Wii U shader support" in the list of Retroarch "features," ends up here, and embarks on the quest to unlock the easter egg. Part of the fun, I guess.

Oh, and since the menu shader was compiled, why not the other Retroarch shaders? One at a time, for all I care. I mean, this is a "feature," after all.

inactive123 commented 5 years ago

It'd be nice if a solution could finally be offered after all this time without running afoul of anything.

DerekRoth commented 4 years ago

So what is the status of this? I can’t find any documentation about shader support for Wii U Retroarch and by default none of the shaders i tried had any effect

hizzlekizzle commented 4 years ago

@DerekRoth Do you have the compiled shaders? They are available online, just not from us. Once you have them on your SD card, go to settings > directory and point your video shaders directory to that location and you should be able to load them.

DerekRoth commented 4 years ago

Thanks! So it was actually very simple to make it work but nothing in the documentation was indicating that the Wii U shaders needed to be pre-compiled.