Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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;
        }