You are viewing development documentation

Open Live Docs

Version 6.4.0 is out!Hotspotting, in-shader Tonemapping, vertex lights, and bug fixes!

Get it now See What's New
Logo

Changelog

Changelog

ORL Shaders Changelog


v7.0.0

Summary

Version 7.0.0 adds lots of new features, improvements, and bugfixes. This release was heavily driven by community requests in my Discord, so if you have any suggestions or feedback - please let me know!

New Shaders

  • PBR
    • Hotspotting: An auto-hotspotting shader that can be used to quickly set up reusable hotspot materials
    • AreaLit: A special variant of the main shader with included AreaLit support.
    • Decals: A simple Decalery-compatible decals shader.
    • VRSL GI: A special variant of the main shader with included VRSL GI support.

New Features

  • Extra Passes are now supported by the shader generator!
    • This allows you to add extra passes to your shaders without losing all the features of the shader generator (compared to using %PostPasses and %PrePasses)
    • Read more about it here
  • Standard-Based shaders can now adjust Stencil parameters
  • You can now occlude baked specular via Realtime Shadows. This effect is not physically accurate but can be helpful when used on dynamic objects
  • Vertex Lights now properly light up objects using Standard shaders. This requires enabling vertex lighting in Advanced Settings
  • You can now apply in-shader tonemapping on mobile platforms. This can drastically improve the look of your environments on Quest/Android. See the full docs here
  • Toon shader now fully sports baking. Recommended to be used with a directional lightmap for best results
  • Toon shader now has support for vertex-color masking of outline thickness
  • Toon shader can now use outlines without stencil. This can be useful for adding extra detail
  • LTCGI effect brightness can now be clamped to a 0-1 range and has a Maximum Brightness setting
  • You can now use BIRP Standard shader-style Detail Albedo mixing. This can be toggled via "Legacy Albedo Mixing" when using the Separated Detail Map mode.
  • "Baked Specular Occlusion" slider has been added to the Lightmapping section of all the Standard shaders. This can be used to control how much occlusion is applied to baked specular, e.g. from directional lightmaps or lightprobes.
  • Added a "Force Discard" toggle to the UI Sheen shader. This can be used to force-discard transparent pixels of the sprite to avoid white line artifacts on the edges of the sprite.
  • Shader Generator now supports %PostVertex function blocks in all Templates. This allows you to modify the final output of the Vertex shader, after the VertexBase function runs.
  • The VFX Clouds shader got a major update.
    • Now supports Directional Light-based shading, using a color ramp (similar to toon shaders).
    • Now supports normal recalculation. This provides more accurate shading that follows the extruded shape of the clouds. This effect can be a little noisy, so you can use the Precision slider to adjust it until it looks good.
  • You can now use all 8 UV channels by defining NEED_UV4/NEED_UV5/NEED_UV6/NEED_UV7 in your shader defines.
  • Configurable shaders can now accept arbitrary modules from anywhere in your project. Using the new "Custom Module" checkbox. This allows you to add modules that are not included in the shader generator.
  • Bakery Volumes are now supported in all PBR Shaders. Check out the Lightmapping section for more information.
  • The Shader Inspector can now show a Vector2 field for Vector properties. The most basic usage looks like this %Vector2(Min, Max). Check out the relevant Shader Inspector section for more information.
  • You can now draw a Bakery Volume Assigner field in the Shader Inspector by using %BakeryVolumeAssigner(). Check out the relevant Shader Inspector section for more information.
  • All of the keywords has been limited to their respective shader stages. This should improve shader complication and mesh channel resolving times.
  • You can now use a new block type %CheckedInclude() to only include a shader include file (e.g. a .cginc or .hlsl) if that file actually exists on disk. This is useful when working around conitional includes via keywords that sometimes produce errors in console. Check out the relevant Shader Generator Section for more information.
  • You can now define a hook point similar to the Template files inside your function blocks. Check out the Template docs for more information.
  • %ShaderModifiers as well as all of the %PassModifiers variants (like %MetaPassModifiers) now support overriding. This means that values you set in your .orlshader file will override the values in the FragmentBase or other files of your lighting model and other dependencies. Check out Shader Modifiers for more information.
  • Render Type selector. All PBR and VFX shaders now have a render type selector. This allows you to switch between Opaque, Cutout, Transparent, and Fade blending modes. There is also a "Custom" option which allows you to specify your own blending parameters.
    • This also introduces a new shader tag ORL_RenderType which allows you to enforce a particular value of the render type, prevent the user from changing it. See the Special Tags section for more information.
    • The dropdown itself uses a new %RenderType() drawer function to display the available options and set the relevant properties on the material. See the Render Type section for more information.
    • This change means that if your render type is one of the preset options - you can use the ORL_RenderType tag to enable it without having to set any %ShaderModifiers or %PassModifiers yourself. However, you can still use those blocks to override the blending behaviour thanks to the new sorting and overriding mechanisms mentioned above.
  • You can now bake down procedural materials using something like a Hotspotting shader into static textures and PBR materials. Check out the Map Baker section for more information.
  • You can now turn off passing normal maps to the GSAA calculation. This can help avoid a "pixelation" effect on high frequency normal maps.
  • Toon shaders now properly support Vertex Lights.
  • Toon shaders now have a new Raise Minimum Light checkbox which allows you to bump the minimum brightness of your material in environments with no lighting data.
  • Toon shaders can now sample lightprobe colors uniformly, which is desireable in some cases.
  • Glitch Screen shader now has a separate Transparency texture that can be used to control the alpha channel of the material. It now also supports different render types.
  • You can now enable LTCGI on mobile platforms.

