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);
 }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
 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));
 }
Ejemplo n.º 6
0
 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);
Ejemplo n.º 9
0
 public ExposureMenuItem(ToneMappingSettings settings)
 {
     this.settings = settings;
 }
Ejemplo n.º 10
0
 public WhiteBalanceMenuItem(ToneMappingSettings settings)
 {
     this.settings = settings;
 }