public void Merge(ToneMappingSettings settings) { settings.WhiteBalance = whiteBalance.GetValueOrDefault(settings.WhiteBalance); settings.ExposureValue = exposureValue.GetValueOrDefault(settings.ExposureValue); settings.BurnHighlights = burnHighlights.GetValueOrDefault(settings.BurnHighlights); settings.CrushBlacks = crushBlacks.GetValueOrDefault(settings.CrushBlacks); }
public Scene(IArchiveDirectory dataDir, Device device, ShaderCache shaderCache, StandardSamplers standardSamplers, TrackedDeviceBufferManager trackedDeviceBufferManager, ControllerManager controllerManager) { var textureCache = new TextureCache(device); toneMappingSettings = new ToneMappingSettings(); iblEnvironment = new ImageBasedLightingEnvironment(device, standardSamplers, dataDir, InitialSettings.Environment, InitialSettings.EnvironmentRotation); backdrop = new Backdrop(device, shaderCache); floor = new PlayspaceFloor(device, shaderCache); renderModelRenderer = new RenderModelRenderer(device, shaderCache, trackedDeviceBufferManager); primitiveRenderer = new MeshRenderer(device, shaderCache, Matrix.Translation(0, 1.25f, 0), GeometricPrimitiveFactory.MakeSphere(0.5f, 100).AsTriMesh()); var shapeNormalsLoader = new ShapeNormalsLoader(dataDir, device, textureCache); var figureRendererLoader = new FigureRendererLoader(dataDir, device, shaderCache, textureCache); var figureLoader = new FigureLoader(dataDir, device, shaderCache, shapeNormalsLoader, figureRendererLoader); actor = Actor.Load(dataDir, device, shaderCache, controllerManager, figureLoader); var iblMenu = LightingEnvironmentMenu.MakeMenuLevel(dataDir, iblEnvironment); var toneMappingMenuLevel = new ToneMappingMenuLevel(toneMappingSettings); var renderSettingsMenuLevel = new StaticMenuLevel( new SubLevelMenuItem("Lighting Enviroment", iblMenu), new SubLevelMenuItem("Tone Mapping", toneMappingMenuLevel), new FloorVisibilityToggleMenuItem(floor) ); var scenePersistenceMenuLevel = ScenePersistenceMenuLevel.Make(this); var appMenuLevel = new StaticMenuLevel( new SubLevelMenuItem("Save/Load", scenePersistenceMenuLevel), new SubLevelMenuItem("Render Settings", renderSettingsMenuLevel) ); var rootMenuLevel = new CombinedMenuLevel(appMenuLevel, actor.MenuLevel); menu = new Menu(device, shaderCache, trackedDeviceBufferManager, controllerManager, rootMenuLevel); }
public ToneMappingMenuLevel(ToneMappingSettings settings) { items = new List <IMenuItem> { new WhiteBalanceMenuItem(settings), new ExposureMenuItem(settings), new GenericRangeMenuItem("Burn Highlights", 0, ToneMappingSettings.DefaultBurnHighlights, 1, () => settings.BurnHighlights, (value) => settings.BurnHighlights = value), new GenericRangeMenuItem("Crush Shadows", 0, ToneMappingSettings.DefaultCrushBlacks, 1, () => settings.CrushBlacks, (value) => settings.CrushBlacks = value) }; }
private PostProcessorConstants GenerateConstants(ToneMappingSettings toneMappingSettings) { float exposureAdjustment = (float)Math.Pow(2, toneMappingSettings.ExposureValue - 12); Vector3 balanceAdjustment = ColorConversion.FromTemperatureToLinearSRGB(toneMappingSettings.WhiteBalance) / NeutralWhiteBalanceAsLinearSRGB; return(new PostProcessorConstants { exposureAndBalanceAdjustment = exposureAdjustment * balanceAdjustment, burnHighlightsValue = (float)toneMappingSettings.BurnHighlights, crushBlacksValue = (float)toneMappingSettings.CrushBlacks }); }
public void Prepare(DeviceContext context, ToneMappingSettings toneMappingSettings) { constantsBuffer.Update(context, GenerateConstants(toneMappingSettings)); }
public void PrepareFrame(DeviceContext context, ToneMappingSettings toneMappingSettings) { postProcessor.Prepare(context, toneMappingSettings); }
internal static extern void Internal_SetToneMapping(IntPtr obj, ref ToneMappingSettings value);
internal static extern void Internal_GetToneMapping(IntPtr obj, out ToneMappingSettings resultAsRef);
public ExposureMenuItem(ToneMappingSettings settings) { this.settings = settings; }
public WhiteBalanceMenuItem(ToneMappingSettings settings) { this.settings = settings; }