Bugfixes

  • The tangent normals sign is now properly calculated per-vertex. This should not affect most users
  • Specular occlusion now properly occludes reflection probes again. You might need to tune the Specular Occlusion slider to adjust the effect. Please note that the slider has been renamed to "Reflection Probe Occlusion" in the UI
  • Fixed off-by-one errors in the channel selector for Albedo and Emission textures
  • Shader tags are now de-duplicated automatically, this can help with some issues with Bakery Lightmapper
  • Gradient editor now correctly handles "Fixed" blending mode. Thanks @lackofbindings for the fix!
  • All UV channels have been changed to use float4 instead of half4 to avoid precision issues on mobile platforms.
  • Fixed a number of issues with the Texture Packer when using mixed color spaces.
  • Fixed an issue where Triplanar Effects would not map the textures correctly resulting in flipped textures on the sides.

Other Changes

  • The channel packer will now default Alpha channel slot to read from the Red channel, as that is the most common use-case
  • Updated the Tessellated Displacement shader to use latest shader generator tech. It now has MONOSH and can be used with Configurable shaders.
  • "Specular Occlusion" has been renamed to "Reflection Probe Occlusion" to better reflect what is happening under the hood.
  • Some properties in the Lightmapping section were moved around to improve usability.
  • Dissolve now has configurable Cutoff Range with adjusted defaults. Thanks @lackofbindings for the suggestion!
  • The generator now includes a BiRPtoURP translation file. Based on Error.mdl's implementation. You can now use it to write code that would be cross-compatible between URP and BiRP. Check out the source file to see whats available!
  • Depth texture definition is now always included. You no longer need to specify NEED_DEPTH in your defines.
  • Configurable shaders can now be hand edited in code. This allows you to use the UI to set up the basic shader and then use code to edit it further. However, this makes it no longer editable via UI. A relevant warning will be shown in the inspector and the editing UI will be locked. You can use a "Force Reset" button to clear your changes and sync the shader back to the configuration.
  • %RemapSlider() and CombineWith() functions have improved layout that is more consistent with other properties.
  • The inspector of the PBR shaders has been simplified and sectioned in a better way. Stencils now exist in their own sections as they are not expected to be changed frequently.
  • CreateMeshData function of MeshData struct now takes in a facing parameter to flip the TBN matrix for correct normal directions on meshes with visible backfaces.
  • Since all shaders can now be Opaque/Transparent/Cutout/Fade, the Cutout shader has been renamed to Foliage and will recieve relevant features in the future
  • The Clouds shader now has a Depth Blending option that allows you to disable the blending even when the depth buffer is present.
  • The Clouds shader now respects the transparency of Bottom and Top gradient colors

v6.3.0

Summary

Update 6.3.0 focuses on smaller features and incremental improvements to existing shaders

New Features

  • Cutout shaders now support LOD Crossfade
  • All shaders that have a "VRChat Features" block now have a "VRC Fallback" dropdown
    • This allows you to select how the shader will be displayed when your shaders are blocked by the user's safety settings
    • You can see full documentation here
  • VFX Laser Shader now supports UV-Space noise for better compatibility with Line Renderers
    • Also improved the overall VFX Laser Shader inspector layout
  • %OverrideTag() drawer function has been added to the inspector
    • This allows you to set per-material Shader Tag overrides based on an enum value
    • The VRC Features module uses it to set the VRCFallback tag value

Other Changes

  • Toon shaders now have the VRChat Features module that was missing before
  • The facing parameter has been changed from using VFACE to SV_IsFrontFace for better compatibility. It is also now a bool type instead of fixed

v6.2.0

6.2.0 Release

Summary

