public void RenderOverlays(WaterOverlaysData overlays) { if (!enabled) { return; } localFoamSimulationMaterial.CopyPropertiesFromMaterial(water.WaterMaterial); float t = foamThreshold * overlays.DynamicDisplacementMap.width / 2048.0f * 0.7f; localFoamSimulationMaterial.SetVector(foamParametersId, new Vector4(foamIntensity * 0.6f, t, 0.0f, foamFadingFactor)); localFoamSimulationMaterial.SetTexture("_DisplacementMap", overlays.DynamicDisplacementMap); localFoamSimulationMaterial.SetTexture("_SlopeMapPrevious", overlays.SlopeMapPrevious); localFoamSimulationMaterial.SetTexture("_TotalDisplacementMap", overlays.GetTotalDisplacementMap()); localFoamSimulationMaterial.SetVector("_Offset", new Vector4((UnityEngine.Random.value - 0.5f) * 0.001f, (UnityEngine.Random.value - 0.5f) * 0.001f, 0.0f, 0.0f)); Graphics.Blit(overlays.SlopeMapPrevious, overlays.SlopeMap, localFoamSimulationMaterial, overlays.Initialization ? 1 : 0); }
private void SpawnWindWavesParticlesLocal(WaterOverlaysData overlays) { sprayLocalGeneratorMaterial.CopyPropertiesFromMaterial(water.WaterMaterial); sprayLocalGeneratorMaterial.SetVector("_SurfaceOffset", -water.SurfaceOffset); sprayLocalGeneratorMaterial.SetVector("_Params", new Vector4(spawnThreshold * 0.25835f, spawnSkipRatio, 0.0f, scale * 0.455f)); sprayLocalGeneratorMaterial.SetTexture("_TotalDisplacementMap", overlays.GetTotalDisplacementMap()); sprayLocalGeneratorMaterial.SetTexture("_LocalSlopeMap", overlays.SlopeMapPrevious); sprayLocalGeneratorMaterial.SetTexture("_LocalUtilityMap", overlays.UtilityMap); float size = overlays.Camera.LocalMapsRect.width / water.UniformWaterScale; int iterations = 7 + Mathf.CeilToInt(size / 650.0f); iterations = Mathf.Clamp(iterations, 8, 12); sprayLocalGeneratorMaterial.SetInt("_Iterations", iterations); Graphics.SetRandomWriteTarget(1, particlesA); Graphics.Blit(null, blankOutput, sprayLocalGeneratorMaterial, 0); Graphics.ClearRandomWriteTargets(); }