mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-04 03:40:14 +00:00
contrast and gamma post-processing effect added
initial values are set to approximate vanilla
This commit is contained in:
parent
49e2b14d05
commit
cee72d021d
@ -347,6 +347,7 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
|
||||
addResourcesDirectory(mResDir / "mygui");
|
||||
addResourcesDirectory(mResDir / "water");
|
||||
addResourcesDirectory(mResDir / "shadows");
|
||||
addResourcesDirectory(mResDir / "materials");
|
||||
|
||||
OEngine::Render::WindowSettings windowSettings;
|
||||
windowSettings.fullscreen = settings.getBool("fullscreen", "Video");
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <OgreControllerManager.h>
|
||||
#include <OgreMeshManager.h>
|
||||
#include <OgreRenderTexture.h>
|
||||
#include <OgreCompositorManager.h> // for post-processing effects
|
||||
|
||||
#include <SDL_video.h>
|
||||
|
||||
@ -136,6 +137,9 @@ RenderingManager::RenderingManager(OEngine::Render::OgreRenderer& _rend, const b
|
||||
|
||||
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
|
||||
|
||||
Ogre::CompositorManager::getSingleton().addCompositor(mRendering.getViewport(), "brightness_contrast_gamma");
|
||||
Ogre::CompositorManager::getSingleton().setCompositorEnabled(mRendering.getViewport(), "brightness_contrast_gamma", true);
|
||||
|
||||
// disable unsupported effects
|
||||
if (!Settings::Manager::getBool("shaders", "Objects"))
|
||||
Settings::Manager::setBool("enabled", "Shadows", false);
|
||||
@ -155,6 +159,8 @@ RenderingManager::RenderingManager(OEngine::Render::OgreRenderer& _rend, const b
|
||||
sh::Factory::getInstance ().setGlobalSetting ("refraction", Settings::Manager::getBool("refraction", "Water") ? "true" : "false");
|
||||
sh::Factory::getInstance ().setGlobalSetting ("viewproj_fix", "false");
|
||||
sh::Factory::getInstance ().setSharedParameter ("vpRow2Fix", sh::makeProperty<sh::Vector4> (new sh::Vector4(0,0,0,0)));
|
||||
sh::Factory::getInstance ().setSharedParameter ("contrast_invGamma", sh::makeProperty<sh::Vector2>(new sh::Vector2(
|
||||
Settings::Manager::getFloat("contrast", "General"), 1.0f/Settings::Manager::getFloat("gamma", "General"))));
|
||||
|
||||
mRootNode = mRendering.getScene()->getRootSceneNode();
|
||||
mRootNode->createChildSceneNode("player");
|
||||
@ -757,6 +763,11 @@ void RenderingManager::processChangedSettings(const Settings::CategorySettingVec
|
||||
changeRes = true;
|
||||
else if (it->second == "field of view" && it->first == "General")
|
||||
mRendering.setFov(Settings::Manager::getFloat("field of view", "General"));
|
||||
else if ((it->second == "gamma" || it->second == "contrast") && it->first == "General")
|
||||
{
|
||||
sh::Factory::getInstance ().setSharedParameter ("contrast_invGamma", sh::makeProperty<sh::Vector2>(new sh::Vector2(
|
||||
Settings::Manager::getFloat("contrast", "General"), 1.0f/Settings::Manager::getFloat("gamma", "General"))));
|
||||
}
|
||||
else if ((it->second == "texture filtering" && it->first == "General")
|
||||
|| (it->second == "anisotropy" && it->first == "General"))
|
||||
{
|
||||
|
24
files/materials/brightness_contrast_gamma.compositor
Normal file
24
files/materials/brightness_contrast_gamma.compositor
Normal file
@ -0,0 +1,24 @@
|
||||
compositor brightness_contrast_gamma
|
||||
{
|
||||
technique
|
||||
{
|
||||
// render scene into texture
|
||||
texture SceneBuffer target_width target_height PF_A8R8G8B8
|
||||
|
||||
target SceneBuffer
|
||||
{
|
||||
input previous
|
||||
}
|
||||
|
||||
target_output
|
||||
{
|
||||
input none
|
||||
|
||||
pass render_quad
|
||||
{
|
||||
material mat_brightness_contrast_gamma
|
||||
input 0 SceneBuffer
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
14
files/materials/brightness_contrast_gamma.mat
Normal file
14
files/materials/brightness_contrast_gamma.mat
Normal file
@ -0,0 +1,14 @@
|
||||
material mat_brightness_contrast_gamma
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_program transform_vertex
|
||||
fragment_program openmw_brightness_contrast_gamma_fragment
|
||||
|
||||
depth_check off
|
||||
|
||||
texture_unit SceneBuffer
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
20
files/materials/brightness_contrast_gamma.shader
Normal file
20
files/materials/brightness_contrast_gamma.shader
Normal file
@ -0,0 +1,20 @@
|
||||
#include "core.h"
|
||||
|
||||
#ifdef SH_FRAGMENT_SHADER
|
||||
|
||||
SH_BEGIN_PROGRAM
|
||||
shInput(float2, UV)
|
||||
shSampler2D(SceneBuffer)
|
||||
shUniform(float2, contrast_invGamma) @shSharedParameter(contrast_invGamma)
|
||||
SH_START_PROGRAM
|
||||
{
|
||||
shOutputColour(0) = shSample(SceneBuffer, UV);
|
||||
|
||||
// contrast
|
||||
shOutputColour(0).xyz = (shOutputColour(0).xyz - float3(0.5,0.5,0.5)) * contrast_invGamma.x + float3(0.5,0.5,0.5);
|
||||
shOutputColour(0).xyz = shSaturate(shOutputColour(0).xyz);
|
||||
// gamma
|
||||
shOutputColour(0).xyz = pow(shOutputColour(0).xyz, contrast_invGamma.yyy);
|
||||
}
|
||||
|
||||
#endif
|
7
files/materials/brightness_contrast_gamma.shaderset
Normal file
7
files/materials/brightness_contrast_gamma.shaderset
Normal file
@ -0,0 +1,7 @@
|
||||
shader_set openmw_brightness_contrast_gamma_fragment
|
||||
{
|
||||
source brightness_contrast_gamma.shader
|
||||
type fragment
|
||||
profiles_cg ps_2_x ps_2_0 ps fp40 arbfp1
|
||||
profiles_hlsl ps_2_0
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MyGUI type="Layout" version="3.2.0">
|
||||
<Widget type="Window" skin="MW_Window" position="0 0 400 426" layer="Windows" name="_Main">
|
||||
<Widget type="Window" skin="MW_Window" position="0 0 400 505" layer="Windows" name="_Main">
|
||||
<Property key="MinSize" value="430 446"/>
|
||||
<Widget type="TabControl" skin="TabControl" position="8 8 368 340" align="Stretch" name="SettingsTab">
|
||||
<Widget type="TabControl" skin="TabControl" position="8 8 368 430" align="Stretch" name="SettingsTab">
|
||||
<Property key="ButtonAutoWidth" value="true"/>
|
||||
<Widget type="TabItem" skin="" position="4 32 360 308">
|
||||
<Property key="Caption" value=" #{sPrefs} "/>
|
||||
@ -214,7 +214,7 @@
|
||||
</Widget>
|
||||
<Widget type="TabItem" skin="" position="4 32 360 308">
|
||||
<Property key="Caption" value=" #{sVideo} "/>
|
||||
<Widget type="TabControl" skin="TabControlInner" position="4 4 352 296" align="Stretch">
|
||||
<Widget type="TabControl" skin="TabControlInner" position="4 4 352 390" align="Stretch">
|
||||
<Property key="ButtonAutoWidth" value="true"/>
|
||||
<Widget type="TabItem" skin="" position="0 28 352 268" align="Stretch">
|
||||
<Property key="Caption" value=" Video "/>
|
||||
@ -292,6 +292,32 @@
|
||||
<Property key="Caption" value="#{sHigh}"/>
|
||||
<Property key="TextAlign" value="Right"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="NormalText" position="0 268 329 18" align="Left Top" name="GammaText">
|
||||
<Property key="Caption" value="Gamma Correction"/>
|
||||
</Widget>
|
||||
<Widget type="MWScrollBar" skin="MW_HScroll" position="0 292 329 18" align="HStretch Top" name="GammaSlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="General"/>
|
||||
<UserString key="SettingName" value="gamma"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
<UserString key="SettingMin" value="0.1"/>
|
||||
<UserString key="SettingMax" value="3.0"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="NormalText" position="0 314 329 18" align="Left Top" name="ContrastText">
|
||||
<Property key="Caption" value="Contrast"/>
|
||||
</Widget>
|
||||
<Widget type="MWScrollBar" skin="MW_HScroll" position="0 336 329 18" align="HStretch Top" name="ContrastSlider">
|
||||
<Property key="Range" value="10000"/>
|
||||
<Property key="Page" value="300"/>
|
||||
<UserString key="SettingType" value="Slider"/>
|
||||
<UserString key="SettingCategory" value="General"/>
|
||||
<UserString key="SettingName" value="contrast"/>
|
||||
<UserString key="SettingValueType" value="Float"/>
|
||||
<UserString key="SettingMin" value="0.1"/>
|
||||
<UserString key="SettingMax" value="2.0"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
<Widget type="TabItem" skin="" position="0 28 352 268">
|
||||
<Property key="Caption" value=" Detail "/>
|
||||
@ -470,7 +496,7 @@
|
||||
</Widget>
|
||||
</Widget>
|
||||
</Widget>
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" position="321 355 56 24" align="Right Bottom" name="OkButton">
|
||||
<Widget type="AutoSizedButton" skin="MW_Button" position="320 440 56 24" align="Right Bottom" name="OkButton">
|
||||
<Property key="ExpandDirection" value="Left"/>
|
||||
<Property key="Caption" value="#{sOK}"/>
|
||||
</Widget>
|
||||
|
@ -48,6 +48,8 @@ werewolf overlay = true
|
||||
[General]
|
||||
# Camera field of view
|
||||
field of view = 55
|
||||
gamma = 0.88
|
||||
contrast = 0.86
|
||||
|
||||
# Texture filtering mode. valid values:
|
||||
# none
|
||||
|
Loading…
x
Reference in New Issue
Block a user