private async Task <bool> UpdateRenderItemWithUIElement_Effect(UIElementState uies, RenderDTO renderItem)
        {
            if (_renderTree == null || _renderTree.Count == 0)
            {
                return(true);
            }

            UIElementState uiesParent = AppDatabase.Current.RetrieveUIElementState(renderItem.EffectDTO.Grouping1).First();

            string[] parts = uies.udfString1.Split("|".ToCharArray());


            //child got changed so re update from the parent where applicable
            renderItem.EffectDTO.IsRenderable = uies.IsRenderable;

            renderItem.EffectDTO.MainTranslation = new Vector3(
                (float)uiesParent.Left,
                (float)uiesParent.Top,
                (float)0);

            renderItem.EffectDTO.MainScale = new Vector3(
                (float)uiesParent.Scale,
                (float)uiesParent.Scale,
                0);

            if (string.IsNullOrEmpty(uies.Grouping2))
            {
                if (renderItem.EffectDTO.Effect != null)
                {
                    RenderDTO renderItemParent = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.Grouping1).First();
                    renderItem.EffectDTO.Effect.SetInputEffect(0, renderItemParent.EffectDTO.Effect, true);
                }
            }
            else
            {
                if (renderItem.EffectDTO.Effect != null)
                {
                    RenderDTO renderItemParent = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.Grouping2).First();
                    renderItem.EffectDTO.Effect.SetInputEffect(0, renderItemParent.EffectDTO.Effect, true);
                }
            }

            //SharpDX.Direct2D1.Effects.Blend

            //now just update child based on new values from child UIElementState
            switch (parts[0])
            {
            case "SharpDX.Direct2D1.Effects.AffineTransform2D": break;

            case "SharpDX.Direct2D1.Effects.ArithmeticComposite": break;

            case "SharpDX.Direct2D1.Effects.Atlas": break;

            case "SharpDX.Direct2D1.Effects.BitmapSourceEffect":
                #region bitmap source
                var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId);

                ((SharpDX.Direct2D1.Effects.BitmapSource)renderItem.EffectDTO.Effect).SetValueByName("WicBitmapSource", asset.Item1);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Blend": break;

            case "SharpDX.Direct2D1.Effects.Border": break;

            case "SharpDX.Direct2D1.Effects.Brightness":
                #region brightness
                ((SharpDX.Direct2D1.Effects.Brightness)renderItem.EffectDTO.Effect).WhitePoint = new Vector2((float)uies.udfDouble1, (float)uies.udfDouble2);
                ((SharpDX.Direct2D1.Effects.Brightness)renderItem.EffectDTO.Effect).BlackPoint = new Vector2((float)uies.udfDouble3, (float)uies.udfDouble4);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.ColorManagement": break;

            case "SharpDX.Direct2D1.Effects.ColorMatrix": break;

            case "SharpDX.Direct2D1.Effects.Composite":
                #region composite
                if (!string.IsNullOrEmpty(uies.Grouping2) && !string.IsNullOrEmpty(uies.udfString2))
                {
                    //renderItem.EffectDTO.Effect.SetValue(0, (float)uies.udfDouble1);

                    if (renderItem.EffectDTO.Effect == null)
                    {
                        renderItem.EffectDTO.Effect = new SharpDX.Direct2D1.Effects.Composite(_deviceManager.ContextDirect2D);
                    }
                    //else
                    //{
                    //    renderItem.EffectDTO.Effect.Dispose();
                    //    renderItem.EffectDTO.Effect = new SharpDX.Direct2D1.Effects.Composite(_deviceManager.ContextDirect2D);
                    //}

                    if (!string.IsNullOrEmpty(uies.Grouping2))
                    {
                        var found = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.Grouping2);
                        if (found != null && found.Count() > 0)
                        {
                            renderItem.EffectDTO.Effect.SetInputEffect(0, found.First().EffectDTO.Effect, true);
                        }
                    }

                    if (!string.IsNullOrEmpty(uies.udfString2))
                    {
                        var found = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.udfString2);
                        if (found != null && found.Count() > 0)
                        {
                            renderItem.EffectDTO.Effect.SetInputEffect(1, found.First().EffectDTO.Effect, true);
                        }
                    }
                }
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.ConvolveMatrix":
                #region convolve matrix
                if (!string.IsNullOrEmpty(uies.udfString2))     //matrix
                {
                    var matrixParts = uies.udfString2.Split("|".ToCharArray());
                    if (matrixParts.Length == 9)
                    {
                        float[] matrix = new float[9] {
                            float.Parse(matrixParts[0]),
                            float.Parse(matrixParts[1]),
                            float.Parse(matrixParts[2]),
                            float.Parse(matrixParts[3]),
                            float.Parse(matrixParts[4]),
                            float.Parse(matrixParts[5]),
                            float.Parse(matrixParts[6]),
                            float.Parse(matrixParts[7]),
                            float.Parse(matrixParts[8]),
                        };
                        ((SharpDX.Direct2D1.Effects.ConvolveMatrix)renderItem.EffectDTO.Effect).KernelMatrix = matrix;
                    }
                }

                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Crop":
                #region Crop
                ((SharpDX.Direct2D1.Effects.Crop)renderItem.EffectDTO.Effect).Rectangle = new Vector4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.DirectionalBlur":
                #region directional blur
                renderItem.EffectDTO.Effect.SetValueByName("StandardDeviation", (float)uies.udfDouble1);
                renderItem.EffectDTO.Effect.SetValueByName("Angle", (float)uies.udfDouble2);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.DiscreteTransfer": break;

            case "SharpDX.Direct2D1.Effects.DisplacementMap": break;

            case "SharpDX.Direct2D1.Effects.DistantDiffuse": break;

            case "SharpDX.Direct2D1.Effects.DistantSpecular": break;

            case "SharpDX.Direct2D1.Effects.DpiCompensation": break;

            case "SharpDX.Direct2D1.Effects.Flood":
                #region flood
                ((SharpDX.Direct2D1.Effects.Flood)renderItem.EffectDTO.Effect).Color = new Color4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.GammaTransfer": break;

            case "SharpDX.Direct2D1.Effects.GaussianBlur":
                #region gaussian blur
                renderItem.EffectDTO.Effect.SetValueByName("StandardDeviation", (float)uies.udfDouble1);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Histogram": break;

            case "SharpDX.Direct2D1.Effects.HueRotate":
                #region hue rotate
                renderItem.EffectDTO.Effect.SetValue(0, (float)uies.udfDouble1);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.LinearTransfer": break;

            case "SharpDX.Direct2D1.Effects.LuminanceToAlpha": break;

            case "SharpDX.Direct2D1.Effects.Morphology": break;

            case "SharpDX.Direct2D1.Effects.NamespaceDoc": break;

            case "SharpDX.Direct2D1.Effects.PointDiffuse": break;

            case "SharpDX.Direct2D1.Effects.PointSpecular": break;

            case "SharpDX.Direct2D1.Effects.Premultiply": break;

            case "SharpDX.Direct2D1.Effects.Saturation":
                #region saturation
                renderItem.EffectDTO.Effect.SetValue(0, (float)uies.udfDouble1);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Scale":
                #region scale
                SharpDX.Direct2D1.Effects.Scale ef = (SharpDX.Direct2D1.Effects.Scale)renderItem.EffectDTO.Effect;
                ef.ScaleAmount = new Vector2((float)uies.udfDouble1, (float)uies.udfDouble2);
                ef.CenterPoint = new Vector2((float)uies.udfDouble3, (float)uies.udfDouble4);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Shadow":
                #region shadow
                renderItem.EffectDTO.Effect.SetValue(0, (float)uies.udfDouble1);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.SpotDiffuse": break;

            case "SharpDX.Direct2D1.Effects.SpotSpecular": break;

            case "SharpDX.Direct2D1.Effects.TableTransfer": break;

            case "SharpDX.Direct2D1.Effects.Tile":
                #region tile
                ((SharpDX.Direct2D1.Effects.Tile)renderItem.EffectDTO.Effect).Rectangle = new Vector4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Transform3D": break;

            case "SharpDX.Direct2D1.Effects.Turbulence": break;

            case "SharpDX.Direct2D1.Effects.UnPremultiply": break;
            }

            return(true);
        }
        private async Task <RenderDTO> CreateRenderItemWithUIElement_Effect(UIElementState uies, string effectClass, RenderDTO parentRenderTreeItem)
        {
            EffectDTO edto = new EffectDTO();

            edto.IsRenderable = uies.IsRenderable;
            edto.AggregateId  = uies.AggregateId;
            edto.Grouping1    = uies.Grouping1;
            if (parentRenderTreeItem != null)
            {
                edto.MainTranslation = parentRenderTreeItem.EffectDTO.MainTranslation;
                edto.MainScale       = parentRenderTreeItem.EffectDTO.MainScale;
            }
            else
            {
                edto.MainTranslation = new Vector3(0);
                edto.MainScale       = new Vector3(1);
            }

            switch (effectClass)
            {
            case "SharpDX.Direct2D1.Effects.AffineTransform2D": break;

            case "SharpDX.Direct2D1.Effects.ArithmeticComposite": break;

            case "SharpDX.Direct2D1.Effects.Atlas": break;

            case "SharpDX.Direct2D1.Effects.BitmapSourceEffect":
                #region bitmap source

                try
                {
                    if (uies.udfString2 == "PicturesLibrary")
                    {
                        var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId, path : "PicturesLibrary");

                        edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                        edto.Effect.SetValueByName("WicBitmapSource", asset.Item1);
                        uies.Width  = asset.Item2.Width;
                        uies.Height = asset.Item2.Height;
                    }
                    else if (uies.udfString2 == "PublicPicturesLibrary")
                    {
                        var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId, path : "PublicPicturesLibrary");

                        edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                        edto.Effect.SetValueByName("WicBitmapSource", asset.Item1);
                        uies.Width  = asset.Item2.Width;
                        uies.Height = asset.Item2.Height;
                    }
                    else
                    {
                        var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId);

                        edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                        edto.Effect.SetValueByName("WicBitmapSource", asset.Item1);
                        uies.Width  = asset.Item2.Width;
                        uies.Height = asset.Item2.Height;
                    }
                }
                catch {
                    var asset = LoadAssetAsync(_deviceManager.WICFactory, "Assets\\StartDemo\\Backgrounds\\green1.jpg", uies.AggregateId);

                    edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                    edto.Effect.SetValueByName("WicBitmapSource", asset.Result.Item1);
                    uies.Width  = asset.Result.Item2.Width;
                    uies.Height = asset.Result.Item2.Height;
                }


                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Blend": break;

            case "SharpDX.Direct2D1.Effects.Border": break;

            case "SharpDX.Direct2D1.Effects.Brightness":
                #region brightness
                edto.Effect = new SharpDX.Direct2D1.Effects.Brightness(_deviceManager.ContextDirect2D);
                ((SharpDX.Direct2D1.Effects.Brightness)edto.Effect).WhitePoint = new Vector2((float)uies.udfDouble1, (float)uies.udfDouble2);
                ((SharpDX.Direct2D1.Effects.Brightness)edto.Effect).BlackPoint = new Vector2((float)uies.udfDouble3, (float)uies.udfDouble4);

                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.ColorManagement": break;

            case "SharpDX.Direct2D1.Effects.ColorMatrix": break;

            case "SharpDX.Direct2D1.Effects.Composite":
                #region composite
                if (!string.IsNullOrEmpty(uies.Grouping2) && !string.IsNullOrEmpty(uies.udfString2))
                {
                    edto.Effect = new SharpDX.Direct2D1.Effects.Composite(_deviceManager.ContextDirect2D);

                    if (!string.IsNullOrEmpty(uies.Grouping2))
                    {
                        var found = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.Grouping2);
                        if (found != null && found.Count() > 0)
                        {
                            edto.Effect.SetInputEffect(0, found.First().EffectDTO.Effect, true);
                        }
                        else
                        {
                            edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                        }
                    }
                    else
                    {
                        edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                    }

                    if (!string.IsNullOrEmpty(uies.udfString2))
                    {
                        var found = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.udfString2);
                        if (found != null && found.Count() > 0)
                        {
                            edto.Effect.SetInputEffect(1, found.First().EffectDTO.Effect, true);
                        }
                        else
                        {
                            edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                        }
                    }
                    else
                    {
                        edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                    }
                }
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.ConvolveMatrix":
                #region convolve matrix

                edto.Effect = new SharpDX.Direct2D1.Effects.ConvolveMatrix(_deviceManager.ContextDirect2D);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);

                if (!string.IsNullOrEmpty(uies.udfString2))     //matrix
                {
                    var parts = uies.udfString2.Split("|".ToCharArray());
                    if (parts.Length == 9)
                    {
                        float[] matrix = new float[9] {
                            float.Parse(parts[0]),
                            float.Parse(parts[1]),
                            float.Parse(parts[2]),
                            float.Parse(parts[3]),
                            float.Parse(parts[4]),
                            float.Parse(parts[5]),
                            float.Parse(parts[6]),
                            float.Parse(parts[7]),
                            float.Parse(parts[8]),
                        };
                        ((SharpDX.Direct2D1.Effects.ConvolveMatrix)edto.Effect).KernelMatrix = matrix;
                    }
                    //edto.Effect.SetInput(0, parentRenderTreeItem.EffectDTO.Effect.Output, true);
                    //var kernelmatrix = new float[9] { 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f };
                    //((SharpDX.Direct2D1.Effects.ConvolveMatrix)edto.Effect).KernelMatrix = kernelmatrix;
                }
                else
                {
                    ((SharpDX.Direct2D1.Effects.ConvolveMatrix)edto.Effect).KernelMatrix = new float[9] {
                        0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f
                    };
                }


                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Crop":
                #region crop
                edto.Effect = new SharpDX.Direct2D1.Effects.Crop(_deviceManager.ContextDirect2D);
                ((SharpDX.Direct2D1.Effects.Crop)edto.Effect).Rectangle = new Vector4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.DirectionalBlur":
                #region directional blur
                edto.Effect = new SharpDX.Direct2D1.Effects.DirectionalBlur(_deviceManager.ContextDirect2D);
                edto.Effect.SetValueByName("StandardDeviation", (float)uies.udfDouble1);
                edto.Effect.SetValueByName("Angle", (float)uies.udfDouble2);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.DiscreteTransfer": break;

            case "SharpDX.Direct2D1.Effects.DisplacementMap": break;

            case "SharpDX.Direct2D1.Effects.DistantDiffuse": break;

            case "SharpDX.Direct2D1.Effects.DistantSpecular": break;

            case "SharpDX.Direct2D1.Effects.DpiCompensation": break;

            case "SharpDX.Direct2D1.Effects.Flood":
                #region flood
                edto.Effect = new SharpDX.Direct2D1.Effects.Flood(_deviceManager.ContextDirect2D);
                ((SharpDX.Direct2D1.Effects.Flood)edto.Effect).Color = new Color4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.GammaTransfer": break;

            case "SharpDX.Direct2D1.Effects.GaussianBlur":
                #region gaussian blur
                edto.Effect = new SharpDX.Direct2D1.Effects.GaussianBlur(_deviceManager.ContextDirect2D);
                edto.Effect.SetValueByName("StandardDeviation", (float)uies.udfDouble1);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Histogram": break;

            case "SharpDX.Direct2D1.Effects.HueRotate":
                #region hue rotate
                edto.Effect = new SharpDX.Direct2D1.Effects.HueRotation(_deviceManager.ContextDirect2D);
                edto.Effect.SetValue(0, (float)uies.udfDouble1);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.LinearTransfer": break;

            case "SharpDX.Direct2D1.Effects.LuminanceToAlpha": break;

            case "SharpDX.Direct2D1.Effects.Morphology": break;

            case "SharpDX.Direct2D1.Effects.NamespaceDoc": break;

            case "SharpDX.Direct2D1.Effects.PointDiffuse": break;

            case "SharpDX.Direct2D1.Effects.PointSpecular": break;

            case "SharpDX.Direct2D1.Effects.Premultiply": break;

            case "SharpDX.Direct2D1.Effects.Saturation":
                #region saturation
                edto.Effect = new SharpDX.Direct2D1.Effects.Saturation(_deviceManager.ContextDirect2D);
                edto.Effect.SetValue(0, (float)uies.udfDouble1);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Scale":
                #region scale

                SharpDX.Direct2D1.Effects.Scale ef = new SharpDX.Direct2D1.Effects.Scale(_deviceManager.ContextDirect2D);
                ef.BorderMode  = SharpDX.Direct2D1.BorderMode.Soft;
                ef.Cached      = false;
                ef.ScaleAmount = new Vector2((float)uies.udfDouble1, (float)uies.udfDouble2);
                ef.CenterPoint = new Vector2((float)uies.udfDouble3, (float)uies.udfDouble4);
                edto.Effect    = ef;

                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Shadow":
                #region shadow
                edto.Effect = new SharpDX.Direct2D1.Effects.Shadow(_deviceManager.ContextDirect2D);
                edto.Effect.SetValue(0, (float)uies.udfDouble1);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.SpotDiffuse": break;

            case "SharpDX.Direct2D1.Effects.SpotSpecular": break;

            case "SharpDX.Direct2D1.Effects.TableTransfer": break;

            case "SharpDX.Direct2D1.Effects.Tile":
                #region tile
                edto.Effect = new SharpDX.Direct2D1.Effects.Tile(_deviceManager.ContextDirect2D);
                ((SharpDX.Direct2D1.Effects.Tile)edto.Effect).Rectangle = new Vector4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                #endregion
                break;

            case "SharpDX.Direct2D1.Effects.Transform3D": break;

            case "SharpDX.Direct2D1.Effects.Turbulence": break;

            case "SharpDX.Direct2D1.Effects.UnPremultiply": break;
            }


            RenderDTO _newRenderDto;

            if (parentRenderTreeItem != null)
            {
                _newRenderDto = new RenderDTO()
                {
                    EffectDTO = edto, Type = eRenderType.Effect, Order = parentRenderTreeItem.Order
                }
            }
            ;
            else
            {
                _newRenderDto = new RenderDTO()
                {
                    EffectDTO = edto, Type = eRenderType.Effect, Order = 1
                }
            };

            _renderTree.Add(_newRenderDto);

            return(_newRenderDto);
        }
        private async Task<RenderDTO> CreateRenderItemWithUIElement_Effect(UIElementState uies, string effectClass, RenderDTO parentRenderTreeItem)
        {

            EffectDTO edto = new EffectDTO();
            edto.IsRenderable = uies.IsRenderable;
            edto.AggregateId = uies.AggregateId;
            edto.Grouping1 = uies.Grouping1;
            if (parentRenderTreeItem != null)
            {
                edto.MainTranslation = parentRenderTreeItem.EffectDTO.MainTranslation;
                edto.MainScale = parentRenderTreeItem.EffectDTO.MainScale;
            }
            else
            {
                edto.MainTranslation = new Vector3(0);
                edto.MainScale = new Vector3(1);
            }

            switch (effectClass)
            {
                case "SharpDX.Direct2D1.Effects.AffineTransform2D": break;
                case "SharpDX.Direct2D1.Effects.ArithmeticComposite": break;
                case "SharpDX.Direct2D1.Effects.Atlas": break;
                case "SharpDX.Direct2D1.Effects.BitmapSourceEffect":
                    #region bitmap source

                    try
                    {

                        if (uies.udfString2 == "PicturesLibrary")
                        {
                            var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId, path: "PicturesLibrary");
                            edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                            edto.Effect.SetValueByName("WicBitmapSource", asset.Item1);
                            uies.Width = asset.Item2.Width;
                            uies.Height = asset.Item2.Height;
                        }
                        else if (uies.udfString2 == "PublicPicturesLibrary")
                        {
                            var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId, path: "PublicPicturesLibrary");
                            edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                            edto.Effect.SetValueByName("WicBitmapSource", asset.Item1);
                            uies.Width = asset.Item2.Width;
                            uies.Height = asset.Item2.Height;
                        }
                        else
                        {
                            var asset = await LoadAssetAsync(_deviceManager.WICFactory, uies.udfString1, uies.AggregateId);
                            edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                            edto.Effect.SetValueByName("WicBitmapSource", asset.Item1);
                            uies.Width = asset.Item2.Width;
                            uies.Height = asset.Item2.Height;
                        }
                    }
                    catch {
                        var asset = LoadAssetAsync(_deviceManager.WICFactory, "Assets\\StartDemo\\Backgrounds\\green1.jpg", uies.AggregateId);
                        
                        edto.Effect = new SharpDX.Direct2D1.Effects.BitmapSource(_deviceManager.ContextDirect2D);
                        edto.Effect.SetValueByName("WicBitmapSource", asset.Result.Item1);
                        uies.Width = asset.Result.Item2.Width;
                        uies.Height = asset.Result.Item2.Height;
                    }

                    
                    #endregion
                    break;
                case "SharpDX.Direct2D1.Effects.Blend": break;
                case "SharpDX.Direct2D1.Effects.Border": break;
                case "SharpDX.Direct2D1.Effects.Brightness":
                    #region brightness
                    edto.Effect = new SharpDX.Direct2D1.Effects.Brightness(_deviceManager.ContextDirect2D);
                    ((SharpDX.Direct2D1.Effects.Brightness)edto.Effect).WhitePoint = new Vector2((float)uies.udfDouble1, (float)uies.udfDouble2);
                    ((SharpDX.Direct2D1.Effects.Brightness)edto.Effect).BlackPoint = new Vector2((float)uies.udfDouble3, (float)uies.udfDouble4);

                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion
                    break;
                case "SharpDX.Direct2D1.Effects.ColorManagement": break;
                case "SharpDX.Direct2D1.Effects.ColorMatrix": break;
                case "SharpDX.Direct2D1.Effects.Composite": 
                    #region composite
                    if (!string.IsNullOrEmpty(uies.Grouping2) && !string.IsNullOrEmpty(uies.udfString2))
                    {
                        edto.Effect = new SharpDX.Direct2D1.Effects.Composite(_deviceManager.ContextDirect2D);

                        if (!string.IsNullOrEmpty(uies.Grouping2))
                        {
                            var found = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.Grouping2);
                            if (found != null && found.Count() > 0)
                                edto.Effect.SetInputEffect(0, found.First().EffectDTO.Effect, true);
                            else
                                edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                        }
                        else edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);

                        if (!string.IsNullOrEmpty(uies.udfString2))
                        {
                            var found = _renderTree.Where(x => x.EffectDTO != null && x.EffectDTO.AggregateId == uies.udfString2);
                            if (found != null && found.Count() > 0)
                                edto.Effect.SetInputEffect(1, found.First().EffectDTO.Effect, true);
                            else
                                edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                        }
                        else edto.Effect.SetInputEffect(1, parentRenderTreeItem.EffectDTO.Effect, true);
                    }
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.ConvolveMatrix":                     
                    #region convolve matrix
                    
                    edto.Effect = new SharpDX.Direct2D1.Effects.ConvolveMatrix(_deviceManager.ContextDirect2D);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);

                    if (!string.IsNullOrEmpty(uies.udfString2)) //matrix
                    {
                        var parts = uies.udfString2.Split("|".ToCharArray());
                        if (parts.Length == 9)
                        {
                            float[] matrix = new float[9]{
                                float.Parse(parts[0]),
                                float.Parse(parts[1]),
                                float.Parse(parts[2]),
                                float.Parse(parts[3]),
                                float.Parse(parts[4]),
                                float.Parse(parts[5]),
                                float.Parse(parts[6]),
                                float.Parse(parts[7]),
                                float.Parse(parts[8]),
                            };
                            ((SharpDX.Direct2D1.Effects.ConvolveMatrix)edto.Effect).KernelMatrix = matrix;
                        }
                        //edto.Effect.SetInput(0, parentRenderTreeItem.EffectDTO.Effect.Output, true);
                        //var kernelmatrix = new float[9] { 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f };
                        //((SharpDX.Direct2D1.Effects.ConvolveMatrix)edto.Effect).KernelMatrix = kernelmatrix;
                    }
                    else
                    {
                        ((SharpDX.Direct2D1.Effects.ConvolveMatrix)edto.Effect).KernelMatrix = new float[9] { 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f };
                    }
                        
                    
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.Crop": 
                    #region crop
                    edto.Effect = new SharpDX.Direct2D1.Effects.Crop(_deviceManager.ContextDirect2D);
                    ((SharpDX.Direct2D1.Effects.Crop)edto.Effect).Rectangle  = new Vector4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.DirectionalBlur":
                    #region directional blur
                    edto.Effect = new SharpDX.Direct2D1.Effects.DirectionalBlur(_deviceManager.ContextDirect2D);
                    edto.Effect.SetValueByName("StandardDeviation", (float)uies.udfDouble1);
                    edto.Effect.SetValueByName("Angle", (float)uies.udfDouble2);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion
                    break;
                case "SharpDX.Direct2D1.Effects.DiscreteTransfer": break;
                case "SharpDX.Direct2D1.Effects.DisplacementMap": break;
                case "SharpDX.Direct2D1.Effects.DistantDiffuse": break;
                case "SharpDX.Direct2D1.Effects.DistantSpecular": break;
                case "SharpDX.Direct2D1.Effects.DpiCompensation": break;
                case "SharpDX.Direct2D1.Effects.Flood": 
                    #region flood
                    edto.Effect = new SharpDX.Direct2D1.Effects.Flood(_deviceManager.ContextDirect2D);
                    ((SharpDX.Direct2D1.Effects.Flood)edto.Effect).Color = new Color4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.GammaTransfer": break;
                case "SharpDX.Direct2D1.Effects.GaussianBlur":
                    #region gaussian blur
                    edto.Effect = new SharpDX.Direct2D1.Effects.GaussianBlur(_deviceManager.ContextDirect2D);
                    edto.Effect.SetValueByName("StandardDeviation", (float)uies.udfDouble1);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion
                    break;
                case "SharpDX.Direct2D1.Effects.Histogram": break;
                case "SharpDX.Direct2D1.Effects.HueRotate": 
                    #region hue rotate
                    edto.Effect = new SharpDX.Direct2D1.Effects.HueRotation(_deviceManager.ContextDirect2D);
                    edto.Effect.SetValue(0, (float)uies.udfDouble1);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.LinearTransfer": break;
                case "SharpDX.Direct2D1.Effects.LuminanceToAlpha": break;
                case "SharpDX.Direct2D1.Effects.Morphology": break;
                case "SharpDX.Direct2D1.Effects.NamespaceDoc": break;
                case "SharpDX.Direct2D1.Effects.PointDiffuse": break;
                case "SharpDX.Direct2D1.Effects.PointSpecular": break;
                case "SharpDX.Direct2D1.Effects.Premultiply": break;
                case "SharpDX.Direct2D1.Effects.Saturation":
                    #region saturation
                    edto.Effect = new SharpDX.Direct2D1.Effects.Saturation(_deviceManager.ContextDirect2D);
                    edto.Effect.SetValue(0, (float)uies.udfDouble1);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion
                    break;
                case "SharpDX.Direct2D1.Effects.Scale": 
                    #region scale

                    SharpDX.Direct2D1.Effects.Scale ef = new SharpDX.Direct2D1.Effects.Scale(_deviceManager.ContextDirect2D);
                    ef.BorderMode = SharpDX.Direct2D1.BorderMode.Soft;
                    ef.Cached = false;
                    ef.ScaleAmount = new Vector2((float)uies.udfDouble1, (float)uies.udfDouble2);
                    ef.CenterPoint = new Vector2((float)uies.udfDouble3, (float)uies.udfDouble4);
                    edto.Effect = ef;

                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion
                    break;
                case "SharpDX.Direct2D1.Effects.Shadow": 
                    #region shadow
                    edto.Effect = new SharpDX.Direct2D1.Effects.Shadow(_deviceManager.ContextDirect2D);
                    edto.Effect.SetValue(0, (float)uies.udfDouble1);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.SpotDiffuse": break;
                case "SharpDX.Direct2D1.Effects.SpotSpecular": break;
                case "SharpDX.Direct2D1.Effects.TableTransfer": break;
                case "SharpDX.Direct2D1.Effects.Tile": 
                    #region tile
                    edto.Effect = new SharpDX.Direct2D1.Effects.Tile(_deviceManager.ContextDirect2D);
                    ((SharpDX.Direct2D1.Effects.Tile)edto.Effect).Rectangle = new Vector4((float)uies.udfDouble1, (float)uies.udfDouble2, (float)uies.udfDouble3, (float)uies.udfDouble4);
                    edto.Effect.SetInputEffect(0, parentRenderTreeItem.EffectDTO.Effect, true);
                    #endregion                    
                    break;
                case "SharpDX.Direct2D1.Effects.Transform3D": break;
                case "SharpDX.Direct2D1.Effects.Turbulence": break;
                case "SharpDX.Direct2D1.Effects.UnPremultiply": break;

            }


            RenderDTO _newRenderDto;

            if(parentRenderTreeItem!=null)
                _newRenderDto = new RenderDTO() { EffectDTO = edto, Type = eRenderType.Effect , Order = parentRenderTreeItem.Order };
            else
                _newRenderDto = new RenderDTO() { EffectDTO = edto, Type = eRenderType.Effect, Order = 1};

            _renderTree.Add(_newRenderDto);

            return _newRenderDto;
        }