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 }
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()); }