예제 #1
0
 public void ResetToDefaults()
 {
     name = "";
     maxSpectrumResolution      = 256;
     allowHighPrecisionTextures = true;
     tileSizeScale               = 1.0f;
     wavesMode                   = WaterWavesMode.AllowAll;
     allowSpray                  = true;
     foamQuality                 = 1.0f;
     allowVolumetricLighting     = true;
     maxTesselationFactor        = 1.0f;
     maxVertexCount              = 500000;
     maxTesselatedVertexCount    = 120000;
     allowAlphaBlending          = true;
     allowHighQualityReflections = false;
 }
예제 #2
0
        private WindWavesRenderMode BuildWindWavesVariant(ShaderVariant variant, WaterQualityLevel qualityLevel)
        {
            WaterWavesMode      wavesMode = qualityLevel.WavesMode;
            WindWavesRenderMode windWavesRenderMode;

            if (this._WindWavesMode == WindWavesRenderMode.Disabled || wavesMode == WaterWavesMode.DisallowAll)
            {
                windWavesRenderMode = WindWavesRenderMode.Disabled;
            }
            else if (this._WindWavesMode == WindWavesRenderMode.FullFFT && wavesMode == WaterWavesMode.AllowAll)
            {
                windWavesRenderMode = WindWavesRenderMode.FullFFT;
            }
            else if (this._WindWavesMode <= WindWavesRenderMode.GerstnerAndFFTNormals && wavesMode <= WaterWavesMode.AllowNormalFFT)
            {
                windWavesRenderMode = WindWavesRenderMode.GerstnerAndFFTNormals;
            }
            else
            {
                windWavesRenderMode = WindWavesRenderMode.Gerstner;
            }
            if (windWavesRenderMode != WindWavesRenderMode.FullFFT)
            {
                if (windWavesRenderMode != WindWavesRenderMode.GerstnerAndFFTNormals)
                {
                    if (windWavesRenderMode == WindWavesRenderMode.Gerstner)
                    {
                        variant.SetUnityKeyword("_WAVES_GERSTNER", true);
                    }
                }
                else
                {
                    variant.SetWaterKeyword("_WAVES_FFT_NORMAL", true);
                    variant.SetUnityKeyword("_WAVES_GERSTNER", true);
                }
            }
            else
            {
                variant.SetUnityKeyword("_WAVES_FFT", true);
            }
            if (this._DynamicSmoothnessMode == DynamicSmoothnessMode.Physical)
            {
                variant.SetWaterKeyword("_INCLUDE_SLOPE_VARIANCE", true);
            }
            return(windWavesRenderMode);
        }
예제 #3
0
        internal void ResolveFinalSettings(WaterQualityLevel quality)
        {
            this.CreateObjects();
            WaterWavesMode wavesMode = quality.WavesMode;

            if (wavesMode == WaterWavesMode.DisallowAll)
            {
                this._WaterWavesFFT.Disable();
                this._WaterWavesGerstner.Disable();
                return;
            }
            bool flag = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGBFloat) || SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGBHalf);
            int  num  = Mathf.Min(new int[]
            {
                this._Data.Resolution,
                quality.MaxSpectrumResolution,
                SystemInfo.maxTextureSize
            });
            bool flag2 = this._Data.HighPrecision && quality.AllowHighPrecisionTextures && SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.ARGBFloat);
            WindWavesRenderMode windWavesMode = this._Water.ShaderSet.WindWavesMode;

            if (windWavesMode == WindWavesRenderMode.FullFFT && wavesMode == WaterWavesMode.AllowAll && flag)
            {
                this._FinalRenderMode = WaveSpectrumRenderMode.FullFFT;
            }
            else if (windWavesMode <= WindWavesRenderMode.GerstnerAndFFTNormals && wavesMode <= WaterWavesMode.AllowNormalFFT && flag)
            {
                this._FinalRenderMode = WaveSpectrumRenderMode.GerstnerAndFFTNormals;
            }
            else
            {
                this._FinalRenderMode = WaveSpectrumRenderMode.Gerstner;
            }
            if (this._FinalResolution != num)
            {
                lock (this)
                {
                    this._FinalResolution    = num;
                    this._FinalHighPrecision = flag2;
                    if (this._SpectrumResolver != null)
                    {
                        this._SpectrumResolver.OnMapsFormatChanged(true);
                    }
                    if (this.ResolutionChanged != null)
                    {
                        this.ResolutionChanged.Invoke(this);
                    }
                }
            }
            else if (this._FinalHighPrecision != flag2)
            {
                lock (this)
                {
                    this._FinalHighPrecision = flag2;
                    if (this._SpectrumResolver != null)
                    {
                        this._SpectrumResolver.OnMapsFormatChanged(false);
                    }
                }
            }
            WaveSpectrumRenderMode finalRenderMode = this._FinalRenderMode;

            if (finalRenderMode != WaveSpectrumRenderMode.FullFFT)
            {
                if (finalRenderMode != WaveSpectrumRenderMode.GerstnerAndFFTNormals)
                {
                    if (finalRenderMode == WaveSpectrumRenderMode.Gerstner)
                    {
                        this._WaterWavesFFT.Disable();
                        this._WaterWavesGerstner.Enable();
                    }
                }
                else
                {
                    this._WaterWavesFFT.RenderedMaps = WavesRendererFFT.MapType.Normal;
                    this._WaterWavesFFT.Enable();
                    this._WaterWavesGerstner.Enable();
                }
            }
            else
            {
                this._WaterWavesFFT.RenderedMaps = (WavesRendererFFT.MapType.Displacement | WavesRendererFFT.MapType.Normal);
                this._WaterWavesFFT.Enable();
                this._WaterWavesGerstner.Disable();
            }
        }