A downloadable Retro Surface Shader

Download NowName your own price

Symmasolan's Super Retro Shader

A highly modular, 3D retro-focused surface shader for Unity's Built-in Render Pipeline (BiRP)

Features:

  • Built-In Render Pipeline support (Unity 2019.4+).
    • All features tested with both Forward and Deferred rendering paths!
  • Extremely modular selectable base shading options (some with options of their own to modify further!):
    • Lambert
    • Half-Lambert
    • Gouraud (Per-Vertex Shading)
    • Per-Texel
    • Flat Lambert
    • Flat Half-Lambert
    • Dithered Lambert (4x4, 8x8)
    • Dithered Half-Lambert (4x4, 8x8)
    • Unlit (with shadows!)
  • A user-selectable choice of Specular:
    • Phong
    • Blinn-Phong
    • Or no Specular at all!
  • Option for per-vertex Specular shading.
  • Indirect/Baked and Ambient SH lighting support, both on a toggle.
  • N64 Bilinear Texture Filtering for Main and Emissive textures.
  • Affine UVs with:
    • Adjustable perspective shift strength.
    • Adjustable camera bias to prevent visual issues up close (which can also be disabled!)
  • Vertex Position Rounding/ Vertex Snapping with customizable accuracy.
  • Custom user-defined Shadow color per-material.
  • Basic Specular workflow texture options:
    • Normal Map
    • Specular Map
    • Occlusion Map
    • Emissive Map
  • Vertex Directional/Point Light (unimportant) support.
  • Advanced Rendering and Stencil options.
  • All options are properly named to gracefully use the Fallback "Standard (Specular)" shader.
    • Note: The Standard shader uses Oren-Nayer diffuse and Cook-Torrence specular.
  • Select from a simple drop-down what type of Rendering Preset to use! (Also supports full shader fallback)
    • Opaque
    • Transparent (& Cutout, & Clipping)
    • Fade
    • Additive (& Soft)
    • Multiplicative (& 2x)
  • Integrated with a robust editor interface (ThryEditor).
  • Support for selecting a VRChat-specific fallback shader (via ThryEditor!)
    • Fully supports graceful fallback to chosen VRChat fallback shader.

---------------------------------------------------------------------------------------------------

Limitations:

  • IMPORTANT: Since the shader uses ThryEditor as the CustomEditor, a resulting Material using this shader can only be cleanly edited using ThryEditor. Unfortunately this means the shader is limited to use in versions of Unity that are supported by ThryEditor. If you're getting an error from ThryEditor after updating to the latest released version, you might not be able to use this surface shader without some work changing it around in ASE.
    • Eventually I want to change this to use a different Material Inspector due to this issue, but obviously I haven't addressed that since release. I wouldn't expect that change to suddenly get released any time soon, sorry :(
    • Use of a different ShaderGUI/CustomEditor that is not ThryEditor would require significant extra footwork, but can technically be done even without Amplify Shader Editor if you know what you're looking at.
  • Due to issues with Light/Shadow Attenuation in Unity's BiRP, Half-Lambert shading styles may possibly show jagged artifacts around the edge of surface shadows.
    • This is not an issue with the shader itself, and there is no way to fix this in the BiRP without custom GI/Shadow Attenuation as far as I know.
  • Per-Texel shading has a hard requirement to use a Main Texture of some sort in order to function as intended, whether it's an actual texture or a 32x32 blank white square.
    • Note: Per-texel shadows aren't a option since shadow casting does not use texture sizes related to the object.
  • Because of how Dithering works as an effect, it can be difficult to record. This is not the fault of the shader itself, but instead because Dithering is a visual illusion. This is even visible on some screens when viewing the above screenshots.
  • Only supports up to 4 Vertex/Unimportant lights per surface maximum for Forward rendering due to base Unity shader functionality/limitations.
  • Spot Light Vertex/Unimportant lights are currently unsupported.
    • They may be supported in the future if any interest is shown in this, but would cost more to render per material when using Vertex/Unimportant lighting in a scene.
  • Pixel and Vertex lights do not visibly mix well when overlapping, generally producing a visible artifact.
  • A couple other limitations are specifically mentioned within the shader editor itself while modifying values, which will display as helpboxes to assist with avoiding them as needed.

---------------------------------------------------------------------------------------------------

Installation:

  • First, if there are any other shaders with ThryEditor included (ex. Poiyomi Toon), delete any existing versions of ThryEditor if it is not under the `Assets/ThryEditor/*` folder. This prevents issues and errors down the line.
    • This will not break existing shaders as long as you re-import ThryEditor, which is included with this package.
      • Hey there! The included package version is super outdated. You can get the latest version of ThryEditor [here]!
    • You can also leave existing versions of ThryEditor installed and instead choose to not import the `ThryEditor` folder with the next step.
  • Double-click the downloaded `.unitypackage`.
    • This will unpack the package into your last opened or currently opened project.
    • If that does not work, you can instead drag and drop it into an already open project.
  • In your project explorer, right-click -> Create -> Material.
  • Selecting the newly made Material, there is a drop-down at the top of the Inspector that currently says "Standard". Select the dropdown, and find the included "Symm/Super Retro Shader/Super Retro Surface" shader.

---------------------------------------------------------------------------------------------------

Licensing and Terms of Service:

  • I do not take any responsibility for any possible damage that this shader can cause/causes.
  • All sales (free, with donation, or otherwise) are final, and cannot be refunded as this is a digital product.
  • Do not claim this shader as your own work. It'd be cool if you credited me where possible (I've put a lot of time and love into this!), but is not required.
    • Additional information sources are available within the shader's source code and/or from the ASE graph.
  • DO NOT remove source comments from the shader, whether it be from the ASE graph itself, ASE metadata, or in the final shader's text file.
  • You are allowed to edit and customize the shader for your own personal use. (Effectively requires Amplify Shader Editor [v1.9.1.5+] to make significant changes easily)
  • For projects that use this shader that are redistributable (ex. VRChat/ChilloutVR avatars or worlds), please point the end user back to this page to download the shader so they're always getting the latest version! (I'd really appreciate it, it makes user support easier)

