コード例 #1
0
        //private Buffer _parameterBuffer = null;

        private void Update(EvaluationContext context)
        {
            var id = Id.GetValue(context);

            var previousMap = context.PrbPrefilteredSpecular;
            var tex         = PrefilteredSpecularMap.GetValue(context) ?? PbrContextSettings.WhitePixelTexture;

            var hadPreviousTexture = context.ContextTextures.TryGetValue(id, out var previousTexture);

            context.ContextTextures[id] = tex;
            // {
            //
            // }
            //
            // if (tex != null)
            // {
            //     context.PrbPrefilteredSpecular = tex;
            // }

            SubTree.GetValue(context);
            if (hadPreviousTexture)
            {
                context.ContextTextures[id] = previousMap;
            }
            else
            {
                context.ContextTextures.Remove(id);
            }
        }
コード例 #2
0
        private void Update(EvaluationContext context)
        {
            var previousTime = context.TimeInBars;

            context.TimeInBars = NewTime.GetValue(context);

            // Execute subtree
            //SubTree.DirtyFlag.Invalidate();
            Result.Value = SubTree.GetValue(context);
            //Log.Debug($"old:{previousTime} / new:{context.TimeInBars}");
            context.TimeInBars = previousTime;
            //SubTree.DirtyFlag.Clear();
        }
コード例 #3
0
        private void Update(EvaluationContext context)
        {
            if (!_initialized)
            {
                if (Parent?.Symbol == null)
                {
                    Log.Warning("Can't register Preset blending for undefined parent", this.SymbolChildId);
                    return;
                }
                BlendSettingForCompositionIds[Parent.Symbol.Id] = _blendSetting;
                _initialized = true;
            }

            // Evaluate subtree
            SubTree.GetValue(context);

            var wasUpdated = false;
            var groupIndex = GroupIndex.GetValue(context);

            if (groupIndex != _blendSetting.GroupIndex)
            {
                wasUpdated = true;
                _blendSetting.GroupIndex = groupIndex;
            }

            var presetA = PresetA.GetValue(context);

            if (presetA != _blendSetting.PresetAIndex)
            {
                wasUpdated = true;
                _blendSetting.PresetAIndex = presetA;
            }

            var presetB = PresetB.GetValue(context);

            if (presetB != _blendSetting.PresetBIndex)
            {
                wasUpdated = true;
                _blendSetting.PresetBIndex = presetB;
            }

            var blendFactor = BlendFactor.GetValue(context);

            if (Math.Abs(blendFactor - _blendSetting.BlendFactor) > 0.001f)
            {
                wasUpdated = true;
                _blendSetting.BlendFactor = blendFactor;
            }

            _blendSetting.WasActivatedLastFrame = wasUpdated;
        }
コード例 #4
0
ファイル: SetMaterial.cs プロジェクト: still-scene/Operators
        private void Update(EvaluationContext context)
        {
            // Parameters
            var parameterBufferContent = new PbrMaterialParams
            {
                BaseColor     = BaseColor.GetValue(context),
                EmissiveColor = EmissiveColor.GetValue(context),
                Roughness     = Roughness.GetValue(context),
                Specular      = Specular.GetValue(context),
                Metal         = Metal.GetValue(context)
            };

            ResourceManager.Instance().SetupConstBuffer(parameterBufferContent, ref _parameterBuffer);

            // Textures
            var resourceManager = ResourceManager.Instance();
            var device          = resourceManager.Device;

            Utilities.Dispose(ref _baseColorMapSrv);
            var tex = BaseColorMap.GetValue(context) ?? PbrContextSettings.WhitePixelTexture;

            _baseColorMapSrv = new ShaderResourceView(device, tex);
            context.PbrMaterialTextures.AlbedoColorMap = _baseColorMapSrv;

            Utilities.Dispose(ref _normalMapSrv);
            var tex2 = NormalMap.GetValue(context) ?? PbrContextSettings.NormalFallbackTexture;

            _normalMapSrv = new ShaderResourceView(device, tex2);
            context.PbrMaterialTextures.NormalMap = _normalMapSrv;

            Utilities.Dispose(ref _rsmoMapSrv);
            var tex3 = RoughnessSpecularMetallicOcclusionMap.GetValue(context) ?? PbrContextSettings.RsmoFallbackTexture;

            _rsmoMapSrv = new ShaderResourceView(device, tex3);
            context.PbrMaterialTextures.RoughnessSpecularMetallicOcclusionMap = _rsmoMapSrv;

            Utilities.Dispose(ref _emissiveColorMapSrv);
            var tex4 = EmissiveColorMap.GetValue(context) ?? PbrContextSettings.WhitePixelTexture;

            _emissiveColorMapSrv = new ShaderResourceView(device, tex4);
            context.PbrMaterialTextures.EmissiveColorMap = _emissiveColorMapSrv;

            var previousParameters = context.PbrMaterialParams;

            context.PbrMaterialParams = _parameterBuffer;


            SubTree.GetValue(context);
            context.PbrMaterialParams = previousParameters;
        }
コード例 #5
0
ファイル: SetParticleSystem.cs プロジェクト: still-scene/t3
        private void Update(EvaluationContext context)
        {
            //Log.Debug("Setting Particle system");
            var previousSystem           = context.ParticleSystem;
            var particleSystemForContext = ParticleSystem.GetValue(context);

            if (particleSystemForContext != null)
            {
                context.ParticleSystem = particleSystemForContext;
            }

            // Execute subtree
            Result.Value           = SubTree.GetValue(context);
            context.ParticleSystem = previousSystem;
        }
コード例 #6
0
        private void Update(EvaluationContext context)
        {
            var previousKeyframeTime = context.LocalTime;
            var previousEffectTime   = context.LocalFxTime;

            var newTime = NewTime.GetValue(context);

            context.LocalTime   = newTime;
            context.LocalFxTime = newTime;

            // Execute subtree
            Result.Value        = SubTree.GetValue(context);
            context.LocalTime   = previousKeyframeTime;
            context.LocalFxTime = previousEffectTime;
        }
コード例 #7
0
        private void Update(EvaluationContext context)
        {
            BeatTapTriggered = false;
            var triggerTap = TriggerBeatTap.GetValue(context);

            if (triggerTap != _wasBeatTriggered)
            {
                _wasBeatTriggered = triggerTap;
                BeatTapTriggered  = triggerTap;
            }

            ResyncTriggered = false;
            var triggerResync = TriggerResync.GetValue(context);

            if (triggerResync != _wasResyncTriggered)
            {
                _wasResyncTriggered = triggerResync;
                ResyncTriggered     = triggerResync;
            }

            // Evaluate subtree
            SubTree.GetValue(context);
        }