private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Facial Animation");

            SampleHelper.AddCheckBox(panel, "Play animation", false, PlayAnimation);

            // Add UI controls for morph targets.
            var morphTargetsPanel = SampleHelper.AddGroupBox(panel, "Morph Targets");

            foreach (var morph in _sintel.MorphWeights)
            {
                string name = morph.Key;
                SampleHelper.AddSlider(morphTargetsPanel, name, null, 0, 1, 0, value => _sintel.MorphWeights[name] = value);
            }

            // Add controls for skeleton.
            var skeletonPanel = SampleHelper.AddGroupBox(panel, "Skeleton");

            SampleHelper.AddSlider(skeletonPanel, "Mouth-open", null, 0, 1, 0, value => InterpolatePose(_sintel, _mouthClosedPose, _mouthOpenPose, value));
            SampleHelper.AddCheckBox(skeletonPanel, "Draw skeleton", false, b => _drawSkeleton = b);

            _sliders = panel.GetDescendants().OfType <Slider>().ToArray();

            SampleFramework.ShowOptionsWindow("Facial Animation");
        }
Пример #2
0
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Terrain");

            SampleHelper.AddCheckBox(
                panel,
                "Enable per-pixel holes",
                false,
                isChecked => UpdateTerrainMaterial(isChecked));

            SampleHelper.AddSlider(
                panel,
                "Hole size",
                "F0",
                0,
                8,
                _holeSize,
                value =>
            {
                _holeSize = (int)value;
                UpdateHoleTexture();
            });

            SampleHelper.AddSlider(
                panel,
                "Hole threshold",
                null,
                0,
                1,
                _terrainObject.TerrainNode.HoleThreshold,
                value => _terrainObject.TerrainNode.HoleThreshold = value);

            SampleFramework.ShowOptionsWindow("Terrain");
        }
Пример #3
0
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Intersections");

            // ----- Light node controls
            SampleHelper.AddSlider(
                panel,
                "Max convexity",
                "F0",
                1,
                10,
                _maxConvexity,
                value => _maxConvexity = (int)value);

            SampleHelper.AddSlider(
                panel,
                "Downsample factor",
                "F2",
                1,
                4,
                _intersectionRenderer.DownsampleFactor,
                value => _intersectionRenderer.DownsampleFactor = value);

            SampleHelper.AddCheckBox(
                panel,
                "Use sissor test",
                _intersectionRenderer.EnableScissorTest,
                isChecked => _intersectionRenderer.EnableScissorTest = isChecked);

            SampleFramework.ShowOptionsWindow("Intersections");
        }
Пример #4
0
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Terrain");

            SampleHelper.AddCheckBox(
                panel,
                "Enable parallax occlusion mapping",
                true,
                isChecked => UpdateTerrainMaterial(isChecked));

            SampleFramework.ShowOptionsWindow("Terrain");
        }
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Shadows");

            SampleHelper.AddCheckBox(
                panel,
                "Enable shadow map caching",
                _enableShadowMapCaching,
                isChecked => _enableShadowMapCaching = isChecked);

            SampleFramework.ShowOptionsWindow("Shadows");
        }
Пример #6
0
        public override void Update(GameTime gameTime)
        {
            base.Update(gameTime);

            // If the exit animation is playing and has finished, then start from the
            // beginning.
            if (_exiting && _exitAnimationController.State == AnimationState.Filling)
            {
                _exitAnimationController.Stop();

                // Here, we would exit the game.
                //Game.Exit();
                // In this project we switch to the next sample instead.
                SampleFramework.LoadNextSample();
            }
        }
Пример #7
0
    private void CreateGuiControls()
    {
      var panel = SampleFramework.AddOptions("Batching");

      SampleHelper.AddDropDown(
        panel,
        "Batching method",
        EnumHelper.GetValues(typeof(BatchingType)),
        (int)_batchingType,
        batchingType => SetBatchingType((BatchingType)batchingType));

      SampleHelper.AddCheckBox(
        panel,
        "Draw debug info",
        _drawDebugInfo,
        isChecked => _drawDebugInfo = isChecked);

      SampleFramework.ShowOptionsWindow("Batching");
    }
Пример #8
0
    private void OnExitButtonClicked(object sender, EventArgs eventArgs)
    {
      // Animate all buttons within the StackPanel to opacity 0 and offset (-300, 0).
      var stackPanel = (StackPanel)_menuWindow.Content;
      _menuExitAnimationController = AnimateTo(stackPanel.Children, 0, new Vector2F(-300, 0));

      // When the last animation finishes, exit the game.
      _menuExitAnimationController.Completed += (s, e) =>
      {
        // Here, we would exit the game.
        //Game.Exit();
        // In this project we switch to the next sample instead.
        SampleFramework.LoadNextSample();
      };

      // Disable all buttons. The user should not be able to click a button while 
      // the fade-out animation is playing.
      DisableMenuItems();
    }
