diff --git a/Nez.Samples/Content/WaterPane/waterNormalMap.png b/Nez.Samples/Content/WaterPane/waterNormalMap.png
new file mode 100644
index 0000000..da4ce84
Binary files /dev/null and b/Nez.Samples/Content/WaterPane/waterNormalMap.png differ
diff --git a/Nez.Samples/Scenes/WaterPlane/WaterPlaneScene.cs b/Nez.Samples/Scenes/WaterPlane/WaterPlaneScene.cs
new file mode 100644
index 0000000..4ece511
--- /dev/null
+++ b/Nez.Samples/Scenes/WaterPlane/WaterPlaneScene.cs
@@ -0,0 +1,49 @@
+using Nez.Sprites;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework;
+
+namespace Nez.Samples
+{
+ ///
+ /// Set up and demonstrate water reflection effect
+ ///
+ [SampleScene("Water Reflection Effect", 70, "Water Reflection Effect")]
+ public class WaterPlaneScene : SampleScene
+ {
+ const int _waterPaneRenderLayer = -50;
+
+ public WaterPlaneScene() : base(false, true)
+ {
+ AddRenderer(new RenderLayerExcludeRenderer(0, new[] { _waterPaneRenderLayer, ScreenSpaceRenderLayer }));
+
+ var waterrenderer = new RenderLayerRenderer(-1, _waterPaneRenderLayer);
+ waterrenderer.WantsToRenderAfterPostProcessors = true;
+ AddRenderer(waterrenderer);
+ }
+
+ public override void Initialize()
+ {
+ AddRenderer(new RenderLayerExcludeRenderer(0, new[] { _waterPaneRenderLayer, ScreenSpaceRenderLayer }));
+
+ var waterrenderer = new RenderLayerRenderer(-1, _waterPaneRenderLayer);
+ waterrenderer.WantsToRenderAfterPostProcessors = true;
+ AddRenderer(waterrenderer);
+ }
+
+ public override void OnStart()
+ {
+ var moonTex = Content.Load(Nez.Content.Shared.Moon);
+ var playerEntity = CreateEntity("player", new Vector2(Screen.Width / 2, Screen.Height * .7f));
+ playerEntity.AddComponent(new SpriteRenderer(moonTex));
+
+ var reflectiveEntity = Core.Scene.CreateEntity("Reflection");
+ var reflectionPlane = new WaterReflectionPlane(Screen.Width, Screen.Height / 5) { RenderLayer = 3 };
+ var material = reflectionPlane.GetMaterial();
+ material.Effect.NormalMap = Core.Scene.Content.LoadTexture("Content/WaterPane/waterNormalMap.png");
+ material.Effect.PerspectiveCorrectionIntensity = .01f;
+ material.Effect.NormalMagnitude = 0.01f;
+ reflectiveEntity.AddComponent(reflectionPlane);
+ reflectiveEntity.Position = new Vector2(0, Screen.Height - Screen.Height / 5);
+ }
+ }
+}
\ No newline at end of file