示例#1
0
        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);
        }
示例#2
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();
        }