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");
        }
Example #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");
        }
        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");
        }
Example #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");
        }
Example #6
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");
    }
Example #7
0
        private void CreateGuiControls()
        {
            var panel = SampleFramework.AddOptions("Shadows");

            // ----- Light node controls
            var lightNodePanel = SampleHelper.AddGroupBox(panel, "Light Nodes");

            SampleHelper.AddDropDown(
                lightNodePanel,
                "Light type",
                new[] { "Spotlight", "PointLight" },
                0,
                selectedItem =>
            {
                bool enableSpotlight      = (selectedItem == "Spotlight");
                _spotlightNode.IsEnabled  = enableSpotlight;
                _pointLightNode.IsEnabled = !enableSpotlight;
            });

            SampleHelper.AddSlider(
                lightNodePanel,
                "Range",
                "F2",
                1,
                30,
                10,
                value =>
            {
                _spotlight.Range  = value;
                _pointLight.Range = value;
            });

            SampleHelper.AddSlider(
                lightNodePanel,
                "Y position",
                "F2",
                0,
                10,
                1,
                value =>
            {
                foreach (var node in new[] { _spotlightNode, _pointLightNode })
                {
                    var pose        = node.PoseWorld;
                    pose.Position.Y = value;
                    node.PoseWorld  = pose;
                }
            });

            SampleHelper.AddSlider(
                lightNodePanel,
                "X rotation",
                "F0",
                -90,
                90,
                1,
                value =>
            {
                var pose                 = _spotlightNode.PoseWorld;
                pose.Orientation         = Matrix.CreateRotationX(MathHelper.ToRadians(value));
                _spotlightNode.PoseWorld = pose;
            });

            SampleHelper.AddSlider(
                lightNodePanel,
                "Spotlight angle",
                "F2",
                1,
                89,
                MathHelper.ToDegrees(_spotlight.CutoffAngle),
                value =>
            {
                float angle             = MathHelper.ToRadians(value);
                _spotlight.FalloffAngle = 0.8f * angle;
                _spotlight.CutoffAngle  = angle;
            });

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

            SampleHelper.AddSlider(
                shadowPanel,
                "Shadow map resolution",
                "F0",
                16,
                1024,
                _standardShadow.PreferredSize,
                value =>
            {
                _standardShadow.PreferredSize = (int)value;
                _cubeMapShadow.PreferredSize  = (int)value;
            });

            SampleHelper.AddCheckBox(
                shadowPanel,
                "Prefer 16 bit",
                _standardShadow.Prefer16Bit,
                isChecked =>
            {
                _standardShadow.Prefer16Bit = isChecked;
                _cubeMapShadow.Prefer16Bit  = isChecked;
            });

            SampleHelper.AddSlider(
                shadowPanel,
                "Depth bias",
                "F2",
                0,
                10,
                _standardShadow.DepthBias,
                value =>
            {
                _standardShadow.DepthBias = value;
                _cubeMapShadow.DepthBias  = value;
            });

            SampleHelper.AddSlider(
                shadowPanel,
                "Normal offset",
                "F2",
                0,
                10,
                _standardShadow.NormalOffset,
                value =>
            {
                _standardShadow.NormalOffset = value;
                _cubeMapShadow.NormalOffset  = value;
            });

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

            SampleHelper.AddSlider(
                shadowPanel,
                "Filter radius",
                "F2",
                0,
                10,
                _standardShadow.FilterRadius,
                value =>
            {
                _standardShadow.FilterRadius = value;
                _cubeMapShadow.FilterRadius  = value;
            });

            SampleHelper.AddSlider(
                shadowPanel,
                "Jitter resolution",
                "F0",
                1,
                10000,
                _standardShadow.JitterResolution,
                value =>
            {
                _standardShadow.JitterResolution = value;
                _cubeMapShadow.JitterResolution  = value;
            });

            SampleFramework.ShowOptionsWindow("Shadows");
        }
Example #8
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");
        }
