FAQ
What is the difference between OmniShade and OmniShade PBR?
The main difference is that OmniShade PBR uses physically accurate lighting and was built using Shader Graph, while OmniShade offers more stylized lighting and was hand-coded from the ground up. They share some features, but differ greatly in the lighting quality, performance, and implementation.
The PBR version, as an extension of the Standard Shader, is fully integrated with all of Unity's lighting features and pipelines. With a physically based model, the material can be tuned once and look realistic in any lighting condition. And since it was built using Shader Graph, even non-coders will be able to understand and make modifications.
The non-PBR version on the other hand, is far faster in raw performance as it was written from the ground up to ensure performance on mobile platforms. As such, it is more limited in its integration with Unity lighting features, and the non-PBR results can end up looking cartoony rather than realistic. It is also able to offer more features, customization and performance through its code-based implementation.
In short, if you are developing for mobile or not creating a PBR-looking game, then the non-PBR version will likely suit you more. If you've already been using the Standard Lit shader, then the PBR version will be a straight-forward upgrade. Of course, you can also always use both in a URP project as well.
Is this compatible with X platform?
Yes. Because OmniShade PBR was built using Unity Shader Graph, it is fully integrated with all Unity lighting systems, and compatible with any platform Shader Graph is. If it works with the Standard Lit shader, it will work with this shader and with similar performance. Plus, it will only get better and faster over time with Shader Graph package updates.
Can I do vertex color and texture painting with a tool like Polybrush?
Yes, you can! We offer one of the most Unity-integrated shaders that support Polybrush color and texture painting. Learn how to paint textures using the layers (the video tutorial is with non-PBR OmniShade, but the technique is the same). Note, the latest version (1.1.6) of Polybrush may have bugs painting meshes (particularly on URP), so I recommend downgrading to 1.0.2 if you experience any issues.
How do I get two-sided rendering, or additive blending?
This will require you to duplicate the graph at this time, but is otherwise quite simple. Duplicate the graph, and open the new one. In the Graph Settings menu, there are settings to adjust two-sided rendering and blend modes.
What is physically based rendering?
PBR is the concept of applying physically accurate lighting, based on principles like energy conservation or reflections based on microfacets. Although a non-PBR shader can be made to look as good as a PBR shader, it would require considerable tuning -- and re-tuning were the lighting conditions to change. The Unity Standard shader is a PBR shader, and what OmniShade PBR is based on. The atmosphere of realism seen in recent AAA games can largely be attributed to PBR rendering.
Does this work with Built-In pipeline?
Yes Built-In is supported from Unity 2021.3.12. The latest package should be configured to work already, so try updating to latest. If it doesn't, you may need to add Built-In as an Active Target. You can do this by opening up the shader in Shader Graph, and under Graph Settings, press the ➕ to add Built-In. For the settings, copy the same from URP (set Custom Editor GUI to OmniShadePBRGUI, Alpha Clip On), and save the graph. Do the same for the Transparent version.
Why is it so slow to compile the shader?
Updating to the latest Unity version may help with Shader Graph build times. Moreover, if you remove the Active Targets to only the ones you need (ie., remove HDRP if you only use URP), that will also significantly reduce compilation time.
Why does it say SRP Batching is incompatible?
The shader is fully compatible with SRP Batching. In Unity versions prior to 2022.2 however, you may need to remove rendering pipelines that you are not using from the Active Targets in Shader Graph (ie., remove HDRP if you only use URP) for the shader to be compatible with SRP Batching. This is a recommended step for improved shader build times as well.
Can I use this shader in my commercial game?
Absolutely! No attribution is required, although appreciated.
Last updated