private static SaveableData ToSaveableData(DarkRendererSettings settings, DarkKn5ObjectRenderer renderer) { var data = SaveHelper <SaveableData> .LoadSerialized(settings.ExportToPresetData()); if (data == null) { Logging.Unexpected(); return(null); } data.CameraPosition = Coordinates.Create(renderer.Camera.Position).ToArray(); data.CameraLookAt = Coordinates.Create(renderer.CameraOrbit?.Target ?? renderer.Camera.Look).ToArray(); data.CameraFov = renderer.Camera.FovY.ToDegrees(); data.AlignCar = false; data.AlignCameraHorizontally = false; data.AlignCameraVertically = false; var car = renderer.CarNode; if (car != null) { data.SteerDeg = car.SteerDeg; data.LeftDoorOpen = car.LeftDoorOpen; data.RightDoorOpen = car.RightDoorOpen; data.HeadlightsEnabled = car.HeadlightsEnabled; data.BrakeLightsEnabled = car.BrakeLightsEnabled; data.ShowDriver = car.IsDriverVisible; } return(data); }
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()); } }
public CmPreviewsSettings(DarkKn5ObjectRenderer renderer) : base(renderer, DefaultPresetableKeyValue) { CameraPosition.PropertyChanged += OnCameraCoordinatePropertyChanged; CameraLookAt.PropertyChanged += OnCameraCoordinatePropertyChanged; Renderer.CameraMoved += OnCameraMoved; if (LockCamera) { Renderer.LockCamera = true; } }
public CmPreviewsSettings(DarkKn5ObjectRenderer renderer) : base(renderer, CmPreviewsSettingsValues.DefaultPresetableKeyValue) { renderer.VisibleUi = false; if (LockCamera) { Renderer.LockCamera = true; } SetCarAnimationsListeners(); ExtraAnimationEntries.ItemPropertyChanged += OnItemPropertyChanged; }
public static void Transfer(DarkRendererSettings settings, DarkKn5ObjectRenderer renderer) { var data = ToSaveableData(settings, renderer); var filename = UserPresetsControl.GetCurrentFilename(DarkRendererSettings.DefaultPresetableKeyValue); if (filename != null) { var relative = FileUtils.GetRelativePath(filename, PresetsManager.Instance.Combine(DarkRendererSettings.DefaultPresetableKeyValue)); filename = relative == filename ? null : Path.Combine(PresetsManager.Instance.Combine(DefaultPresetableKeyValue), relative); } PresetsManager.Instance.SavePresetUsingDialog(null, DefaultPresetableKeyValue, SaveHelper <SaveableData> .Serialize(data), filename); }
public CmPreviewsTools(DarkKn5ObjectRenderer renderer, CarObject car, string skinId, string presetFilename) { _loadPreset = presetFilename; DataContext = new ViewModel(renderer, car, skinId); InputBindings.AddRange(new[] { new InputBinding(Model.PreviewSkinCommand, new KeyGesture(Key.PageUp)), new InputBinding(Model.NextSkinCommand, new KeyGesture(Key.PageDown)), new InputBinding(Model.OpenSkinDirectoryCommand, new KeyGesture(Key.F, ModifierKeys.Control)) }); InitializeComponent(); Buttons = new Button[0]; this.OnActualUnload(() => Model.Dispose()); }
private void OnLoaded(object sender, RoutedEventArgs e) { _cameraControl = new Kn5WrapperCameraControlHelper(); EnableRenderer(true); if (MainExecutingFile.Name.IndexOf("simple", StringComparison.OrdinalIgnoreCase) != -1) { using (var renderer = new DarkKn5ObjectRenderer(Model.Car)) { new BaseKn5FormWrapper(renderer, "Simple Mode", 1000, 800).Run(); } if (MainExecutingFile.Name.IndexOf("exit", StringComparison.OrdinalIgnoreCase) != -1) { Environment.Exit(0); } } }
private static async Task <IReadOnlyList <UpdatePreviewError> > Run([NotNull] CarObject car, [CanBeNull] string skinId, [CanBeNull] IReadOnlyList <ToUpdatePreview> toUpdate, [CanBeNull] string presetFilename) { var carKn5 = FileUtils.GetMainCarFilename(car.Location, car.AcdData); if (!File.Exists(carKn5)) { ModernDialog.ShowMessage("Model not found"); return(null); } await PrepareAsync(); Kn5 kn5; using (var waiting = new WaitingDialog()) { waiting.Report("Loading model…"); kn5 = await Task.Run(() => Kn5.FromFile(carKn5)); } using (var renderer = new DarkKn5ObjectRenderer(CarDescription.FromKn5(kn5, car.Location, car.AcdData)) { AutoRotate = false, AutoAdjustTarget = false, AsyncTexturesLoading = true, AsyncOverridesLoading = true, AutoloadCarLights = false, AutoloadShowroomLights = false }) { var wrapper = new CmPreviewsFormWrapper(car, renderer, skinId, presetFilename); if (toUpdate != null) { wrapper.SetToUpdate(toUpdate); } wrapper.Form.Icon = AppIconService.GetAppIcon(); wrapper.Run(); return(wrapper.GetErrors()); } }
public ViewModel([NotNull] DarkKn5ObjectRenderer renderer, [NotNull] CarObject carObject, string skinId) { if (renderer == null) { throw new ArgumentNullException(nameof(renderer)); } Renderer = renderer; Settings = new CmPreviewsSettings(renderer); renderer.PropertyChanged += Renderer_PropertyChanged; Renderer_CarNodeUpdated(); renderer.Tick += Renderer_Tick; Car = carObject; Skin = skinId == null ? Car.SelectedSkin : Car.GetSkinById(skinId); Car.SkinsManager.EnsureLoadedAsync().Forget(); Saveable = new SaveHelper <SaveableData>("__CmPreviewsTools", () => new SaveableData(), o => { }, () => { Reset(false); }); }
private CmPreviewsFormWrapper(CarObject car, DarkKn5ObjectRenderer renderer, string skinId, string presetFilename) : base(renderer, "Previews Params", CommonAcConsts.PreviewWidth, CommonAcConsts.PreviewHeight) { _tools = new CmPreviewsTools(renderer, car, skinId, presetFilename); _helper = new AttachedHelper(this, _tools); }
public async Task LamborghiniTest() { var path = Path.Combine(AcRootFinder.Find(), @"content\cars"); if (!Directory.Exists(path)) { Debug.WriteLine("REQUIRED ASSET IS MISSING, TEST CANNOT BE DONE"); return; } var cars = Directory.GetDirectories(path, "ks_lamborghini_*").Select(x => new { CarId = Path.GetFileName(x), CarDirectory = x, Kn5 = FileUtils.GetMainCarFilename(x) }).ToList(); var sw = Stopwatch.StartNew(); var i = 0; using (var e = cars.GetEnumerator()) { if (!e.MoveNext()) { return; } var first = e.Current; if (first == null) { return; } using (var renderer = new DarkKn5ObjectRenderer(new CarDescription(first.Kn5, first.CarDirectory))) { renderer.UseMsaa = false; renderer.UseFxaa = false; renderer.AutoRotate = false; renderer.SetCamera(new Vector3(3.867643f, 1.42359f, 4.70381f), new Vector3(0.0f, 0.7f, 0.5f), (float)(Math.PI / 180d * 30f)); renderer.BackgroundColor = Color.FromArgb(220, 220, 220); renderer.Initialize(); renderer.Width = CommonAcConsts.PreviewWidth; renderer.Height = CommonAcConsts.PreviewHeight; do { if (e.Current != first) { first = e.Current; if (first == null) { return; } await renderer.SetCarAsync(new CarDescription(first.Kn5, first.CarDirectory)); } Console.WriteLine(first.CarId); foreach (var skinDirectory in Directory.GetDirectories(Path.Combine(first.CarDirectory, "skins"))) { // Console.WriteLine(skinDirectory); renderer.Shot(4d, 1d, true) .HighQualityResize(new Size(CommonAcConsts.PreviewWidth, CommonAcConsts.PreviewHeight)) .Save(Path.Combine(skinDirectory, "preview_new.jpg")); renderer.SelectNextSkin(); i++; } } while (e.MoveNext()); } } Console.WriteLine($"Done: {i} skins ({sw.Elapsed.TotalMilliseconds / i:F1} ms per skin)"); }
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; } }
protected DarkRendererCars(DarkKn5ObjectRenderer renderer, string presetableKeyValue) { _presetableKeyValue = presetableKeyValue; Renderer = renderer; }
private static int MainInner(string[] args) { var options = new Options(); if (!Parser.Default.ParseArguments(args, options) || options.Help) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var form = new Form { Width = 640, Height = 480, FormBorderStyle = FormBorderStyle.FixedToolWindow, StartPosition = FormStartPosition.CenterScreen }; var message = new TextBox { Multiline = true, ReadOnly = true, BackColor = Control.DefaultBackColor, BorderStyle = BorderStyle.None, Text = options.GetUsage(), Location = new Point(20, 8), Size = new Size(form.ClientSize.Width - 40, form.ClientSize.Height - 16), Padding = new Padding(20), Font = new Font("Consolas", 9f), TabStop = false }; var button = new Button { Text = "OK", Location = new Point(form.ClientSize.Width / 2 - 80, form.ClientSize.Height - 40), Size = new Size(160, 32) }; button.Click += (sender, eventArgs) => form.Close(); form.Controls.Add(button); form.Controls.Add(message); form.ShowDialog(); return(1); } var filename = Assembly.GetEntryAssembly().Location; if (options.Verbose || filename?.IndexOf("log", StringComparison.OrdinalIgnoreCase) != -1 || filename.IndexOf("debug", StringComparison.OrdinalIgnoreCase) != -1) { var log = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) ?? "", "Log.txt"); try { File.WriteAllBytes(log, new byte[0]); RenderLogging.Initialize(log); } catch (Exception e) { MessageBox.Show("Can’t setup logging: " + e, @"Oops!", MessageBoxButtons.OK); } } var inputItems = options.Items; #if DEBUG inputItems = inputItems.Any() ? inputItems : new[] { DebugHelper.GetCarKn5(), DebugHelper.GetShowroomKn5() }; #endif if (inputItems.Count == 0) { var dialog = new OpenFileDialog { Title = @"Select KN5", Filter = @"KN5 Files (*.kn5)|*.kn5" }; if (dialog.ShowDialog() != DialogResult.OK) { return(2); } inputItems = new[] { dialog.FileName }; } var kn5File = inputItems.ElementAtOrDefault(0); if (kn5File == null || !File.Exists(kn5File)) { MessageBox.Show(@"File is missing", @"Custom Showroom", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(3); } if (options.Mode == Mode.UpdateAmbientShadows) { MessageBox.Show("Started"); var sw = Stopwatch.StartNew(); UpdateAmbientShadows(kn5File); MessageBox.Show($@"Time taken: {sw.Elapsed.TotalSeconds:F2}s"); return(0); } if (options.Mode == Mode.ExtractUv) { if (string.IsNullOrWhiteSpace(options.ExtractUvTexture)) { MessageBox.Show(@"Texture to extract is not specified", @"Custom Showroom", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(4); } ExtractUv(kn5File, options.ExtractUvTexture); return(0); } var showroomKn5File = inputItems.ElementAtOrDefault(1); if (showroomKn5File == null && options.ShowroomId != null) { showroomKn5File = Path.Combine( Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(kn5File))) ?? "", "showroom", options.ShowroomId, options.ShowroomId + ".kn5"); } if (!File.Exists(showroomKn5File)) { showroomKn5File = null; } if (options.Mode == Mode.Lite) { using (var renderer = new ToolsKn5ObjectRenderer(new CarDescription(kn5File))) { renderer.UseMsaa = options.UseMsaa; renderer.UseFxaa = options.UseFxaa; renderer.UseSsaa = options.UseSsaa; renderer.MagickOverride = options.MagickOverride; new LiteShowroomWrapper(renderer).Run(); } } else if (options.Mode == Mode.Dark) { using (var renderer = new DarkKn5ObjectRenderer(new CarDescription(kn5File), showroomKn5File)) { renderer.UseSprite = true; renderer.VisibleUi = true; // renderer.FlatMirror = true; renderer.UseMsaa = options.UseMsaa; renderer.UseFxaa = options.UseFxaa; renderer.UseSsaa = options.UseSsaa; renderer.UseAo = true; renderer.UseSslr = true; renderer.AoDebug = true; renderer.AoType = AoType.SsaoAlt; renderer.MagickOverride = options.MagickOverride; new LiteShowroomWrapper(renderer) { ReplaceableShowroom = true }.Run(); } } else if (options.Mode == Mode.TrackMap) { using (var renderer = new TrackMapPreparationRenderer(kn5File)) { renderer.UseFxaa = options.UseFxaa; renderer.SetFilter(new TrackMapRendererFilter()); new BaseKn5FormWrapper(renderer, "Track", 800, 800).Run(); } } else { using (var renderer = new Kn5ObjectRenderer(kn5File, showroomKn5File)) { renderer.UseFxaa = options.UseFxaa; new FancyShowroomWrapper(renderer).Run(); } } GC.Collect(); GC.WaitForPendingFinalizers(); return(0); }
private static async Task ShowCarInShowroomAsync(string carId) { if (_showingCarInShowroom) { return; } _showingCarInShowroom = true; try { var temporaryDirectory = FilesStorage.Instance.GetTemporaryDirectory("Workshop", "Showroom", carId); var temporaryFilename = Path.Combine(temporaryDirectory, "data.zip"); byte[] modelData = null; string mainSkidId = null; var carData = new VirtualDataWrapper(); using (var waiting = WaitingDialog.Create("Loading showroom…")) { await WorkshopHolder.Client.DownloadFileAsync($"/cars/{carId}/download-showroom", temporaryFilename, false, waiting, waiting.CancellationToken); waiting.Report(AsyncProgressEntry.FromStringIndetermitate("Loading…")); await Task.Run(() => { using (var stream = File.OpenRead(temporaryFilename)) using (var archive = new ZipArchive(stream)) { foreach (var entry in archive.Entries) { if (entry.Length == 0) { continue; } if (entry.FullName == @"model.kn5") { modelData = entry.Open().ReadAsBytesAndDispose(); } else if (entry.FullName.StartsWith(@"data")) { carData.Data[Path.GetFileName(entry.FullName)] = entry.Open().ReadAsStringAndDispose(); } else { if (mainSkidId == null && entry.FullName.StartsWith(@"skins")) { mainSkidId = Path.GetFileName(Path.GetDirectoryName(entry.FullName)); } var newFilename = Path.Combine(temporaryDirectory, entry.FullName); FileUtils.EnsureFileDirectoryExists(newFilename); entry.ExtractToFile(newFilename, true); } waiting.CancellationToken.ThrowIfCancellationRequested(); } } }); waiting.CancellationToken.ThrowIfCancellationRequested(); } if (modelData == null) { throw new Exception("Model is missing"); } if (mainSkidId == null) { throw new Exception("Skins are missing"); } var description = CarDescription.FromKn5(Kn5.FromBytes(modelData), temporaryDirectory, carData); var renderer = new DarkKn5ObjectRenderer(description) { FlatMirror = true, FlatMirrorReflectiveness = 0.3f, FlatMirrorReflectedLight = true, BackgroundColor = Color.White, BackgroundBrightness = 0.05f, LightBrightness = 2f, AmbientBrightness = 2f, AmbientUp = Color.FromArgb(0xEEEEEE), AmbientDown = Color.FromArgb(0x333333), UseDof = true, UseAccumulationDof = true, AccumulationDofIterations = 40, AccumulationDofApertureSize = 0f, UseSslr = true, VisibleUi = false, UseSprite = false, AnyGround = false, ToneMapping = ToneMappingFn.Uncharted2, ToneExposure = 1.2f, ToneGamma = 1f, ToneWhitePoint = 2.2f, }; renderer.SelectSkin(mainSkidId); await FormWrapperBase.PrepareAsync(); var wrapper = new LiteShowroomFormWrapper(renderer); wrapper.Form.Icon = AppIconService.GetAppIcon(); CustomShowroomWrapper.SetProperties(wrapper, renderer); wrapper.Run(); } catch (Exception e) when(!e.IsCancelled()) { Logging.Warning(e); NonfatalError.Notify("Failed to load showroom", e); } finally { _showingCarInShowroom = false; } }
private static int MainInner(string[] args) { Acd.Factory = new AcdFactory(); var argsFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location) ?? "", "Arguments.txt"); if (File.Exists(argsFile)) { args = File.ReadAllLines(argsFile).Concat(args).ToArray(); } var options = new Options(); if (!Parser.Default.ParseArguments(args, options) || options.Help) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var form = new Form { Width = 640, Height = 480, FormBorderStyle = FormBorderStyle.FixedToolWindow, StartPosition = FormStartPosition.CenterScreen }; var message = new TextBox { Multiline = true, ReadOnly = true, BackColor = Control.DefaultBackColor, BorderStyle = BorderStyle.None, Text = options.GetUsage(), Location = new Point(20, 8), Size = new Size(form.ClientSize.Width - 40, form.ClientSize.Height - 16), Padding = new Padding(20), Font = new Font("Consolas", 9f), TabStop = false }; var button = new Button { Text = "OK", Location = new Point(form.ClientSize.Width / 2 - 80, form.ClientSize.Height - 40), Size = new Size(160, 32) }; button.Click += (sender, eventArgs) => form.Close(); form.Controls.Add(button); form.Controls.Add(message); form.ShowDialog(); return(1); } var filename = Assembly.GetEntryAssembly()?.Location; if (options.Verbose || filename.IndexOf("log", StringComparison.OrdinalIgnoreCase) != -1 || filename.IndexOf("debug", StringComparison.OrdinalIgnoreCase) != -1) { // TODO } var inputItems = options.Items; #if DEBUG inputItems = inputItems.Any() ? inputItems : new[] { DebugHelper.GetCarKn5(), DebugHelper.GetShowroomKn5() }; options.MagickOverride = true; #endif if (inputItems.Count == 0) { var dialog = new OpenFileDialog { Title = @"Select KN5", Filter = @"KN5 Files (*.kn5)|*.kn5" }; if (dialog.ShowDialog() != DialogResult.OK) { return(2); } inputItems = new[] { dialog.FileName }; } var kn5File = inputItems.ElementAtOrDefault(0); if (kn5File == null || !File.Exists(kn5File)) { MessageBox.Show(@"File is missing", @"Custom Showroom", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(3); } if (options.Mode == Mode.UpdateAmbientShadows) { MessageBox.Show("Started"); var sw = Stopwatch.StartNew(); UpdateAmbientShadows(kn5File); MessageBox.Show($@"Time taken: {sw.Elapsed.TotalSeconds:F2}s"); return(0); } if (options.Mode == Mode.ExtractUv) { if (string.IsNullOrWhiteSpace(options.ExtractUvTexture)) { MessageBox.Show(@"Texture to extract is not specified", @"Custom Showroom", MessageBoxButtons.OK, MessageBoxIcon.Warning); return(4); } ExtractUv(kn5File, options.ExtractUvTexture); return(0); } var showroomKn5File = inputItems.ElementAtOrDefault(1); if (showroomKn5File == null && options.ShowroomId != null) { showroomKn5File = Path.Combine( Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(kn5File))) ?? "", "showroom", options.ShowroomId, options.ShowroomId + ".kn5"); } if (!File.Exists(showroomKn5File)) { showroomKn5File = null; } if (options.Mode == Mode.Lite) { using (var renderer = new ToolsKn5ObjectRenderer(new CarDescription(kn5File))) { renderer.UseMsaa = options.UseMsaa; renderer.UseFxaa = options.UseFxaa; renderer.UseSsaa = options.UseSsaa; renderer.MagickOverride = options.MagickOverride; new LiteShowroomFormWrapper(renderer).Run(); } } else if (options.Mode == Mode.Dark) { using (var renderer = new DarkKn5ObjectRenderer(new CarDescription(kn5File), showroomKn5File)) { // UI renderer.UseSprite = true; renderer.VisibleUi = true; /*renderer.UseDof = true; * renderer.UseAccumulationDof = true; * renderer.AccumulationDofApertureSize = 0f; * renderer.AccumulationDofBokeh = false; * renderer.AccumulationDofIterations = 100;*/ #if DEBUG renderer.AoOpacity = 0.9f; renderer.AoDebug = true; renderer.UseAo = true; renderer.AoType = AoType.Hbao; /*renderer.BackgroundColor = Color.Black; * renderer.LightBrightness = 0.2f; * renderer.AmbientBrightness = 0.2f; * /*renderer.BackgroundBrightness = 0.02f; * renderer.FlatMirror = true;*/ /*renderer.FlatMirrorReflectedLight = true; * renderer.TryToGuessCarLights = true; * * renderer.FlatMirrorBlurred = true; * renderer.FlatMirror = true;*/ //renderer.AddCar(new CarDescription(@"D:\Games\Assetto Corsa\content\cars\ferrari_f40\ferrari_f40.kn5")); #else // renderer.FlatMirror = true; renderer.UseMsaa = options.UseMsaa; renderer.UseFxaa = options.UseFxaa; renderer.UseSsaa = options.UseSsaa; #endif renderer.MagickOverride = options.MagickOverride; new LiteShowroomFormWrapper(renderer) { ReplaceableShowroom = true }.Run(() => { // ReSharper disable once AccessToDisposedClosure var r = renderer; if (r.CarNode != null) { // r.CarNode.AlignWheelsByData = true; } }); } } else if (options.Mode == Mode.TrackMap) { using (var renderer = new TrackMapPreparationRenderer(kn5File)) { renderer.UseFxaa = options.UseFxaa; renderer.SetFilter(new TrackMapRendererFilter()); new BaseKn5FormWrapper(renderer, "Track", 800, 800).Run(); } } GCHelper.CleanUp(); return(0); }
public DarkRendererCars(DarkKn5ObjectRenderer renderer) : this(renderer, DefaultPresetableKeyValue) { Initialize(false); }