public BloomStageModel(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; TexelShiftSize = new Vector2(1.0f / (1.0f * _sampleSurfaceWidth), 1.0f / (1.0f * _sampleSurfaceHeight)); CreateSurfaces(); _current = new BloomEffectConfiguration() { BrightnessThreshold = 0.6f, AdditiveMixAmount = 0.5f, NumberOfBlurSamples = 4 }; _isTransitioning = false; }
public void SetBloomConfig(IBloomStage effect, BloomEffectConfiguration config, float transitionSeconds) { if (effect == null) { throw new Yak2DException("Unable to set bloom effect as stage passed is null"); } SetBloomConfig(effect.Id, config, transitionSeconds); }
public void SetBloomConfig(ulong effect, BloomEffectConfiguration config, float transitionSeconds) { config.BrightnessThreshold = Utility.Clamper.Clamp(config.BrightnessThreshold, 0.0f, 1.0f); config.AdditiveMixAmount = Utility.Clamper.Clamp(config.AdditiveMixAmount, 0.0f, float.MaxValue); 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.CachedBloomEffectStageModel?.SetEffectTransition(ref config, ref transitionSeconds); }
public void SetEffectTransition(ref BloomEffectConfiguration 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; return; } _previous = _current; _target = config; _transitionTotalTime = transitionSeconds; _transitionCurrentTime = 0.0f; _isTransitioning = true; }