private void EnableRenderer(bool cameraHigher)
        {
            try {
                if (_imageEx != null)
                {
                    return;
                }

                var renderer = new DarkKn5ObjectRenderer(Model.Car);
                renderer.SelectSkin(null);
                renderer.Initialize();
                renderer.SetCameraHigher = cameraHigher;
                SetRendererSize(renderer);
                renderer.Draw();
                Model.Renderer = renderer;

                _imageEx     = new D3DImageEx();
                Scene.Source = _imageEx;
                _setCount    = 0;
                _lastTarget  = IntPtr.Zero;

                CompositionTarget.Rendering += OnRendering;
                VisibilityAnimation.SetVisible(Scene, true);
            } catch (Exception e) {
                MessageBox.Show(e.ToString());
            }
        }
        private async Task EnableRenderer()
        {
            if (!_loaded)
            {
                await DisableRenderer();

                return;
            }

            try {
                _carId = ValuesStorage.Storage.GetObject <JObject>("__QuickDrive_Main")?.GetStringValueOnly("CarId") ?? @"abarth500";

                var car = CarsManager.Instance.GetById(_carId);
                if (_imageEx != null || car == null)
                {
                    return;
                }

                Progress.IsActive = true;
                var panoramaBg = new Uri("pack://application:,,,/Content Manager;component/Assets/Img/ShowroomPanoramaExample.jpg", UriKind.Absolute);
                var renderer   = new DarkKn5ObjectRenderer(CarDescription.FromDirectory(car.Location, car.AcdData))
                {
                    WpfMode              = true,
                    UseMsaa              = false,
                    VisibleUi            = false,
                    TryToGuessCarLights  = false,
                    LoadCarLights        = false,
                    AnyGround            = true,
                    BackgroundColor      = System.Drawing.Color.FromArgb(0x444444),
                    BackgroundBrightness = 1f,
                    LightBrightness      = 0f,
                    AmbientDown          = System.Drawing.Color.FromArgb(0x444444),
                    AmbientUp            = System.Drawing.Color.FromArgb(0xffffff),
                    AmbientBrightness    = 4f,
                    Light                       = Vector3.Normalize(new Vector3(-0.1f, 10, -0.1f)),
                    ShadowMapSize               = 512,
                    EnableShadows               = false,
                    AutoRotate                  = false,
                    AutoAdjustTarget            = false,
                    UseDof                      = true,
                    UseAccumulationDof          = true,
                    AccumulationDofApertureSize = 0f,
                    AccumulationDofIterations   = 20,
                    AccumulationDofBokeh        = false,
                    UseFxaa                     = false,
                    UseSslr                     = true,
                    UseAo                       = false,
                    UseDither                   = true,
                    MaterialsReflectiveness     = 1.5f,
                    UseCustomReflectionCubemap  = true,
                    CustomReflectionCubemap     = Application.GetResourceStream(panoramaBg)?.Stream.ReadAsBytesAndDispose(),
                    CubemapAmbientWhite         = false,
                    CubemapAmbient              = 0.6f,
                };

                var data = car.AcdData;
                if (data != null)
                {
                    var carBasic = data.GetIniFile("car.ini")["BASIC"];
                    _carLength = carBasic.GetVector3F("INERTIA").ToVector3().Z;

                    var suspensions      = data.GetIniFile("suspensions.ini");
                    var suspensionsBasic = suspensions["BASIC"];
                    var go     = carBasic.GetVector3F("GRAPHICS_OFFSET").ToVector3();
                    var center = suspensionsBasic.GetFloat("WHEELBASE", 2.5f) * suspensionsBasic.GetFloat("CG_LOCATION", 0.5f);
                    _carOffset = new Vector3(go.X, go.Y - suspensions["REAR"].GetFloat("BASEY", 0.25f), go.Z + center);
                    _lookAt    = new Vector3(go.X, go.Y - suspensions["FRONT"].GetFloat("BASEY", 0.25f), go.Z + center);
                }

                await Task.Run(() => renderer.Initialize());

                renderer.SetCameraHigher = false;
                SetRendererSize(renderer);

                if (renderer.CarNode != null)
                {
                    // renderer.SelectSkin(car.SelectedSkin?.Id);
                    renderer.CarNode.BrakeLightsEnabled = true;
                    renderer.CarNode.CockpitLrActive    = true;
                    renderer.CarNode.CurrentLod         = renderer.CarNode.LodsCount > 1 ? 1 : 0;
                }

                await Task.Run(() => renderer.Draw());

                _renderer = renderer;

                _imageEx     = new D3DImageEx();
                Scene.Source = _imageEx;

                _setCount   = 0;
                _lastTarget = IntPtr.Zero;

                CompositionTargetEx.Rendering += OnRendering;
                UpdateCamera();
            } catch (Exception e) {
                NonfatalError.Notify("Can’t display chase camera preview", e);
            } finally {
                Progress.IsActive = false;
            }
        }