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"); }
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"); }
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"); }
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"); }
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(); } }
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"); }
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(); }
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"); }
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"); }
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"); }
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"); }