bsnes:xml-shaders.git
9 years agoHave a fixed default texture filter method.
Tim Allen [Sat, 8 Sep 2012 09:00:58 +0000 (19:00 +1000)]
Have a fixed default texture filter method.

The XML shader spec says this can be implementation defined; we might as
well define it consistently.

9 years agoAdd support for the final 'implicit pass'.
Tim Allen [Sat, 8 Sep 2012 08:51:11 +0000 (18:51 +1000)]
Add support for the final 'implicit pass'.

This is the thing where if the last pass of a shader doesn't set
a specific output size we render it straight to the screen, but if it
does then we have to render to another framebuffer object, then render
*that* to the screen without any shader at all.

This also includes some refactoring; the 'draw texture to screen'
and 'draw texture to framebufferobject' methods both involved binding
a texture, setting a filter, then drawing a textured quad, so that was
broken out into a helper function.

9 years agoManually delete textures at shutdown.
Tim Allen [Fri, 7 Sep 2012 11:46:21 +0000 (21:46 +1000)]
Manually delete textures at shutdown.

This means we won't get annoying "ignored exception in __del__" messages
when we quit.

9 years agoCreate textures with full-alpha.
Tim Allen [Sat, 15 Sep 2012 08:24:22 +0000 (18:24 +1000)]
Create textures with full-alpha.

9 years agoMove "create GL texture" logic into texreader.py
Tim Allen [Fri, 7 Sep 2012 11:35:13 +0000 (21:35 +1000)]
Move "create GL texture" logic into texreader.py

This makes it match how shaderreader.py works.

9 years agoSimplify texreader.parse_ppm()
Tim Allen [Fri, 7 Sep 2012 11:21:45 +0000 (21:21 +1000)]
Simplify texreader.parse_ppm()

We don't *really* need a complicated state-based parser for PPM files
when we can just use str.split().

I guess this might be a problem if a PPM begins with a byte
that happens to be a whitespace character, but if that happens at least
the code will raise an exception.

9 years agoAdd basic multipass support.
Tim Allen [Wed, 5 Sep 2012 14:03:59 +0000 (00:03 +1000)]
Add basic multipass support.

Now we can render all the passes defined in a shader file, and we even
get the texture coordinates of each pass the right way round. As part of
this. I added a Texture class that groups the texture ID, width and
height into a single class, so _render_pass() can return all the
information about the new texture instead of passing tuples around
everywhere.

Still need to handle the special-casing the spec calls an "implicit
pass".

9 years agoFirst draft of XML Shader reference implementation.
Tim Allen [Tue, 4 Sep 2012 13:34:31 +0000 (23:34 +1000)]
First draft of XML Shader reference implementation.

Known problems include:
- Only renders first pass.
- Always renders at input resolution then scales up.
- Currently renders the output right-side-up, but only through
  brute-force changing numbers at random. Need to figure out what the
  hell is going on here.

Apart from those, it all seems to be working pretty fluidly.

9 years agoIgnore Python droppings.
Tim Allen [Fri, 7 Sep 2012 10:58:33 +0000 (20:58 +1000)]
Ignore Python droppings.

9 years agoA shader for testing multipass implementations.
Tim Allen [Wed, 5 Sep 2012 13:45:52 +0000 (23:45 +1000)]
A shader for testing multipass implementations.

9 years agoAdd Pixellate-scanlines combo shader.
Tim Allen [Wed, 29 Aug 2012 23:13:30 +0000 (09:13 +1000)]
Add Pixellate-scanlines combo shader.

Posted by hunterk here:

    http://board.byuu.org/viewtopic.php?p=72130#p72130

9 years agoFix typo in comment.
Tim Allen [Sat, 16 Jun 2012 13:38:43 +0000 (23:38 +1000)]
Fix typo in comment.

10 years agoFix the licensing link for Pixellate.
Tim Allen [Sun, 1 Apr 2012 12:13:33 +0000 (22:13 +1000)]
Fix the licensing link for Pixellate.

Looks like I copy/pasted the wrong URL. D'oh!

10 years agoUpdate to 5xBR v3.7 shaders.
Tim Allen [Tue, 27 Mar 2012 10:45:41 +0000 (21:45 +1100)]
Update to 5xBR v3.7 shaders.

It has been pointed out to me that it is actually useful to have all
three variants of the 5xBR shader, so I've included them under
descriptive names rather than their original filenames:

    5xBR v3.7a -> 5xBR Rounded
    5xBR v3.7b -> 5xBR Semi-Rounded
    5xBR v3.7c -> 5xBR Squared

From this thread on the bsnes forums:

    http://board.byuu.org/viewtopic.php?p=59514#p59514

10 years agoUpdates to the Pixellate shader.
Tim Allen [Tue, 6 Mar 2012 10:36:08 +0000 (21:36 +1100)]
Updates to the Pixellate shader.

A faster version of the GLSL version, and a matching HLSL port.

From this forum thread:

    http://board.byuu.org/viewtopic.php?p=57250#p57250

10 years ago5xBR: Don't shrink single dark pixels.
Tim Allen [Sat, 3 Mar 2012 13:13:27 +0000 (00:13 +1100)]
5xBR: Don't shrink single dark pixels.

This makes sure that single dark pixels (such as Yoshi's eyes in Super
Mario World, or the spikes on the Pokeys) aren't 'eaten up' by
surrounding brighter colours.