Пример #9
0
    private void CreateGuiControls()
    {
      var panel = SampleFramework.AddOptions("Vegetation");

      var swayPanel = SampleHelper.AddGroupBox(panel, "Swaying");

      SampleHelper.AddSlider(
        swayPanel,
        "Wind wave frequency",
        "F2",
        0,
        0.5f,
        _windWaveFrequency,
        value =>
        {
          _windWaveFrequency = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddSlider(
        swayPanel,
        "Wind wave randomness",
        "F2",
        0,
        1,
        _windWaveRandomness,
        value =>
        {
          _windWaveRandomness = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddSlider(
        swayPanel,
        "Trunk frequency multiplier",
        "F2",
        0,
        10,
        _trunkFrequencyMultiplier,
        value =>
        {
          _trunkFrequencyMultiplier = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddSlider(
        swayPanel,
        "Branch frequency multiplier",
        "F2",
        0,
        10,
        _branchFrequencyMultiplier,
        value =>
        {
          _branchFrequencyMultiplier = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddSlider(
        swayPanel,
        "Trunk scale multiplier",
        "F2",
        0,
        10,
        _trunkScaleMultiplier,
        value =>
        {
          _trunkScaleMultiplier = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddSlider(
        swayPanel,
        "Branch scale multiplier",
        "F2",
        0,
        10,
        _branchScaleMultiplier,
        value =>
        {
          _branchScaleMultiplier = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddSlider(
        swayPanel,
        "Leaf scale multiplier",
        "F2",
        0,
        10,
        _leafScaleMultiplier,
        value =>
        {
          _leafScaleMultiplier = value;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddDropDown(
        swayPanel,
        "Render vertex color",
        EnumHelper.GetValues(typeof(VertexColorChannel)),
        0,
        item =>
        {
          _vertexColorChannel = (VertexColorChannel)item;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddCheckBox(
        panel,
        "Enable translucency",
        true,
        isChecked =>
        {
          _enableTranslucency = isChecked;
          UpdateMaterialEffectParameters();
        });

      SampleHelper.AddCheckBox(
        panel,
        "Draw debug info",
        _drawDebugInfo,
        isChecked => _drawDebugInfo = isChecked);

      SampleFramework.ShowOptionsWindow("Vegetation");
    }
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("IBL");

            SampleHelper.AddButton(
                panel,
                "Update environment maps",
                () => _updateEnvironmentMaps = true,
                null);

            for (int i = 0; i < _lightNodes.Length; i++)
            {
                int index = i;
                SampleHelper.AddCheckBox(
                    panel,
                    "Enable image-based light " + i,
                    true,
                    isChecked =>
                {
                    _lightNodes[index].IsEnabled = isChecked;
                });
            }

            SampleHelper.AddCheckBox(
                panel,
                "Colorize image-based lights to show influence zones",
                false,
                isChecked =>
            {
                if (isChecked)
                {
                    _imageBasedLights[0].Color = new Vector3F(1, 0, 0);
                    _imageBasedLights[1].Color = new Vector3F(0, 1, 0);
                    _imageBasedLights[2].Color = new Vector3F(0, 0, 1);
                }
                else
                {
                    _imageBasedLights[0].Color = new Vector3F(1);
                    _imageBasedLights[1].Color = new Vector3F(1);
                    _imageBasedLights[2].Color = new Vector3F(1);
                }
            });

            SampleHelper.AddCheckBox(
                panel,
                "Enable localized reflections",
                true,
                isChecked =>
            {
                _imageBasedLights[1].EnableLocalizedReflection = isChecked;
                _imageBasedLights[2].EnableLocalizedReflection = isChecked;
            });

            SampleHelper.AddSlider(
                panel,
                "Fade-out range",
                "F2",
                0,
                1,
                _imageBasedLights[1].FalloffRange,
                value =>
            {
                _imageBasedLights[1].FalloffRange = value;
                _imageBasedLights[2].FalloffRange = value;
            });

            SampleFramework.ShowOptionsWindow("IBL");
        }
Пример #11
0
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Terrain");

            // TerrainMaterialLayer.BlendRange controls how fast one layer fades out.
            SampleHelper.AddSlider(
                panel, "Blend range", null, 0, 1,
                _terrainTile.Layers.OfType <TerrainMaterialLayer>().First().BlendRange,
                value =>
            {
                foreach (var materialLayer in _terrainTile.Layers.OfType <TerrainMaterialLayer>())
                {
                    materialLayer.BlendRange = value;
                }

                _terrainTile.Invalidate();
            });

            // TerrainMaterialLayer.BlendThreshold defines the threshold value for the blend texture.
            // Layers are drawn where their blend texture value is greater than the threshold.
            // Changing the threshold value can be used, for example, to decrease/increase the snow cover.
            SampleHelper.AddSlider(
                panel, "Snow blend threshold", null, -1, 1,
                ((TerrainMaterialLayer)_terrainTile.Layers[2]).BlendThreshold,
                value =>
            {
                ((TerrainMaterialLayer)_terrainTile.Layers[2]).BlendThreshold = value;
                _terrainTile.Invalidate();
            });

            // The TerrainMaterialLayer with the rock texture contains a height map. The height values
            // can be used to modify the blending, e.g. to show more gravel in the creases of the rock.
            SampleHelper.AddSlider(
                panel, "Rock height influence", null, -1, 1,
                ((TerrainMaterialLayer)_terrainTile.Layers[1]).BlendHeightInfluence,
                value =>
            {
                ((TerrainMaterialLayer)_terrainTile.Layers[1]).BlendHeightInfluence = value;
                _terrainTile.Invalidate();
            });

            // The layer blending can be modified by noise to make the transition borders irregular.
            SampleHelper.AddSlider(
                panel, "Snow noise influence", null, 0, 1,
                ((TerrainMaterialLayer)_terrainTile.Layers[2]).BlendNoiseInfluence,
                value =>
            {
                ((TerrainMaterialLayer)_terrainTile.Layers[2]).BlendNoiseInfluence = value;
                _terrainTile.Invalidate();
            });
            SampleHelper.AddSlider(
                panel, "Snow noise tile size", null, 1, 100,
                ((TerrainMaterialLayer)_terrainTile.Layers[2]).NoiseTileSize,
                value =>
            {
                ((TerrainMaterialLayer)_terrainTile.Layers[2]).NoiseTileSize = value;
                _terrainTile.Invalidate();
            });

            SampleFramework.ShowOptionsWindow("Terrain");
        }
Пример #12
0
        private void CreateGuiControls()
        {
            var optionsPanel = SampleFramework.AddOptions("Shadows");

            // ----- Shadow controls
            var shadowPanel = SampleHelper.AddGroupBox(optionsPanel, "Shadow");

            SampleHelper.AddSlider(
                shadowPanel,
                "Shadow map resolution",
                "F0",
                16,
                1024,
                _cascadedShadow.PreferredSize,
                value =>
            {
                _cascadedShadow.PreferredSize = (int)value;
                _cascadedShadow.ShadowMap.SafeDispose();
                _cascadedShadow.ShadowMap = null;
            });

            SampleHelper.AddCheckBox(
                shadowPanel,
                "Prefer 16 bit",
                _cascadedShadow.Prefer16Bit,
                isChecked =>
            {
                _cascadedShadow.Prefer16Bit = isChecked;
                _cascadedShadow.ShadowMap.SafeDispose();
                _cascadedShadow.ShadowMap = null;
            });

            SampleHelper.AddSlider(
                shadowPanel,
                "Number of cascades",
                "F0",
                1,
                4,
                _cascadedShadow.NumberOfCascades,
                value =>
            {
                _cascadedShadow.NumberOfCascades = (int)value;
                switch ((int)value)
                {
                case 1: _cascadedShadow.Distances = new Vector4(80); break;

                case 2: _cascadedShadow.Distances = new Vector4(20, 80, 80, 80); break;

                case 3: _cascadedShadow.Distances = new Vector4(12, 20, 80, 80); break;

                case 4: _cascadedShadow.Distances = new Vector4(4, 12, 20, 80); break;
                }
                _cascadedShadow.ShadowMap.SafeDispose();
                _cascadedShadow.ShadowMap = null;
            });

            SampleHelper.AddSlider(
                shadowPanel,
                "Depth bias",
                "F2",
                0,
                10,
                _cascadedShadow.DepthBias.X,
                value => _cascadedShadow.DepthBias = new Vector4(value));

            SampleHelper.AddSlider(
                shadowPanel,
                "Normal offset",
                "F2",
                0,
                10,
                _cascadedShadow.NormalOffset.X,
                value => _cascadedShadow.NormalOffset = new Vector4(value));

            SampleHelper.AddSlider(
                shadowPanel,
                "Number of samples",
                "F0",
                -1,
                32,
                _cascadedShadow.NumberOfSamples,
                value => _cascadedShadow.NumberOfSamples = (int)value);

            SampleHelper.AddSlider(
                shadowPanel,
                "Filter radius",
                "F2",
                0,
                10,
                _cascadedShadow.FilterRadius,
                value => _cascadedShadow.FilterRadius = value);

            SampleHelper.AddSlider(
                shadowPanel,
                "Jitter resolution",
                "F0",
                1,
                10000,
                _cascadedShadow.JitterResolution,
                value => _cascadedShadow.JitterResolution = value);

            SampleHelper.AddSlider(
                shadowPanel,
                "Fade-out range",
                "F2",
                0,
                1,
                _cascadedShadow.FadeOutRange,
                value => _cascadedShadow.FadeOutRange = value);

            SampleHelper.AddSlider(
                shadowPanel,
                "Shadow fog",
                "F2",
                0,
                1,
                _cascadedShadow.ShadowFog,
                value => _cascadedShadow.ShadowFog = value);

            SampleHelper.AddDropDown(
                shadowPanel,
                "Cascade split selection",
                new[] { ShadowCascadeSelection.Fast, ShadowCascadeSelection.Best, ShadowCascadeSelection.BestDithered, },
                (int)_cascadedShadow.CascadeSelection,
                item => _cascadedShadow.CascadeSelection = item);

            SampleHelper.AddCheckBox(
                shadowPanel,
                "Visualize cascades",
                _cascadedShadow.VisualizeCascades,
                isChecked => _cascadedShadow.VisualizeCascades = isChecked);

            // ----- Shadow map caching
            var cachingPanel = SampleHelper.AddGroupBox(optionsPanel, "Shadow map caching");

            cachingPanel.Children.Add(new TextBlock
            {
                Text   = "Set a value > 0 to update shadow map less frequently.",
                Margin = new Vector4(0, 0, SampleHelper.Margin, 0),
            });

            SampleHelper.AddSlider(
                cachingPanel,
                "Cascade 0",
                "F0",
                0,
                10,
                _targetSkippedFrames[0],
                value => _targetSkippedFrames[0] = (int)value);

            SampleHelper.AddSlider(
                cachingPanel,
                "Cascade 1",
                "F0",
                0,
                10,
                _targetSkippedFrames[1],
                value => _targetSkippedFrames[1] = (int)value);

            SampleHelper.AddSlider(
                cachingPanel,
                "Cascade 2",
                "F0",
                0,
                10,
                _targetSkippedFrames[2],
                value => _targetSkippedFrames[2] = (int)value);

            SampleHelper.AddSlider(
                cachingPanel,
                "Cascade 3",
                "F0",
                0,
                10,
                _targetSkippedFrames[3],
                value => _targetSkippedFrames[3] = (int)value);

            SampleFramework.ShowOptionsWindow("Shadows");
        }
Пример #13
0
        private void CreateGuiControls()
        {
            var optionsPanel = SampleFramework.AddOptions("Shadows");

            SampleHelper.AddSlider(
                optionsPanel,
                "Shadow map resolution",
                "F0",
                16,
                4096,
                _varianceShadow.PreferredSize,
                value =>
            {
                _varianceShadow.PreferredSize = (int)value;
                _varianceShadow.ShadowMap.SafeDispose();
                _varianceShadow.ShadowMap = null;
            });

            SampleHelper.AddCheckBox(
                optionsPanel,
                "Prefer 16 bit per channel",
                _varianceShadow.Prefer16Bit,
                isChecked =>
            {
                _varianceShadow.Prefer16Bit = isChecked;
                _varianceShadow.ShadowMap.SafeDispose();
                _varianceShadow.ShadowMap = null;
            });

            SampleHelper.AddSlider(
                optionsPanel,
                "Min variance",
                "F4",
                0,
                0.001f,
                _varianceShadow.MinVariance,
                value =>
            {
                _varianceShadow.MinVariance = value;
                _updateShadowMap            = true;
            });

            SampleHelper.AddSlider(
                optionsPanel,
                "Light bleeding reduction",
                "F2",
                0, 0.999f,
                _varianceShadow.LightBleedingReduction,
                value =>
            {
                _varianceShadow.LightBleedingReduction = value;
                _updateShadowMap = true;
            });

            SampleHelper.AddCheckBox(
                optionsPanel,
                "Blur shadow map",
                _varianceShadow.Filter.Enabled,
                isChecked =>
            {
                _varianceShadow.Filter.Enabled = isChecked;
                _updateShadowMap = true;
            });

            SampleFramework.ShowOptionsWindow("Shadows");
        }