public Blur1DStageModel(IFrameworkMessenger frameworkMessenger, IStartupPropertiesCache startUpPropertiesCache, ISystemComponents systemComponents, IGpuSurfaceManager surfaceManager, IGaussianBlurWeightsAndOffsetsCache gaussianWeightsAndOffsetsCache, uint sampleSurfaceWidth, uint sampleSurfaceHeight) { _frameworkMessenger = frameworkMessenger; _startUpPropertiesCache = startUpPropertiesCache; _systemComponents = systemComponents; _surfaceManager = surfaceManager; _gaussianWeightsAndOffsetsCache = gaussianWeightsAndOffsetsCache; _sampleSurfaceWidth = sampleSurfaceWidth; _sampleSurfaceHeight = sampleSurfaceHeight; _unitTexelShiftSize = new Vector2(1.0f / (1.0f * _sampleSurfaceWidth), 1.0f / (1.0f * _sampleSurfaceHeight)); CreateSurfaces(); _current = new Blur1DEffectConfiguration() { MixAmount = 0.0f, NumberOfBlurSamples = 4, BlurDirection = Vector2.UnitX, ReSamplerType = ResizeSamplerType.NearestNeighbour }; _isTransitioning = false; CalculateTexelShift(); }
public void SetBlur1DConfig(IBlur1DStage effect, Blur1DEffectConfiguration config, float transitionSeconds) { if (effect == null) { throw new Yak2DException("Unable to set blur1d effect as stage passed is null"); } SetBlur1DConfig(effect.Id, config, transitionSeconds); }
public void SetBlur1DConfig(ulong effect, Blur1DEffectConfiguration config, float transitionSeconds) { config.MixAmount = Utility.Clamper.Clamp(config.MixAmount, 0.0f, float.MaxValue); //i think move these checks deeper and closer to where get used.. config.NumberOfBlurSamples = Utility.Clamper.Clamp(config.NumberOfBlurSamples, 0, MAX_BLUR_SAMPLE_STEPS_FROM_CENTRE); transitionSeconds = Utility.Clamper.Clamp(transitionSeconds, 0.0f, float.MaxValue); CacheRenderStageModelInVisitor(effect); _renderStageVisitor.CachedBlur1dEffectModel?.SetEffectTransition(ref config, ref transitionSeconds); }
public void SetEffectTransition(ref Blur1DEffectConfiguration config, ref float transitionSeconds) { transitionSeconds = Utility.Clamper.Clamp(transitionSeconds, 0.0f, float.MaxValue); //Might be duplicated clamp for this value if (transitionSeconds == 0.0f) { _current = config; _isTransitioning = false; CalculateTexelShift(); return; } _previous = _current; _target = config; _transitionTotalTime = transitionSeconds; _transitionCurrentTime = 0.0f; _isTransitioning = true; }