All this said, the included code is MIT licensed and the package is free. Tag me on twitter (@Symmasolan) or find me on Discord (Symm#8218) to show me your awesome creations using it!

---------------------------------------------------------------------------------------------------

Not distributed with the project are the textures shown in the screenshots above. Here's a short list of what they are and where to get them!

And included with the Simple Demo Scenes are the following:

Other attributions that helped make this shader possible are included as source comments in the shader's code! I'd like to take one of those comments and make it a shout-out here, as Per-Texel shading would not have been possible without the work of GreatestBear and their willingness to share the results of their hard work.

---------------------------------------------------------------------------------------------------

Footnote:

Hi there! Thank you for showing an interest in my work and reading this far down into the page! If you decide to use this package, whether it be for a Game Jam, your own next personal project, a client's project, your team's project, or otherwise, please come back and leave a comment sharing your project, or donate to show your appreciation for my work!

I love seeing what people use my shaders to create, and donations help fund future development and support!

I'm also looking for a job right now! *wink wink*

The easiest way to directly contact me is via Discord (Symm#8218). Please don't ask to ask though, and send me your question, concern, report, interview request, whatever you want to ask/tell me about, with the first message(s)!

---------------------------------------------------------------------------------------------------

Known Issues:

  • None currently!

---------------------------------------------------------------------------------------------------

Recent Changelog:

  • v1.00.00
    • Initial release
StatusIn development
CategoryAssets
Rating
Rated 5.0 out of 5 stars
(1 total ratings)
AuthorSymm
Made withUnity
Tags3D, flat-shading, Lo-fi, Low-poly, PSX (PlayStation), Retro, Shaders, Unity, VRChat
Code licenseMIT License
Average sessionA few hours
LanguagesEnglish

Download

Download NowName your own price

Click download now to get access to the following files:

SymmSuperRetroShader_v1-00-00.unitypackage 745 kB
SRS_SimpleDemoScenes.unitypackage 1.1 MB

Comments

Log in with itch.io to leave a comment.

(1 edit)

Are there any examples of this working successfully in VRchat? I'd like to see how well it works, if possible. And, does it work on avatars and worlds alike?

No public examples in VRC that I know of. I know of at least two people who have used it on an avatar, but haven’t heard of anyone using it for a world. It should work for worlds just as well though!

I used a copy of my avatar at the time as a slightly more complex test object surface than the default sphere. I often jumped into it while world hopping in VRC while I was working on the project to test it in different lighting situations.

Give me a few days, I’ll take a few pictures of that old avatar in a few different lighting situations to show how it looks/works in VRC, and post it in another reply here. The avatar hasn’t been touched since this project was released though, so it may not be a perfect representation.

I’ll also mention, my ThryEditor integration seems somehow busted with newer versions. I need to take the time in the near future to release an update to change the material editor from ThryEditor to LWGUI (link to the LWGUI github for the interested), as well as attempt to fix a couple other fundamental issues with the shader myself and others have found in that time.

ThryEditor really isn’t designed to be easily used with Amplify Shader Editor, my shader authoring tool of choice in Unity. It’s a hassle to maintain in node format. Instead, I’m planning on shifting it over to LWGUI. It’s also not technically designed for use with ASE, but it’s significantly easier to implement in ASE than ThryEditor is, and supports a much wider range of Unity versions than ThryEditor needs to. This would allow people who aren’t intending to use the shader for VRChat the freedom to use any version of Unity they want (as long as it’s still the Built-In Rendering Pipeline), not just versions that VRChat are using, for a weird little retro shader.

No time frame on when that update will happen. Probably Soon™

Highly appreciated! I've turned studying game engines and code into a hobby over the past several months and I'd love to learn how to, eventually, code in something like VR chat. On the one hand that's a long way away, but on the other hand I've almost taught myself calculus, so I like to think I can make it happen one day.

Hi there! I have a quick question – is there a way to generate texel shadows using your shader? I'm facing difficulties getting it to work in the demo scene. Looking forward to hearing from you soon. Thank you!