10 years agoCredit crazy46guy for the GLSL conversion of 5xBR
Tim Allen [Sat, 3 Mar 2012 09:23:59 +0000 (20:23 +1100)]
Credit crazy46guy for the GLSL conversion of 5xBR

10 years agoA GLSL version of Hyllian's 5xBR shader.
Tim Allen [Thu, 1 Mar 2012 13:23:14 +0000 (00:23 +1100)]
A GLSL version of Hyllian's 5xBR shader.

Posted to the bsnes forums in this thread:

    http://board.byuu.org/viewtopic.php?f=3&t=2512

Hyllian's original Cg shader is available here:

    https://github.com/twinaphex/common-shaders/blob/master/xBR/5xBR-v3.5a.cg

10 years agoRemove support for bsnes v083 shaders.
Tim Allen [Thu, 9 Feb 2012 12:46:21 +0000 (23:46 +1100)]
Remove support for bsnes v083 shaders.

As of version v085 (maybe v084), bsnes supports the traditional XML
format for shaders once again, so the special translation scripts are no
longer necessary.

10 years agoUpdated the interlaced version of the CRT shader.
Tim Allen [Thu, 9 Feb 2012 12:38:55 +0000 (23:38 +1100)]
Updated the interlaced version of the CRT shader.

Also, there's now a 'halation' version of the CRT-interlaced shader,
which adds a subtle glow around bright parts of the screen, much like
a genuine CRT does.

From this post by hunterk on the bsnes forums:

    http://board.byuu.org/viewtopic.php?p=54531#p54531

10 years agoNew version of the CRT shader from cgwg.
Tim Allen [Sat, 4 Feb 2012 09:27:24 +0000 (20:27 +1100)]
New version of the CRT shader from cgwg.

Changelog:

- More accurate geometry for simulating a spherically curved CRT. Now
  controlled by two parameters: radius of curvature and distance of
  viewer from screen.
- Tilting of the simulated screen.
- Hard border and rounded corners.
- Adjustable overscan.
- Moved most of the parameters to the vertex shader file. See the
  comments at the start of the main function. There are still a few
  #defines that can be toggled in the fragment shader files.
- 3x oversampling of the beam profile. Reduces MoirĂ© patterning at small
  output sizes. This has probably the biggest impact on performance, and
  should be disabled if things become sluggish.

As discussed in this thread:

http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=74575#Post74575

10 years agoA CRT shader that handles interlaced video.
Tim Allen [Fri, 21 Oct 2011 11:35:36 +0000 (22:35 +1100)]
A CRT shader that handles interlaced video.

This is a slight modification of shaders/OpenGL/v1.0/CRT.shader that
detects when it's being fed an interlaced video frame, and only displays
the odd or even fields as appropriate. This provides more authentic and
natural rendering of interlaced frames, but requires features from the
v1.1 spec so it can't just replace the original CRT shader.

The original modification was done by cgwg here:

    http://board.byuu.org/viewtopic.php?p=41966#p41966

...and rebased onto the latest version of the CRT shader by hunterk:

    http://board.byuu.org/viewtopic.php?p=47087#p47087

10 years agoAdd HQ4x shader.
Tim Allen [Thu, 20 Oct 2011 10:44:33 +0000 (21:44 +1100)]
Add HQ4x shader.

This shader was originally written for Pete's OpenGL plugin (a video
renderer for Playstation emulators), and converted to an XML shader file
by hunterk in this post:

    http://board.byuu.org/viewtopic.php?p=47099#p47099

10 years agoApply filter settings from bsnes v083 shaders.
Tim Allen [Fri, 14 Oct 2011 11:01:50 +0000 (22:01 +1100)]
Apply filter settings from bsnes v083 shaders.

This makes these shaders work properly with bsnes v083, as well as
XML Shader Format v1.1-compatible host applications.

10 years agoQuilez shader requires linear filtering.
Tim Allen [Fri, 14 Oct 2011 10:00:06 +0000 (21:00 +1100)]
Quilez shader requires linear filtering.

The 'filter' attribute isn't strictly compatible with version 1.0 of the
XML shader spec, but it doesn't hurt... and versions of bsnes that don't
support 'filter' let you toggle it manually in the menus anyway.

10 years agoA tool to make a set of shaders for bsnes v083.
Tim Allen [Wed, 5 Oct 2011 12:19:07 +0000 (23:19 +1100)]
A tool to make a set of shaders for bsnes v083.

bsnes v083 only understands shaders in the new "BML" format, which is
still in flux, and does not perfectly align with the XML document model.
I've included an XSLT script which seems to transform XML shaders into
a format acceptable to bsnes v082r30; we'll see if it still works with
bsnes v083 final.

10 years agoA tool to make a set of shaders for bsnes v082.
Tim Allen [Tue, 4 Oct 2011 12:42:38 +0000 (23:42 +1100)]
A tool to make a set of shaders for bsnes v082.

Actually, this set should work for any version of bsnes that supports
XML shaders. Very old versions don't actually require the target
(Direct3D or OpenGL) in the filename, but it doesn't hurt.

10 years agoCopied XML shaders from my bsnes repository.
Tim Allen [Tue, 4 Oct 2011 12:09:22 +0000 (23:09 +1100)]
Copied XML shaders from my bsnes repository.

bsnes v083 changes the supported shader format from the traditional XML
format to a new markup format. Therefore, there's not much point keeping
shaders in XML format in the bsnes repository.