private void SetCurrentFrameRenderInformationToLargeWaterAreaManager(LargeWaterAreaManager largeWaterAreaManager, bool renderRefraction, bool renderReflection, Matrix4x4 projectionMatrix, Matrix4x4 worldToVisibleAreaMatrix, Camera currentRenderingCamera)
        {
            var materialModule = _materialModule as WaterMaterialModule;

            if (!materialModule.IsFakePerspectiveEnabled)
            {
                if (renderRefraction)
                {
                    largeWaterAreaManager.RefractionRenderTexture = Refraction.RenderTexture;
                }

                if (renderReflection)
                {
                    largeWaterAreaManager.ReflectionRenderTexture = Reflection.RenderTexture;
                }
            }
            else
            {
                if (renderRefraction)
                {
                    largeWaterAreaManager.RefractionRenderTexture = Refraction.RenderTexture;
                    largeWaterAreaManager.RefractionPartiallySubmergedObjectsRenderTexture = RefractionPartiallySubmergedObjects.RenderTexture;
                }

                if (renderReflection)
                {
                    largeWaterAreaManager.ReflectionRenderTexture = Reflection.RenderTexture;
                    largeWaterAreaManager.ReflectionPartiallySubmergedObjectsRenderTexture = ReflectionPartiallySubmergedObjects.RenderTexture;
                }
            }

            largeWaterAreaManager.WorlToVisibleAreaMatrix = worldToVisibleAreaMatrix;
            largeWaterAreaManager.ProjectionMatrix        = projectionMatrix;
            largeWaterAreaManager.MarkCurrentFrameAsRendered(currentRenderingCamera);
        }
        private void GetCurrentFrameRenderInformationFromLargeWaterAreaManager(LargeWaterAreaManager largeWaterAreaManager, bool renderRefraction, bool renderReflection)
        {
            var materialModule = _materialModule as WaterMaterialModule;

            if (!materialModule.IsFakePerspectiveEnabled)
            {
                if (renderRefraction)
                {
                    materialModule.SetRefractionRenderTexture(largeWaterAreaManager.RefractionRenderTexture);
                }

                if (renderReflection)
                {
                    materialModule.SetReflectionRenderTexture(largeWaterAreaManager.ReflectionRenderTexture);
                }
            }
            else
            {
                if (renderRefraction)
                {
                    materialModule.SetRefractionRenderTexture(largeWaterAreaManager.RefractionRenderTexture);
                    materialModule.SetRefractionPartiallySubmergedObjectsRenderTexture(largeWaterAreaManager.RefractionPartiallySubmergedObjectsRenderTexture);
                }
                if (renderReflection)
                {
                    materialModule.SetReflectionRenderTexture(largeWaterAreaManager.ReflectionRenderTexture);
                    materialModule.SetReflectionPartiallySubmergedObjectsRenderTexture(largeWaterAreaManager.ReflectionPartiallySubmergedObjectsRenderTexture);
                }
            }

            materialModule.SetWaterMatrix(largeWaterAreaManager.ProjectionMatrix * largeWaterAreaManager.WorlToVisibleAreaMatrix * _mainModule.LocalToWorldMatrix);
            materialModule.SetReflectionLowerLimit(_mainModule.Height * 0.5f);
            materialModule.ValidateMaterialPropertyBlock();
        }