Views: 578,876 Main | Rules/FAQ | Memberlist | Active users | Last posts | Calendar | Stats | Online users | Search 06-27-17 11:39 PM

0 users reading 3DS Shader Tools - nihstro | 1 bot

Main - Homebrew tools - 3DS Shader Tools - nihstro New reply

Posted on 11-15-14 06:28 AM (rev. 8 of 08-19-15 07:19 AM) Link | #22
nihstro is a collection of tools for dealing with 3DS shader developement and reverse engineering. Currently it accommodates an assembler and a disassembler. The assembly shading language used by nihstro follows a public specification.

Included with nihstro is a description of the shader assembly language and a concrete list instruction set reference. Additionally, two very simple example applications are included to illustrate usage (shaders are bundled in the data subdirectories).

nihstro is written in C++11 and requires the Boost libraries. You can read about the details on the GitHub page.

Windows binaries can be downloaded here (update: new version below!). The Readme contains basic usage information.

Given its early development state, there may be a number of quirks with the assembler, in particular:
* Code which you would intuitively expect to work might not compile, or compile in an unexpected way
* Statements which are valid according to the specification or the instruction set reference may be rejected as invalid, or generate an incorrect shader binary.

If you encounter any of these issues or have any other suggestions to make, please report them in this thread (and include an example shader source and the output shbin in that report). You can also create an issue on GitHub.

Posted on 11-15-14 08:54 AM Link | #25
Interesting project.

When I'm less busy with blargSNES's hardware renderer, I'll port the shaders it uses, so you can test them.

I'll gladly switch to this if it is practical enough. devkitPro integration would be gold, but atleast being readily available for Windows and Linux would do it for me.

blargSNES -- SNES emu for 3DS
More cool stuff

Posted on 11-15-14 09:47 AM Link | #26
Fwiw, I just uploaded a Windows binary (link in the first post).

Posted on 03-06-15 09:57 AM (rev. 2 of 03-06-15 09:58 AM) Link | #101
Just put out an official 0.1 pre-release, link in the first post!

Quoting announcement from gbatemp:
Hi there,

Ever since the release of ninjhax, only few homebrew applications have been developed, which to a large degree probably stems from the lack of tools for convenient GPU programming. This is a pity, especially since the PICA200 could achieve quite nice things given its unique feature set compared to other GPUs targeted at the mobile market: There are extensions for fragment lighting, procedural textures, gaseous object rendering, and other things. While none of these are understood by the homebrew community (yet!), you can see that there is a lot of potential.

Over the past months I've hence been working on a shader assembler (as part of my tool suite nihstro), which has now become advanced enough to be usable for the general 3DS homebrew development. By putting out a prerelease, I'm hoping to get some feedback on the used shader assembly syntax and ease of use.

The shader assembler currently supports most of the instructions listed on 3dbrew, excluding MOVA, MAD, EMIT and SETEMIT. I'm of course planning to add support for these in the future.

If you're interested, head over to the nihstro thread on our homebrew community board 4dsdev for more information and Windows binaries.

Other than that, any feedback on nihstro is welcome!


Posted on 03-06-15 11:22 AM Link | #102
Nice! If this could get more people into the homebrew scene :)

And especially into using the GPU, too. Framebuffer drawing works, but the 3DS is too slow to refresh the whole framebuffers at 60FPS.

blargSNES -- SNES emu for 3DS
More cool stuff

Posted on 03-08-15 05:02 AM Link | #110
Could you please add some samples like how to display backgrounds (if that's possible) and how to texture triangles?

Posted on 03-08-15 07:52 AM Link | #111
Posted by Tcm0
Could you please add some samples like how to display backgrounds (if that's possible) and how to texture triangles?

Unfortunately I don't have too much time on my hands to come up with new examples, so any contributions would be welcome there. As for texturing triangles, the cube demo will show you how to do that already. Displaying backgrounds might be as simple as rendering a textured quad (= two triangles) spanning the whole screen; something more sophisticated is known as "sky boxes", and should be easy enough to find using Google.

Posted on 06-02-15 04:06 PM (rev. 4 of 08-19-15 07:19 AM) Link | #165
New Windows x64 binaries: revision c3d7977888cd
New Windows x86 binaries: revision c3d7977888cd

New builds below.

Posted on 08-19-15 07:18 AM (rev. 2 of 08-19-15 07:18 AM) Link | #342
New nightly builds (August 19, 2015)

Windows x64 binaries: revision c3d7977888cd
Windows x86 binaries: revision c3d7977888cd

Main - Homebrew tools - 3DS Shader Tools - nihstro New reply

Page rendered in 0.050 seconds. (2048KB of memory used)
MySQL - queries: 28, rows: 81/81, time: 0.035 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2015-10-07)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.