Home

Awesome

<img src='/PREVIEW/01.gif'/>

Reveal Shader

This is a set of shaders for Unity3D. It maps worldspace position of a gameObject and draws to a RenderTexture in relation to world bounds and remaps it back onto the world as a mask, allowing for various shader effects.

Features:

The RenderTexture mask generation and re-projection happens separately from the surface shaders, so any combination of them is possible and adding new shaders is trivial without affecting the setup.

<img src='/PREVIEW/02.gif'/>

Download

Download the UnityPackage from Releases to get a clean import.

License

All code licensed under MIT License. Refer to License.md for full terms. Pull requests welcome.

Usage

Effects rely on object materials having a shader property "_Splat" to assign the RenderTexture and offset parameters. Objects without a compatible shader will be skipped. Use Runningtap/Reveal/B&W2RGB or .../A2RGB shaders on paintable objects.

Add Painter.cs to the scene.

Pick Lookup Mode.

Pick SplatMap Resolution

Use Relative enables non-power of two resolution for the RenderTexture, based on world bounds to avoid overly stretched mask pixels. This will be calculated automatically, keeping the longest edge to selected resolution.

Fade Over Time allows for non-permanent mask drawing - stroke fades from oldest pixel. Fade Speed will be available if selected.

Add a parent gameObject containing all the paintable objects to World

Make sure RevealRTX is plugged into the Render Texture Shader.

Brush is a gameObject that will 'draw' the mask onto RenderTexture. Only XZ coordinates are considered.

Brush Size will change the size of the area drawn onto the RenderTexture.

Brush Strength determines stroke opacity.

Splat Map Preview will display current RenderTexture resolution and texture in play mode.