Editing Shaders and filters
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | Shaders and filters can be applied to video games to | + | Shaders and filters can be applied to video games to achieve some kind of visual effect. These can be from attempting to replicate [[Recommended Displays|aperture grille]] displays, NTSC signals, or something more exotic. |
==Emulator support== | ==Emulator support== | ||
Line 11: | Line 11: | ||
| | | | ||
Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch. | Old bsnes XML shaders (.shader) and old bsnes filter plugins (.filter) are no longer usable in current versions of RetroArch. | ||
− | SoftFilters are dynamic libraries, the extension depends on | + | SoftFilters are dynamic libraries, the extension depends on platform. |
.cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp. | .cgp stacks several .cg files on top of one another. Same thing with .glslp and .slangp. | ||
Line 19: | Line 19: | ||
|Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum]. | |Only on special builds such as [http://ykhwong.x-y.net/ SVN Daum]. | ||
|- | |- | ||
− | | style="text-align: center;"|[[ | + | | style="text-align: center;"|[[Higan]] |
|.filter, .shader, folders | |.filter, .shader, folders | ||
| | | | ||
.shader removed in future higan releases in favor of Quark shader folders. | .shader removed in future higan releases in favor of Quark shader folders. | ||
− | .filter works in old [[higan|bsnes]] versions (circa | + | .filter works in old [[higan|bsnes]] versions (circa v82) but not current in current versions of higan. |
|- | |- | ||
− | | style="text-align: center;"|[[ | + | | style="text-align: center;"|[[HqMAME]] |
|.fx | |.fx | ||
|xBRZ and HQx | |xBRZ and HQx | ||
|- | |- | ||
− | | style="text-align: center;"|[[ | + | | style="text-align: center;"|[[OpenEMU]] |
|.cg, | |.cg, | ||
− | | | + | | |
|- | |- | ||
| style="text-align: center;"|[[Snes9x]] | | style="text-align: center;"|[[Snes9x]] | ||
Line 42: | Line 42: | ||
|Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin]. | |Only with a [http://www.lanpartyguide.com/zelda/shaders.html custom Rice Video plugin]. | ||
|- | |- | ||
− | | style="text-align: center;"|[[PCSX- | + | | style="text-align: center;"|[[PCSX-R]] |
|.slv/.slf, .vp/.fp | |.slv/.slf, .vp/.fp | ||
|Requires Pete's OpenGL2 or gpuBladeSoft. | |Requires Pete's OpenGL2 or gpuBladeSoft. | ||
Line 49: | Line 49: | ||
|.slv/.slf, .vp/.fp | |.slv/.slf, .vp/.fp | ||
|Requires Pete's OpenGL2 or gpuBladeSoft. | |Requires Pete's OpenGL2 or gpuBladeSoft. | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| style="text-align: center;"|[[PCSX2]] | | style="text-align: center;"|[[PCSX2]] | ||
Line 59: | Line 55: | ||
|- | |- | ||
| style="text-align: center;"|[[Dolphin]] | | style="text-align: center;"|[[Dolphin]] | ||
− | |.txt | + | |.txt |
|Can only be used with OpenGL backend. | |Can only be used with OpenGL backend. | ||
|- | |- | ||
Line 70: | Line 66: | ||
|GLSL equiv. of cgp - possible to stack several shaders with this. | |GLSL equiv. of cgp - possible to stack several shaders with this. | ||
|} | |} | ||
− | |||
− | |||
− | |||
==Types== | ==Types== | ||
− | [[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader.]] | + | {{Main|List of shaders and filters}} |
+ | [[File:Crt-geom.png|thumb|190px|crt-geom-flat.cg, a popular CRT shader. ]] | ||
===CRT Shaders=== | ===CRT Shaders=== | ||
{{Main|CRT Shaders}} | {{Main|CRT Shaders}} | ||
− | + | Most of these replicate aperture grille CRTs, which have sharp images and strong scanlines. Only a few replicate shadow mask CRTs, often requiring much higher resolutions. | |
− | |||
===NTSC Filters=== | ===NTSC Filters=== | ||
− | {{Main|NTSC | + | {{Main|NTSC filters}} |
− | These | + | These replicate the signals that consoles output to the TV. They vary in quality, with the lowest being RF, then composite, then s-video and RGB (scart) being the highest quality. Many emulators have NTSC filters built into them. They can also be separately downloaded in filter plugin format. |
+ | ===LCD Shaders=== | ||
+ | [[File:Lcd-grid.png|thumb|256px|cgwg's lcd-grid-v2 shader with GBA colors.]] | ||
+ | These replicate the look of a low resolution LCD display common on handhelds. These can range from a simple grid drawn around the pixels to a detailed recreation of each pixel's RGB subpixels. May also include motion blurring to simulate ghosting and washed out color gamuts. | ||
− | === | + | ===GameBoy Shader=== |
− | + | [[File:Gb.png|thumb|190px|GameBoy Shader with default urine palette. Other palettes are available.]] | |
− | + | This .cgp shader replicates the dot matrix screen of a Game Boy, complete with the ghosting problems to reproduce certain visual effects. Made by Harlequin. Requires [[RetroArch]]. | |
− | |||
− | |||
===Smoothing shaders=== | ===Smoothing shaders=== | ||
− | These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX, HQx, xBR and xBRZ attempt to reduce the | + | These shaders, such as 2xSai, Super Eagle, Super 2xSai, scaleX , HQx , xBR and xBRZ attempt to reduce the pixellation by smoothing and rounding. They can cause a lot of false positives and distortions, however, scaling the image 2x or 3x using nearest neighbor, then applying the smoothing shader will reduce the intensity of the smoothing by keeping the pixel shapes intact, eliminating most distortions while keeping a fairly smooth look. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
===Dithering=== | ===Dithering=== | ||
− | |||
− | |||
− | |||
− | |||
− | [[ | + | These are shaders designed to detect and smooth [[dithering]]. [https://github.com/libretro/common-shaders/tree/master/dithering mdapt] is a popular one. There is also newer gdapt. |
− | + | ||
− | |||
− | |||
===Pixellate=== | ===Pixellate=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | This shader is supposed to appear the same as nearest neighbor (aka "unfiltered"), except with minor corrections when using a non-integer scale that are increasingly less noticeable the higher it is scaled. This shader is very useful to anyone who wants to keep things as sharp as possible without worrying about scale factors. Available in [https://github.com/hizzlekizzle/quark-shaders/tree/master/Pixellate.shader Quark] and [https://github.com/libretro/common-shaders/blob/master/retro/shaders/pixellate.cg Cg] shader formats. | |
===Border=== | ===Border=== | ||
Line 159: | Line 106: | ||
===Image Adjustment=== | ===Image Adjustment=== | ||
− | Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, | + | Image adjustment shaders allow you to adjust the color levels of an image, including gamma, luminance, contrast, saturation, etc., for personal preference, accuracy, or compensating your display. Very often, these are used alongside other shaders. There are also [https://github.com/Monroe88/common-shaders/tree/color-lcd/handheld/color-lcd shaders] that simulate the color profiles of specific displays, such as the GBA or DS. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Shaders on real CRTs== | ==Shaders on real CRTs== | ||
− | On 31+kHz PC CRT monitors displaying in high | + | On 31+kHz PC CRT monitors displaying in high resolution modes, most filters/shaders should work fine as is, as most were intended for output scaled 3x or higher. |
− | However, CRT monitors (and 15kHz CRTs) displaying in low | + | However, CRT monitors (and 15kHz CRTs) displaying in low resolution modes like 240p or 480p, you will find many of them won't work correctly due to the low output resolution. In these cases you should use shaders that are applied only on the horizontal axis, only make changes to color output without scaling, or those that add scanlines/interlacing for 480p output. |
− | You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples. | + | You can combine those things with these two shader presets: [https://github.com/libretro/common-shaders/blob/master/cgp/tvout/tvout.cgp tvout.cgp] for 240p and [https://github.com/libretro/common-shaders/blob/master/cgp/tvout%2Binterlacing/tvout%2Binterlacing.cgp tvout+interlacing.cgp] for 480p. Both of these allow you to have adjustable signal resolution blur applied horizontally, as well as color controls like gamma, saturation, and the option to use TV color range (16-235) instead of PC color range (0-255), while the 480p version provides a scanline shader that is interlaced on 480-line content. The signal resolution blur works best if you use a large horizontal resolution (1280 or higher recommended) while keeping your vertical resolution at 240 or 480, and setting the aspect ratio of the emulator to stretch to fit. The higher horizontal resolution will make it look very natural and convincing, avoiding banding issues. Can be combined with NTSC filters/shaders for maximum authenticity, check out the shader presets in [https://github.com/libretro/common-shaders/tree/master/cgp/tvout /cgp/tvout] and [https://github.com/libretro/common-shaders/tree/master/cgp/tvout%2Binterlacing /cgp/tvout+interlacing] for some examples. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Downloads== | ==Downloads== | ||
− | + | [https://github.com/libretro/common-shaders Libretro Cg shader repository] | |
− | + | [https://github.com/hizzlekizzle/glsl-shaders Libretro GLSL shader conversion repository] | |
− | + | [https://mega.nz/#!OJc0DZwT!I_ulxfrXeNuOUxpE2eSKktSxdIktOxx4uzKMyTNdJYs Border Shaders by EndUser] | |
− | |||
− | + | [http://www.emu-france.com/emulateurs/5-consoles/51-nintendo-super-nintendo/3677-snes9x-cg-shaders/ Snes9x Cg shader pack] | |
− | + | [http://www.emucr.com/2013/04/epsxe-shaders-pack-20130427.html ePSXe/PCSX-R shaders] | |
− | + | [http://www.mediafire.com/?icqpvoc65omra75 PCSX2 shaders] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Further reading== | ==Further reading== | ||
[http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters] | [http://filthypants.blogspot.com/search/label/pixel%20shader All things shaders and filters] | ||
− | [https://github.com/ | + | [https://github.com/Themaister/Emulator-Shader-Pack/blob/master/Cg/README Cg shader spec]. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Category:FAQs]] | [[Category:FAQs]] | ||
[[Category:Shaders/Filters]] | [[Category:Shaders/Filters]] | ||
− |