Update 6.2.0 brings a couple of new and highly requested shaders like Puddles. It also adds a new system for creating your own custom shaders called Configurable Shaders, and a bunch of new features and improvements to existing shaders.

New Shaders

  • PBR
    • Puddles: a puddles variant of the PBR shader with support for different puddle drivers, e.g. based on Depth texture, mask texture or a vertex color. Also includes the rain droplets effect
  • VFX
    • Patterns: a collection of procedural patterns you can use to make looping effects for extra background detail
    • Glitch Screen: a shader aiming to create a glitchy screen effect, inspired by Stray
  • Toon
    • UV Discard: a shader that allows you to hide pieces of your mesh using UV Tiles
    • Transparent PrePass: a variant of the transparent shader with 2-Pass transparency. Useful for things like Hair on avatars

New Features

  • Configurable Shaders
    • This new system allows you to mix and match all of the features available in the ORL Shader Package to your liking!
    • To start, right-click anywhere in your project, then Create -> Shader -> orels1 -> Configurable Shader. This will make a new instance of a configurable shader you can set up in the inspector
    • Give your shader a name
    • Select the "Lighting Model" you want to use, the default is PBR which should work well for most use-case
    • Add any modules you want to add
    • If you want to add something "on top" of an existing shader. E.g. you want the Puddles Shader to Dissolve - then you can select "Standard Puddles" in the Base Shader dropdown and then add a Dissolve module on top
    • Click Apply!
    • You can now select the new shader on the material of your choosing

Module Compatibility

Not every module is compatible with every other module. The Inspector will try to make it clear when you're trying to do something unsupported, but I encourage you to mix and match and see what works! Sometimes things might work better in a particular order, as you're essentially "stacking" effects together. The modules on top of the list are added first

  • %SetProp() drawer function has been added to the inspector
    • This allows you to set a property of your material to some specific value based on another value
    • E.g. you can set the Stencil operation to Keep or Replace depending on whether the Outline is enabled or not (used by the main Toon shader)
  • %Preset(<path to presets folder>) drawer function which displays a dropdown of Unity material presets from a particular folder
    • This is used by the VFX Patterns shader to display a bunch of pre-made effects you can build on top of
  • %TemplateFeature(<FeatureName>) support
    • This allows you to define a block or piece of the template as optional, and then enable/disable it inside the specific shader module via %TemplateFeatures("MyFeature")
    • This is now used for the 2-Pass Transparency Toon Shader

Other Changes

  • Improved Specular Occlusion defaults and overall behavior
  • Fixed LTCGI path (requires LTCGI update)
  • New "Rim Mask" option for the Toon's AudioLink module
  • Fixed Vertex Animation shaders batching incorrectly
  • Added support for backface tint for Toon shaders
  • Added facing param support for making your own shaders (used by Toon)
  • Fixed a bug where the toon shader would break Unity UI masks
  • Neon Tube shader now has masking support for the covered part
  • Matrix variables are now properly supported by the generator
  • Repack texture button no longer looks ugly at some UI scaling levels πŸŽ‰The majority of Toon shader features now support independent tiling options, great for detail textures!
  • The VRChat Features docs link is now pointing to the correct spot
  • Added support for exporting generated shaders without CoreRP sampling macros (for external tool compatibility)
  • Added support for switching between World Space and Local Space for Laser and Shield shaders
  • Fixed an issue where the texture packer would not read the correct texture color space
  • Rim Light in Toon shaders now respects the alpha value of a color
  • Width slider for the Outline is now using a Logarithmic scale for better control at low values
  • Toon Transparent shader now supports a separate alpha texture
  • Added a VFX variant of Layered Parallax

v6.1.0

See the git diff

6.1.0 Release Trailer

Summary

Update 6.1 brings 20 new shaders, a whole new UI shader group, and redone documentation with better demos and layouts.

It is also the first release to support the VCC!

New Shaders

  • PBR
    • Dither Fade
    • Dissolve
    • Video Screen
  • VFX
    • Ghost Lines
    • Shield
    • Laser
    • Holographic Parallax
  • UI (New Pack)
    • Base Shader
    • Overlay
    • Audio Link
    • Layered Parallax
    • Scrolling Texture
    • Sheen
    • Video Screen

New Shader Variants

  • LTCGI Cutout
  • AudioLink Vertex Animation

Other Changes

  • Added gradient editor to the Ramp slot in the Toon shader
  • Improved the naming and location of repacked textures
  • Added VCC Support
  • Added Overlay, Screen and Lighten blends to the utility module

Known Issues

  • Specular occlusion is currently not as aggressive on metallic surfaces as desired. I'm currently looking into reworking the specular occlusion code to make it work properly
Previous
Sheen