mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 10:31:50 +00:00
add 'enable-fog' setting
This commit is contained in:
parent
f5de330f3f
commit
e467c85adc
4 changed files with 10 additions and 0 deletions
|
|
@ -8,12 +8,16 @@ uniform float u_weatherFogDencity;
|
|||
uniform float u_weatherFogCurve;
|
||||
|
||||
float calc_fog(float depth, float fogFactor, float fogCurve) {
|
||||
#ifdef ENABLE_FOG
|
||||
return min(
|
||||
1.0,
|
||||
max(pow(depth * u_fogFactor * fogFactor, u_fogCurve * fogCurve),
|
||||
min(pow(depth * u_weatherFogDencity, u_weatherFogCurve),
|
||||
u_weatherFogOpacity))
|
||||
);
|
||||
#else
|
||||
return 0.0;
|
||||
#endif
|
||||
}
|
||||
|
||||
float calc_fog(float depth) {
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ WorldRenderer::WorldRenderer(
|
|||
debugLines = std::make_unique<DebugLinesRenderer>(level);
|
||||
cloudsRenderer = std::make_unique<CloudsRenderer>();
|
||||
|
||||
keepAlive(observe_setting(settings.graphics.enableFog, dirtySettings));
|
||||
keepAlive(observe_setting(settings.graphics.advancedRender, dirtySettings));
|
||||
keepAlive(observe_setting(settings.graphics.shadowsQuality, dirtySettings));
|
||||
keepAlive(observe_setting(settings.graphics.ssao, dirtySettings));
|
||||
|
|
@ -156,10 +157,12 @@ void WorldRenderer::refreshSettings() {
|
|||
gbufferPipeline = graphics.advancedRender.get();
|
||||
|
||||
int shadowsQuality = graphics.shadowsQuality.get() * gbufferPipeline;
|
||||
bool enableFog = graphics.enableFog.get();
|
||||
shadowMapping->setQuality(shadowsQuality);
|
||||
|
||||
std::vector<std::string> defines;
|
||||
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 (gbufferPipeline) defines.emplace_back("ADVANCED_RENDER");
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ SettingsHandler::SettingsHandler(EngineSettings& settings) {
|
|||
builder.add("padding", &settings.chunks.padding);
|
||||
|
||||
builder.addSection("graphics");
|
||||
builder.add("enable-fog", &settings.graphics.enableFog);
|
||||
builder.add("fog-curve", &settings.graphics.fogCurve);
|
||||
builder.add("backlight", &settings.graphics.backlight);
|
||||
builder.add("dense-render", &settings.graphics.denseRender);
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ struct CameraSettings {
|
|||
};
|
||||
|
||||
struct GraphicsSettings {
|
||||
/// @brief Enable fog
|
||||
FlagSetting enableFog {true};
|
||||
/// @brief Fog opacity is calculated as `pow(depth*k, fogCurve)` where k depends on chunksLoadDistance.
|
||||
/// 1.0 is linear, 2.0 is quadratic
|
||||
NumberSetting fogCurve {1.0f, 1.0f, 6.0f};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue