private void RenderTotalOmnidirectionalSpectrum() { this._AnimationMaterial.SetFloat("_Gravity", this._Water.Gravity); this._AnimationMaterial.SetVector("_TargetResolution", new Vector4((float)this._WindWaves.FinalResolution, (float)this._WindWaves.FinalResolution, 0f, 0f)); Water.WeightedProfile[] profiles = this._Water.ProfilesManager.Profiles; if (profiles.Length > 1) { RenderTexture totalOmnidirectionalSpectrum = this.GetTotalOmnidirectionalSpectrum(); totalOmnidirectionalSpectrum.Clear(Color.black, false, true); foreach (Water.WeightedProfile weightedProfile in profiles) { if (weightedProfile.Weight > 0.0001f) { WaterWavesSpectrum spectrum = weightedProfile.Profile.Spectrum; WaterWavesSpectrumData spectrumData; if (!this._SpectraDataCache.TryGetValue(spectrum, out spectrumData)) { spectrumData = base.GetSpectrumData(spectrum); } this._AnimationMaterial.SetFloat("_Weight", spectrumData.Weight); Graphics.Blit(spectrumData.Texture, totalOmnidirectionalSpectrum, this._AnimationMaterial, 4); } } this._OmnidirectionalSpectrum = totalOmnidirectionalSpectrum; } else if (profiles.Length != 0) { WaterWavesSpectrum spectrum2 = profiles[0].Profile.Spectrum; WaterWavesSpectrumData spectrumData2; if (!this._SpectraDataCache.TryGetValue(spectrum2, out spectrumData2)) { spectrumData2 = base.GetSpectrumData(spectrum2); } spectrumData2.Weight = 1f; this._OmnidirectionalSpectrum = spectrumData2.Texture; } this._Water.Renderer.PropertyBlock.SetFloat("_MaxDisplacement", base.MaxHorizontalDisplacement); }
public WaterWavesSpectrumData(Water water, WindWaves windWaves, WaterWavesSpectrum spectrum) : base(water, windWaves, spectrum.TileSize, spectrum.Gravity) { this._Spectrum = spectrum; }