public WaterRenderingModule(Game2DWater waterObject, WaterRenderingModuleParameters parameters)
            : base(parameters.RenderPixelLights, parameters.FarClipPlane, parameters.AllowMSAA, parameters.AllowHDR, parameters.SortingLayerID, parameters.SortingOrder)
        {
            _waterObject = waterObject;

            ReflectionZOffset = parameters.ReflectionZOffset;

            Refraction = new WaterRenderingMode(parameters.RefractionParameters, isReflectionMode: false);
            RefractionPartiallySubmergedObjects = new WaterRenderingMode(parameters.RefractionPartiallySubmergedObjectsParameters, isReflectionMode: false);
            Reflection = new WaterRenderingMode(parameters.ReflectionParameters, isReflectionMode: true);
            ReflectionPartiallySubmergedObjects = new WaterRenderingMode(parameters.ReflectionPartiallySubmergedObjectsParameters, isReflectionMode: true);
        }
        public WaterRenderingModule(WaterRenderingModuleParameters parameters, Transform renderingCamerasRoot)
        {
            _renderPixelLights = parameters.RenderPixelLights;
            _farClipPlane      = parameters.FarClipPlane;
            _allowHDR          = parameters.AllowHDR;
            _allowMSAA         = parameters.AllowMSAA;
            _sortingLayerID    = parameters.SortingLayerID;
            _sortingOrder      = parameters.SortingOrder;

            _refraction = new WaterRenderingMode(this, parameters.RefractionParameters, renderingCamerasRoot, isReflectionMode: false);
            _refractionPartiallySubmergedObjects = new WaterRenderingMode(this, parameters.RefractionPartiallySubmergedObjectsParameters, renderingCamerasRoot, isReflectionMode: false);
            _reflection = new WaterRenderingMode(this, parameters.ReflectionParameters, renderingCamerasRoot, isReflectionMode: true);
            _reflectionPartiallySubmergedObjects = new WaterRenderingMode(this, parameters.ReflectionPartiallySubmergedObjectsParameters, renderingCamerasRoot, isReflectionMode: true);
        }
        internal void Validate(WaterRenderingModuleParameters parameters)
        {
            _refraction.Validate(parameters.RefractionParameters);
            _refractionPartiallySubmergedObjects.Validate(parameters.RefractionPartiallySubmergedObjectsParameters);
            _reflection.Validate(parameters.ReflectionParameters);
            _reflectionPartiallySubmergedObjects.Validate(parameters.ReflectionPartiallySubmergedObjectsParameters);

            RenderPixelLights = parameters.RenderPixelLights;
            FarClipPlane      = parameters.FarClipPlane;
            AllowMSAA         = parameters.AllowMSAA;
            AllowHDR          = parameters.AllowHDR;
            SortingLayerID    = parameters.SortingLayerID;
            SortingOrder      = parameters.SortingOrder;
        }