Example #10
0
    // Add GUI controls to the Options window.
    private void CreateGuiControls()
    {
      var sampleFramework = _services.GetInstance<SampleFramework>();
      var optionsPanel = sampleFramework.AddOptions("Game Objects");
      var panel = SampleHelper.AddGroupBox(optionsPanel, "TerrainObject");

      SampleHelper.AddCheckBox(
        panel,
        "Draw wireframe",
        _graphicsScreen.TerrainRenderer.DrawWireFrame,
        isChecked => _graphicsScreen.TerrainRenderer.DrawWireFrame = isChecked);

      SampleHelper.AddCheckBox(
        panel,
        "Show clipmaps",
        _showClipmaps,
        isChecked => _showClipmaps = isChecked);

      SampleHelper.AddSlider(
        panel,
        "Min height",
        null,
        -500,
        0,
        _minHeight,
        value =>
        {
          _minHeight = value;
          _updateGeometryTexture = true;
        });

      SampleHelper.AddSlider(
        panel,
        "Max height",
        null,
        0,
        2000,
        _maxHeight,
        value =>
        {
          _maxHeight = value;
          _updateGeometryTexture = true;
        });

      SampleHelper.AddCheckBox(
        panel,
        "Smooth height map",
        _smoothness > 0,
        isChecked =>
        {
          _smoothness = isChecked ? 1e6f : 0;
          _updateGeometryTexture = true;
        });

      SampleHelper.AddSlider(
        panel,
        "Height map cell size",
        null,
        0.5f,
        4f,
        TerrainNode.Terrain.Tiles[0].CellSize,
        value =>
        {
          foreach (var tile in TerrainNode.Terrain.Tiles)
            tile.CellSize = value;

          _updateGeometryTexture = true;
        });

      SampleHelper.AddCheckBox(
        panel,
        "Nearest neighbor mipmaps",
        _useNearestNeighborMipmaps,
        isChecked =>
        {
          _useNearestNeighborMipmaps = isChecked;
          _updateGeometryTexture = true;
        });

      var texelsPerLevelList = new List<int> { 64, 128, 256 };
      SampleHelper.AddDropDown(
        panel,
        "Cells per level",
        texelsPerLevelList,
        texelsPerLevelList.IndexOf(TerrainNode.BaseClipmap.CellsPerLevel),
        value => TerrainNode.BaseClipmap.CellsPerLevel = value);

      SampleHelper.AddSlider(
        panel,
        "Number of levels",
        "F0",
        1,
        6,
        TerrainNode.BaseClipmap.NumberOfLevels,
        value => TerrainNode.BaseClipmap.NumberOfLevels = (int)value);


      var detailTexelsPerLevelList = new List<int> { 512, 1024, 1365 };
#else
      var detailTexelsPerLevelList = new List<int> { 512, 1024, 1365, 2048 };

      SampleHelper.AddDropDown(
        panel,
        "Detail clipmap cells per level",
        detailTexelsPerLevelList,
        detailTexelsPerLevelList.IndexOf(TerrainNode.DetailClipmap.CellsPerLevel),
        value =>
        {
          TerrainNode.DetailClipmap.CellsPerLevel = value;
          _updateDetailClipmapCellSizes = true;
        });

      SampleHelper.AddSlider(
        panel,
        "Number of detail clipmap levels",
        "F0",
        1,
        9,
        TerrainNode.DetailClipmap.NumberOfLevels,
        value =>
        {
          TerrainNode.DetailClipmap.NumberOfLevels = (int)value;
          _updateDetailClipmapCellSizes = true;
        });

      SampleHelper.AddSlider(
        panel,
        "Mipmap bias",
        null,
        -10,
        10,
        TerrainNode.DetailClipmap.LevelBias,
        value => TerrainNode.DetailClipmap.LevelBias = value);

      SampleHelper.AddCheckBox(
       panel,
       "Enable mipmap",
       TerrainNode.DetailClipmap.EnableMipMap,
       isChecked => TerrainNode.DetailClipmap.EnableMipMap = isChecked);

      SampleHelper.AddCheckBox(
        panel,
        "Enable anisotropic filtering",
        TerrainNode.DetailClipmap.EnableAnisotropicFiltering,
        isChecked => TerrainNode.DetailClipmap.EnableAnisotropicFiltering = isChecked);
    }
Example #11
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");
        }
Example #12
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");
        }