Arisotura / blargSnes

SNES emulator for the 3DS.
193 stars 33 forks source link

Port shaders over to nihstro syntax. #15

Closed neobrain closed 9 years ago

neobrain commented 9 years ago

Drops aemstro usage in favor of nihstro. I didn't bother introducing variable names instead of hardcoded register indices in the shader source (too much work :p), but even without that nihstro syntax the shaders should be a lot easier to read now.

I'm not entirely sure what to put in the Makefile to make sure it works on all operating systems. Maybe it actually already does everywhere. I only tested it on Linux, though (the generated shaders worked fine on hardware).

NOTE: Tested with neobrain/nihstro@9cd74e39195 .

profi200 commented 9 years ago

boost shader assembler incoming :|

All nice but the huge dependency of your shader assembler scares away some potential users. I would want to use something lightwight.

neobrain commented 9 years ago

In order not to derail this PR into a discussion on heavy dependencies, let me just note that there are binary builds for nihstro available on 4dsdev.org[1], so unless someone insists on building nihstro by themselves, they can just download the prebuilt binary without needing to download boost.

[1] ... which are currently out of date, but if need be I can upload new ones upon request.

profi200 commented 9 years ago

As said on IRC, Linux users usually build from source to avoid dependency problems and because you know, never trust random executables (That can even be a problem with executables releases on Github even if it is more unlikely as in random forums cough GBAfail cough).

I also don't want to download the entire boost package just to compile it (Because it would waste space on my HDD and it will eat my 3G volume.). C++ yes but please not such blown up dependencies.

More discussion is useless so let StapleButter decide.

fincs commented 9 years ago

Personally, I think that a low-level tool such as a shader assembler that aims to gain widespread usage and especially wants to become the standard tool should not depend on hefty libraries like boost because this results in many unnecessary build headaches, moreover, some distros and/or configurations unfortunately have outdated versions of software. For this very reason I decided to write picasso, an alternative to aemstro and nihstro that is written in plain C++ with no dependencies. It has even been verified to build with even GCC 4.0 (which is what WinterMute uses to build the OS X version of devkitARM, and yes; I've talked to him about upgrading without success).

neobrain commented 9 years ago

As @profi200 noted, this is not the place for discussing the merits of various shader compilers, at least until the repository maintainers actually ask for any of this. If need be I could list the positive aspects of nihstro over the alternatives, but for now let's leave it at that.

neobrain commented 9 years ago

Uploaded recent nihstro Windows binaries. You can get them at http://4dsdev.org/thread.php?pid=165 (see last post).

neobrain commented 9 years ago

The location linked to above now also provides 32-bit binaries.

Arisotura commented 9 years ago

and how about you guys agree on a common shader language (aemstro aside) instead of making different shader assemblers

profi200 commented 9 years ago

Seems like you made your decision. I guess i won't compile this myself in the future.