SurfaceReflection

Description
This is a shader/script to add realtime reflections to flat surfaces. It uses a RenderCamera to do this, thus requiring Unity Pro.

Features:
 * Creates realtime reflections based on actual scene objects instead of cubemaps. (meaning it works on its own and is dynamic)
 * Supports the adding of a base texture to be drawn underneath, meaning you can use this script to add reflections to surfaces with existing textures.
 * Has opacity settings for both the base texture and the reflections, letting you customize the overall surface opacity as well as the visibility ratio between base texture and reflections.
 * Has a tint color option for changing the brightness of the surface or adding color.

This shader/script is based on the MirrorReflection2 shader/script written by Aras Pranckevicius.

With its additional features/options, this shader/script can be used to add reflections without removing the surface's transparency or existing texture, letting you create reflective windows and textured mirrors.

Usage
Prerequisites: This technique requires Unity Pro, version 2 or newer.


 * Create a material that uses the shader below (FX/Surface Reflection).
 * Apply the material to a plane-like (i.e. flat) object.
 * Attach the SurfaceReflection.cs script to the object.
 * Set the object's layer to 'Water'. (optional but recommended)

Notes:
 * The reflection happens along the object's 'up' direction by default (green axis in the scene view). (e.g. the built-in plane object is suitable for use as a mirror) If you experience weird reflections, try enabling the script's "Normals From Mesh" option. If the problem persists, try correcting the surface's orientation/axis-direction manually.
 * If you use this on multiple surfaces, you have to create a separate material for each one, otherwise their reflections will be disrupted when both in view.