Diffuse softness is adjustable, along with brightness and contrast. There is also an option to enable per-pixel diffuse, which will get you better point-light quality on low-poly meshes but this is more computationally expensive. On scenes with lightmapping baked in, the diffuse light is disabled for static lightmapped objects since this is baked in. The toggle for Baked And Dynamic Lights enables the object to receive both baked and dynamic lights (from point lights only) on URP. Note: Spot lights are supported only on URP. For Built-In Pipeline, you can use a Projector to achieve nearly the same effect as spot light.


Used for metallic or shiny objects. Supported for 1 directional light, with an optional specular map. The color defaults to using the same as the directional light's, but there is an override color as well. Brightness and smoothness adjustable as well. On the specular map, the red channel masks the specular intensity, and the alpha channel the specular smoothness. There is also an option for Specular Hair, which has brushed highlights for effects like hair or brushed metal. When using Specular Hair, the normal map has no effect. Rather, the Specular Map is used to slightly shift the normals to give variance. On scenes with baked directional lighting, the lighting direction is sampled from the directional lightmap instead.

Rim Light

Highly versatile effect for simulating indirect lighting or subsurface scattering like skin. Tunable color, brightness, and contrast parameters. Also supports multiple blend modes, invert, and rim direction as well. Can even be used to fade the transparency of outer edges to create fuzz effects.


If enabled, by default it uses the scene's skybox material from Lighting Settings. You can override the cubemap texture in the material. If Mask With Rim is enabled, it works in pair with the rim's fresnel effect to strengthen the reflection at the edges. Reflection amount and color are adjustable. Can also mask it with the Specular Map.

Normal Map

Supported for all light sources including diffuse, specular, lightmap, rim, MatCap, and even in the triplanar mapping as well. Strength is adjustable. Be sure to set the Texture Type for the texture as Normal Map.

Occlusion Map

Occlusion maps store local shadowing, or ambient occlusion in lookup textures. Supports color, brightness, and UV1 and UV2.


Used for objects that emit light. Supports HDR color with an optional Emissive Map. The HDR color slide allows adjusting the intensity above 1 in HDR workflows.


Integration of MatCaps with Unity's lighting system is one of the key features of OmniShade. MatCaps are enormously powerful, able to capture the entire lighting of a scene in a single texture. They are popular in 3D sculpting but also highly effective in scenes where the camera does not need to move much, as the only short-coming is the lighting is only captured from a single angle. Supports blending with Multiply or Multiply Lighten modes, with brightness and contrast parameters. There is also a Perspective Correction option which can be disabled for improved performance if you don't need it. Finally, the Static Rotation option allows locking the MatCap to a manually set angle, useful if you absolutely do not want the lighting to move with the camera. Also, check out ZBrush MatCaps to download more or create your own.

Vertex colors

Used for vertex painting colors with tools such as Polybrush. Supports all RGBA channels. Toggleable on or off, with a contrast setting. The channels can be used as a mask on the three texture layers and the Detail Map for texture painting effects as well. Be aware that the color resolution depends on the vertex count in your mesh geometry.

Detail map

Detail maps, or secondary maps, blend in grainular details to the base texture. The alpha-channel of the texture is used as a blend factor. Supports multiple blend modes, and UV1 or UV2. Also supports adjustment of color, brightness, and contrast. Toggling the option to apply the detail map to the lighting will apply the detail as a mask to the Diffuse and MatCap lighting instead, which is useful for adding detail in the lighting for effects like sparkles. There is also an option to mask the detail map with the vertex color alpha channel, useful in vertex painting.


Similar to Photoshop layers, these are useful for decals or terrain splatting with tools like Polybrush. The layers are rendered in order from 1 to 3, so that layer 3 is on top. Supports multiple blend modes, and layer masking with the layer texture alpha-channel. Also supports masking with vertex color RGB channels for texture painting. Brightness and transparency adjustable.

Transparency mask

This modulates the final alpha of the object, useful for effects like smoke or waterfall effects. Input texture can be either alpha or grayscale based. Alpha and contrast adjustable.

Height Based Colors

Highly versatile effect, this is useful for height-based colors such as simulating the water line, or even indirect lighting from above and below. Height can be set in either local or world space. Color, thickness, edge thickness, and blend mode can be adjusted. You can also apply a Height Texture as the background with this effect.

Shadow Overlay

