mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-10 13:31:49 +00:00
Merge pull request #989 from MihailRis/enable-fog-setting
Add fog setting
This commit is contained in:
commit
476d7094a4
8 changed files with 15 additions and 1 deletions
|
|
@ -1,2 +1,2 @@
|
||||||
<panel size='400' color='0' interval='1' context='menu'>
|
<panel size='400' max-length='420' padding='0,0,16,0' color='0' interval='1' context='menu'>
|
||||||
</panel>
|
</panel>
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ function on_open()
|
||||||
create_trackbar_setting("chunks.load-speed", "Load Speed", 1)
|
create_trackbar_setting("chunks.load-speed", "Load Speed", 1)
|
||||||
create_trackbar_setting("graphics.fog-curve", "Fog Curve", 0.1)
|
create_trackbar_setting("graphics.fog-curve", "Fog Curve", 0.1)
|
||||||
|
|
||||||
|
create_checkbox("graphics.enable-fog", "Fog", "graphics.enable-fog.tooltip")
|
||||||
create_checkbox("graphics.backlight", "Backlight", "graphics.backlight.tooltip")
|
create_checkbox("graphics.backlight", "Backlight", "graphics.backlight.tooltip")
|
||||||
create_checkbox("graphics.soft-lighting", "Soft lighting", "graphics.soft-lighting.tooltip")
|
create_checkbox("graphics.soft-lighting", "Soft lighting", "graphics.soft-lighting.tooltip")
|
||||||
create_checkbox("graphics.dense-render", "Dense blocks render", "graphics.dense-render.tooltip")
|
create_checkbox("graphics.dense-render", "Dense blocks render", "graphics.dense-render.tooltip")
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,16 @@ uniform float u_weatherFogDencity;
|
||||||
uniform float u_weatherFogCurve;
|
uniform float u_weatherFogCurve;
|
||||||
|
|
||||||
float calc_fog(float depth, float fogFactor, float fogCurve) {
|
float calc_fog(float depth, float fogFactor, float fogCurve) {
|
||||||
|
#ifdef ENABLE_FOG
|
||||||
return min(
|
return min(
|
||||||
1.0,
|
1.0,
|
||||||
max(pow(depth * u_fogFactor * fogFactor, u_fogCurve * fogCurve),
|
max(pow(depth * u_fogFactor * fogFactor, u_fogCurve * fogCurve),
|
||||||
min(pow(depth * u_weatherFogDencity, u_weatherFogCurve),
|
min(pow(depth * u_weatherFogDencity, u_weatherFogCurve),
|
||||||
u_weatherFogOpacity))
|
u_weatherFogOpacity))
|
||||||
);
|
);
|
||||||
|
#else
|
||||||
|
return 0.0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
float calc_fog(float depth) {
|
float calc_fog(float depth) {
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ devtools.output=Output
|
||||||
# Tooltips
|
# Tooltips
|
||||||
audio.acoustic-effects.tooltip=Acoustic effects may not be supported by your system
|
audio.acoustic-effects.tooltip=Acoustic effects may not be supported by your system
|
||||||
audio.recording-enabled.tooltip=Enables audio recording features
|
audio.recording-enabled.tooltip=Enables audio recording features
|
||||||
|
graphics.enable-fog.tooltip=Enables fog
|
||||||
graphics.gamma.tooltip=Lighting brightness curve
|
graphics.gamma.tooltip=Lighting brightness curve
|
||||||
graphics.backlight.tooltip=Backlight to prevent total darkness
|
graphics.backlight.tooltip=Backlight to prevent total darkness
|
||||||
graphics.dense-render.tooltip=Enables transparency in blocks like leaves
|
graphics.dense-render.tooltip=Enables transparency in blocks like leaves
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ pack.remove-confirm=Удалить весь поставляемый паком/
|
||||||
# Подсказки
|
# Подсказки
|
||||||
audio.acoustic-effects.tooltip=Акустические эффекты могут не поддерживаться системой
|
audio.acoustic-effects.tooltip=Акустические эффекты могут не поддерживаться системой
|
||||||
audio.recording-enabled.tooltip=Включает функции записи звука
|
audio.recording-enabled.tooltip=Включает функции записи звука
|
||||||
|
graphics.enable-fog.tooltip=Отображать туман / дымку
|
||||||
graphics.gamma.tooltip=Кривая яркости освещения
|
graphics.gamma.tooltip=Кривая яркости освещения
|
||||||
graphics.backlight.tooltip=Подсветка, предотвращающая полную темноту
|
graphics.backlight.tooltip=Подсветка, предотвращающая полную темноту
|
||||||
graphics.dense-render.tooltip=Включает прозрачность блоков, таких как листья
|
graphics.dense-render.tooltip=Включает прозрачность блоков, таких как листья
|
||||||
|
|
@ -89,6 +90,7 @@ settings.Soft lighting=Мягкое освещение
|
||||||
settings.Camera Shaking=Тряска Камеры
|
settings.Camera Shaking=Тряска Камеры
|
||||||
settings.Camera Inertia=Инерция Камеры
|
settings.Camera Inertia=Инерция Камеры
|
||||||
settings.Camera FOV Effects=Эффекты поля зрения
|
settings.Camera FOV Effects=Эффекты поля зрения
|
||||||
|
settings.Fog=Туман
|
||||||
settings.Fog Curve=Кривая Тумана
|
settings.Fog Curve=Кривая Тумана
|
||||||
settings.FOV=Поле Зрения
|
settings.FOV=Поле Зрения
|
||||||
settings.Fullscreen=Полный экран
|
settings.Fullscreen=Полный экран
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,7 @@ WorldRenderer::WorldRenderer(
|
||||||
debugLines = std::make_unique<DebugLinesRenderer>(level);
|
debugLines = std::make_unique<DebugLinesRenderer>(level);
|
||||||
cloudsRenderer = std::make_unique<CloudsRenderer>();
|
cloudsRenderer = std::make_unique<CloudsRenderer>();
|
||||||
|
|
||||||
|
keepAlive(observe_setting(settings.graphics.enableFog, dirtySettings));
|
||||||
keepAlive(observe_setting(settings.graphics.advancedRender, dirtySettings));
|
keepAlive(observe_setting(settings.graphics.advancedRender, dirtySettings));
|
||||||
keepAlive(observe_setting(settings.graphics.shadowsQuality, dirtySettings));
|
keepAlive(observe_setting(settings.graphics.shadowsQuality, dirtySettings));
|
||||||
keepAlive(observe_setting(settings.graphics.ssao, dirtySettings));
|
keepAlive(observe_setting(settings.graphics.ssao, dirtySettings));
|
||||||
|
|
@ -156,10 +157,12 @@ void WorldRenderer::refreshSettings() {
|
||||||
gbufferPipeline = graphics.advancedRender.get();
|
gbufferPipeline = graphics.advancedRender.get();
|
||||||
|
|
||||||
int shadowsQuality = graphics.shadowsQuality.get() * gbufferPipeline;
|
int shadowsQuality = graphics.shadowsQuality.get() * gbufferPipeline;
|
||||||
|
bool enableFog = graphics.enableFog.get();
|
||||||
shadowMapping->setQuality(shadowsQuality);
|
shadowMapping->setQuality(shadowsQuality);
|
||||||
|
|
||||||
std::vector<std::string> defines;
|
std::vector<std::string> defines;
|
||||||
if (shadowsQuality != 0) defines.emplace_back("ENABLE_SHADOWS");
|
if (shadowsQuality != 0) defines.emplace_back("ENABLE_SHADOWS");
|
||||||
|
if (enableFog) defines.emplace_back("ENABLE_FOG");
|
||||||
if (graphics.ssao.get()) defines.emplace_back("ENABLE_SSAO");
|
if (graphics.ssao.get()) defines.emplace_back("ENABLE_SSAO");
|
||||||
if (gbufferPipeline) defines.emplace_back("ADVANCED_RENDER");
|
if (gbufferPipeline) defines.emplace_back("ADVANCED_RENDER");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) {
|
||||||
builder.add("padding", &settings.chunks.padding);
|
builder.add("padding", &settings.chunks.padding);
|
||||||
|
|
||||||
builder.addSection("graphics");
|
builder.addSection("graphics");
|
||||||
|
builder.add("enable-fog", &settings.graphics.enableFog);
|
||||||
builder.add("fog-curve", &settings.graphics.fogCurve);
|
builder.add("fog-curve", &settings.graphics.fogCurve);
|
||||||
builder.add("backlight", &settings.graphics.backlight);
|
builder.add("backlight", &settings.graphics.backlight);
|
||||||
builder.add("dense-render", &settings.graphics.denseRender);
|
builder.add("dense-render", &settings.graphics.denseRender);
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,8 @@ struct CameraSettings {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GraphicsSettings {
|
struct GraphicsSettings {
|
||||||
|
/// @brief Enable fog
|
||||||
|
FlagSetting enableFog {true};
|
||||||
/// @brief Fog opacity is calculated as `pow(depth*k, fogCurve)` where k depends on chunksLoadDistance.
|
/// @brief Fog opacity is calculated as `pow(depth*k, fogCurve)` where k depends on chunksLoadDistance.
|
||||||
/// 1.0 is linear, 2.0 is quadratic
|
/// 1.0 is linear, 2.0 is quadratic
|
||||||
NumberSetting fogCurve {1.0f, 1.0f, 6.0f};
|
NumberSetting fogCurve {1.0f, 1.0f, 6.0f};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue