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); }
public float Filter(ILodDataInput data, out int isTransition) { isTransition = 0; return(data.Wavelength == 0f ? 1f : 0f); }