Beispiel #1
0
        private void OnSomeCameraPreCull(Camera camera)
        {
#if UNITY_EDITOR
            if (WaterCamera.IsSceneViewCamera(camera))
            {
                if (WaterCamera.GetWaterCamera(camera, true) == null)
                {
                    // changing hierarchy here ensures that added water camera to scene view camera will function properly; possibly there is some other way
                    var g = new GameObject();
                    g.AddComponent <MeshFilter>();
                    g.AddComponent <MeshRenderer>();
                    Object.DestroyImmediate(g);
                }
            }
#endif
        }
Beispiel #2
0
        public void OnWaterRender(Camera camera)
        {
            var waterCamera = camera.GetComponent <WaterCamera>();

            if (waterCamera == null || waterCamera.IsEffectCamera || !enabled || !Application.isPlaying || WaterCamera.IsSceneViewCamera(camera))
            {
                return;
            }

            var overlays = GetCameraOverlaysData(camera);

            overlays.lastFrameUsed = Time.frameCount;

            overlays.ClearOverlays();

            RenderInteractions(overlays);

            for (int i = 0; i < overlayRenderers.Length; ++i)
            {
                overlayRenderers[i].RenderOverlays(overlays);
            }

            water.WaterMaterial.SetTexture("_LocalDisplacementMap", overlays.DynamicDisplacementMap);
            water.WaterMaterial.SetTexture("_LocalSlopeMap", overlays.SlopeMap);
            water.WaterMaterial.SetTexture("_TotalDisplacementMap", overlays.GetTotalDisplacementMap());
            water.WaterBackMaterial.SetTexture("_LocalDisplacementMap", overlays.DynamicDisplacementMap);
            water.WaterBackMaterial.SetTexture("_LocalSlopeMap", overlays.SlopeMap);
            water.WaterBackMaterial.SetTexture("_TotalDisplacementMap", overlays.GetTotalDisplacementMap());
        }