This effect projects a texture over objects using world-space positions, useful for creating global effects like rolling cloud shadows or tree leaf overhangs. It is fully animatable through the shader, either as a scrolling or ping-pong movement. Speed and sway amount are adjustable.

Plant Sway

Useful on vegetation to simulate movement by wind. Uses a vertex-shader based animation dependent on object height. Animation is fully done in the shader, and plant type can be set for plant, leaves, or based on vertex colors. The sway amount and speed are adjustable. The phase variation affects the synchronicity of the objects affected.


Support for adding a colored outline around the object.


Easily convert to anime-styling with a toggle. There are 3 adjustable luminance ramps with 2 threshold settings, and a softness parameter. Tune the softness to avoid overly harsh shading edges on polygons if you notice them. Outlines can be created too through only the shader, by rendering the mesh twice with Vertex Extrude and Culling set to Front (see the included Unity-chan sample).

Camera Fade

Fades the transparency of the object as it approaches the camera. Use Fade Start Distance and Fade End Distance to adjust when the fading occurs.

UV Tile Discard

Toggle portions of a model on or off at runtime based on UV coordinate values. UV Tile Discard details.

Environmental Lighting

Support for Unity's Environmental Lighting settings (accessible via the Lighting Window), including Skybox, Gradient, or Solid Color. Also support for dynamic global illumination from Light Probes.


Supports all of Unity's fog modes. Toggleable on or off. Fog settings can be configured from the Lighting Window.


Supported for 1 directional real-time light on Built-In, and all lights on URP. Shadow Color is adjustable. Be sure to tune the Shadow Distance parameter in your Lighting Settings for the best quality. There is a Receive Shadows toggle in the shader to disable shadow calculations as well. On scenes with baked lightmapping, the shadow is disabled for static-baked objects. If you need realtime shadows on a light-baked scene, you can either used Mixed Lighting on your light with Subtractive Mode in the Lighting Settings, or simply add another real-time directional light to the scene and set the light's Culling Mode to not affect baked objects.

Culling and Blending Settings

All the culling and blend mode settings are exposed and configurable in the shader, with predefined presets for convenience as well, eliminating the need to create separate shaders for slightly different render states (ie., Transparent, Cull None, Additive, etc).

Flat Shading

Great for stylized low-poly blocky looks. Fully compatible with all lighting including diffuse, specular, rim, MatCap, and normal mapping.

Unity Baked Global Illumination Support

Fully supports Unity's baked global illumination. The proper albedo colors are output for proper indirect lighting effects. The scene must have a baked light source, objects to bake must be marked Lightmap Static, and you can bake the scene from the Lighting Settings window.

(Pro feature) Triplanar projection texture mapping

Triplanar mapping is a peculiar but extremely powerful effect, useful for terrain, procedural geometry, and modular environments. It requires no UVs at all, and works by projecting a texture from all 3 axises onto the geometry. Supports a separate texture from the top side as well, useful for simulating grass or snow coverings. Blend sharpness can be adjusted. If Use UV For Sides is toggled, then UV coordinates instead of the triplanar projection on the sides of the object. Full normal map support as well.


Progressively adaptive performance

The real magic of OmniShade is here, in it's adaptable performance. Through the use of shader variants, it only creates shaders with the minimal calculation needed for any set of enabled features, which it is able to detect automatically. So, you can use OmniShade to create a simple game with only diffuse lighting, or a realistic one, or any combination in-between, and the performance will always be optimal. This allows precise and granular control over the quality and performance to achieve maximum value.

(Pro feature) Optimized Shader Stripping

These are per-material shader stripping flags to improve Unity's shader stripping process to further reduce the size and memory of the shader. Read more in the Optimization Tips.

(Pro feature) Custom Fallback Shader

On older OpenGL ES 2 devices, the shader falls back to a custom reduced set of features designed to preserve the original look. More details in Optimization Tips.


Animating Textures

Included is a OmniShadeAnimateTexture component which can be used for easily animating the movement of any texture in the shader. Animation type can be either slide or ping-pong.
Extendable Shader UI
OmniShade has a slick collapsable UI. But, we in the field also know complexity is death. In real use, modifications and extensions are inevitable. That's why we follow a KISS principle with the shader UI. All the UI is auto-generated from the shader information, no need to fiddle with C#. And if you wish to extend your own feature in a collapsable group, simply use our custom HeaderGroup attribute. That's it.