Beispiel #1
0
            public float Filter(ILodDataInput data, out int isTransition)
            {
                var drawOctaveWavelength = data.Wavelength;

                isTransition = 0;

                // No wavelength preference - don't draw per-lod
                if (drawOctaveWavelength == 0f)
                {
                    return(0f);
                }

                // Too small for this lod
                if (drawOctaveWavelength < _lodMinWavelength)
                {
                    return(0f);
                }

                // If approaching end of lod chain, start smoothly transitioning any large wavelengths across last two lods
                if (drawOctaveWavelength >= _globalMaxWavelength / 2f)
                {
                    if (_lodIdx == _lodCount - 2)
                    {
                        isTransition = 1;
                        return(1f - OceanRenderer.Instance.ViewerAltitudeLevelAlpha);
                    }

                    if (_lodIdx == _lodCount - 1)
                    {
                        return(OceanRenderer.Instance.ViewerAltitudeLevelAlpha);
                    }
                }
                else if (drawOctaveWavelength < _lodMaxWavelength)
                {
                    // Fits in this lod
                    return(1f);
                }

                return(0f);
            }
Beispiel #2
0
 public float Filter(ILodDataInput data, out int isTransition)
 {
     isTransition = 0;
     return(data.Wavelength == 0f ? 1f : 0f);
 }