Added configurable ambient_occlusion_gamma. Default is 2.2 (same as previous hardcode...
authorTriBlade9 <triblade9@mail.com>
Wed, 14 Jan 2015 13:34:44 +0000 (23:34 +1000)
committerCraig Robbins <kde.psych@gmail.com>
Wed, 14 Jan 2015 13:35:50 +0000 (23:35 +1000)
minetest.conf.example
src/defaultsettings.cpp
src/mapblock_mesh.cpp

index 0b137c5a2ad844ef596145c4ff924e756a529ac7..e1d880d8360953cd3648a2b9c7ba1bc9baf6f526 100644 (file)
 #    Set to true enables waving plants. Requires shaders enabled.
 #enable_waving_plants = false
 #    Enables caching of facedir rotated meshes
+#ambient_occlusion_gamma = 2.2
+#    The strength (darkness) of node ambient-occlusion shading.
+#    Lower is darker, Higher is lighter. The valid range of values for this
+#    setting is 0.25 to 4.0 inclusive. If the value is out of range it will be
+#    set to the nearest valid value.
 #enable_mesh_cache = true
 #    The time in seconds it takes between repeated
 #    right clicks when holding the right mouse button.
 #    Noise parameters for biome API temperature and humidity
 #mg_biome_np_heat = 50, 50, (500, 500, 500), 5349, 3, 0.5, 2.0
 #mg_biome_np_humidity = 50, 50, (500, 500, 500), 842, 3, 0.5, 2.0
-
index 4fb99cd5515d6710acf0a58fbf078293b3ed2988..6504c51554ef3dc6393e89b265812837f94663fe 100644 (file)
@@ -159,6 +159,7 @@ void set_default_settings(Settings *settings)
        settings->setDefault("water_wave_speed", "5.0");
        settings->setDefault("enable_waving_leaves", "false");
        settings->setDefault("enable_waving_plants", "false");
+       settings->setDefault("ambient_occlusion_gamma", "2.2");
        settings->setDefault("enable_shaders", "true");
        settings->setDefault("repeat_rightclick_time", "0.25");
        settings->setDefault("enable_particles", "true");
@@ -346,4 +347,3 @@ void override_default_settings(Settings *settings, Settings *from)
                settings->setDefault(name, from->get(name));
        }
 }
-
index 0e5a883f26121da4d81f17c46038d5141a7f4575..8afca73a5fde6bbc86aeb180468c3239237e6358 100644 (file)
@@ -288,9 +288,15 @@ static u16 getSmoothLightCombined(v3s16 p, MeshMakeData *data)
 
        if (ambient_occlusion > 4)
        {
-               //table of precalculated gamma space multiply factors
-               //light^2.2 * factor (0.75, 0.5, 0.25, 0.0), so table holds factor ^ (1 / 2.2)
-               static const float light_amount[4] = { 0.877424315, 0.729740053, 0.532520545, 0.0 };
+               static const float ao_gamma = rangelim(
+                       g_settings->getFloat("ambient_occlusion_gamma"), 0.25, 4.0);
+
+               // Table of gamma space multiply factors.
+               static const float light_amount[3] = {
+                       powf(0.75, 1.0 / ao_gamma),
+                       powf(0.5,  1.0 / ao_gamma),
+                       powf(0.25, 1.0 / ao_gamma)
+               };
 
                //calculate table index for gamma space multiplier
                ambient_occlusion -= 5;