Skip to content

poiyomi/PoiyomiToonShader

Repository files navigation


Poiyomi Shaders are feature-rich shaders for Unity's Built-In Rendering Pipeline, intended for use with VRChat. They support multiple shading modes and robust light handling, and are designed to be easy-to-use and performant. They're also free and open-source!


After downloading, just import the package into your Unity project!

Important: When updating from a previous version, make sure to delete the old _PoiyomiShaders folder from your project's Assets folder before importing the new package! Otherwise, there may be interference.

If distributing an avatar or other asset that uses Poiyomi shaders, do not include the _PoiyomiShaders folder in your asset's package. Instead, direct users to download the correct version from the releases page, or include the package alongside the asset, not as part of its Unity package.


Features

  • Multiple Shading models (Realistic, Toon, Flat, and more) with deep customization and robust handling of adverse lighting conditions
  • Multiple rendering modes (Opaque, Cutout, Transparent, and more)
  • Physically-based Reflections and Specular (metallic/smoothness workflow)
  • Stylized rendering functionality (matcaps, outlines, rim lighting)
  • Special effects (glitter/sparkle, emission, iridescence, etc)
  • Powerful global masking system
  • Extensive control over rendering options (Culling, ZWrite, ZTest, Stencils, etc)
  • Much, much more!

Versions

Poiyomi Shaders include multiple released versions for backwards compatibility. The latest version is always the most up-to-date, and is recommended for use in new projects. Older versions are provided for compatibility with older models - we include the last release for each minor version (e.g. 8.0.426 for v8.0, 7.3.050 for v7.3).

Currently, Poiyomi v7 is included for backwards compatibility with older models, and is no longer being updated. It's not recommended to use v7 for new projects.

When matching a version to a model, generally, the major and minor versions must match, but the patch version can be newer. For example, if a model specifies 8.0.295, one can use 8.0.426 (included in the latest release) without issue. For v7, generally, 7.3.050 is the last version, and should be used for all v7 models.

Pro Shader

Poiyomi Pro offers additional features and functionality, and always has the latest developments. It contains everything in the free version, plus features like:

  • Grabpass shading effects, like Refraction and Blur
  • Fur shader, supporting all of the main shader's feature plus fluffy fur
  • Tessellation and Geometry Shader effects, like a geometric dissolve
  • Modular shader system support, for installing third-party shader modules
  • TPS (8.1+)
  • DPS Support (7.3, 8.2+)

To get access to Poiyomi Pro, support Poiyomi on Patreon at the $10 tier or higher, link your Discord to your Patreon, and join the Poiyomi Discord to get the Pro version of the shader.


💻 For Developers

ThryEditor

Poiyomi relies on ThryEditor to display its inspector properly and lock the shader to ensure optimal performance. ThryEditor is included in the repository, and should not be updated separately.

Compatibility

Poiyomi Shaders are designed for use with the Built-In Render Pipeline (BIRP) on DirectX 11. We target VRChat's currently supported Unity version, 2019.4.31f1 at time of writing. Higher Unity versions have been tested and are known to work, but we primarily target the latest Unity version that VRChat supports.

Poiyomi shaders are currently not compatible with Unity's Scriptable Rendering Pipelines (URP, HDRP, SRP). Non-DirectX 11 platforms (e.g. OpenGL, Metal, Vulkan, etc.) are also not supported, and may not work at all.

The shaders can be used for games outside of VRChat, but may not be ideal due to materials being unable to share a common shader. For non-VRChat usage, make sure to use the Locking functionality provided by ThryEditor to create optimized shaders for each material.

Contributing

Active development happens on the Pro shader in a private repository, with free releases happening periodically. If you'd like to contribute code to the shader, join the Discord and inquire. For the Editor code side, you can contribute to ThryEditor, as it's MIT-licensed and accepts pull requests.

We're always looking for help with documentation. If you'd like to contribute, you can do so by in the docs repository - we accept pull requests! Docs are written in Markdown, and are built using Docusaurus.

To report a bug or request a feature, you can do so either by opening an issue or by joining the Discord and asking. Please make sure to include as much information as possible, including screenshots and/or videos if applicable. Ensure you're using the latest version of the shader, and that the issue is not already reported.