aboutsummaryrefslogtreecommitdiff
path: root/src/porting.h
Commit message (Expand)AuthorAge
* C++ modernize: Pragma once (#6264)Loïc Blot2017-08-17
* Isolate irrlicht references and use a singleton (#6041)Loïc Blot2017-06-26
* Remove threads.h and replace its definitions with their C++11 equivalents (#5...ShadowNinja2017-06-11
* Clean up getTime helpersShadowNinja2017-04-28
* Windows: Skip cmd for release builds (#5416)adrido2017-04-07
* Windows: Set window icon (#5486)adrido2017-03-30
* Also support X11 icon for minetest copies installed via make install (#4407)est312016-08-20
* Finally set a window icon on X11est312016-07-05
* Fix & make linux conditionals uniform (#4278)Rogier-52016-07-04
* Fix OSX building issue caused by ad884f2Pavel Puchkin2016-01-29
* Clocksource: use a better clock if available.Auke Kok2016-01-29
* Add seperate cache pathShadowNinja2015-12-07
* Add LuaSecureRandomest312015-11-08
* Use CUSTOM_LOCALEDIR if specifiedShadowNinja2015-09-06
* Fix building on OSX, broken since "Clean up threading"Pavel Puchkin2015-09-06
* Clean up threadingShadowNinja2015-08-23
* Little coding style fix on porting.hLoic Blot2015-07-10
* Porting: Refactor initalizePaths()kwolekr2015-04-19
* Add Lua function get_video_modes() for main menuCraig Robbins2015-03-28
* Fix FTBFS on GNU/Hurd platformMarkus Koschany2015-02-11
* Create minidump on fatal Win32 exceptionskwolekr2015-02-02
* Reorganize supported video driver query mechanismskwolekr2015-01-18
* Set WM_CLASS window hint for Xorgkwolekr2014-12-15
* Simplify loading of Android version of menuShadowNinja2014-11-20
* Add support for Android 2.3+sapier2014-06-29
* OS X compatibility fixesMartin Doege2014-06-29
* Add support for exiting formspecs by doubleclicking outsidesapier2014-06-12
* Revert "Add daemon support for linux like operating systems"sapier2014-06-01
* Add daemon support for linux like operating systemssapier2014-05-31
* Fix setThreadName support for BSDShadowNinja2014-05-26
* Add support for dpi based HUD scalingsapier2014-04-27
* Fix argument type of the RaiseException() functionFessWolf2014-04-23
* Add support for threadnames on BSD, Windows (MSVC-only), and OSXShadowNinja2014-04-19
* Fix problem with newer MinGW runtimesSfan52014-04-14
* Fix broken win32+bsd buildsapier2014-04-11
* Add support for named threads (atm linux only)sapier2014-04-09
* Define strlcpy on platforms that do not have itkwolekr2014-02-09
* Add capability to read table flag fields from Lua APIkwolekr2014-02-09
* Make flag strings clear specified flag with 'no' prefixkwolekr2014-02-08
* Include system info in the HTTP user agent on WindowsSfan52014-01-23
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
* Add support for IPv6proller2013-06-23
* Add varying levels of precision to TimeTakerkwolekr2013-03-29
* Fix build on Windowskwolekr2013-02-25
* Fix most walled-off caveskwolekr2013-02-25
* Tune queue limits, some other adjustmentskwolekr2013-02-25
* Add multi-Emerge thread supportkwolekr2013-02-25
* Update Copyright YearsSfan52013-02-24
* Change Minetest-c55 to MinetestPilzAdam2013-02-24
* Add flag string settings, flat map optionkwolekr2013-02-06
e "light.h" #include <math.h> #include "util/numeric.h" #ifndef SERVER // Length of LIGHT_MAX+1 means LIGHT_MAX is the last value. // LIGHT_SUN is read as LIGHT_MAX from here. u8 light_LUT[LIGHT_MAX+1] = { /* Middle-raised variation of a_n+1 = a_n * 0.786 * Length of LIGHT_MAX+1 means LIGHT_MAX is the last value. * LIGHT_SUN is read as LIGHT_MAX from here. */ 8, 11+2, 14+7, 18+10, 22+15, 29+20, 37+20, 47+15, 60+10, 76+7, 97+5, 123+2, 157, 200, 255, }; const u8 *light_decode_table = light_LUT; /** Initialize or update the light value tables using the specified \p gamma. * If \p gamma == 1.0 then the light table is linear. Typically values for * gamma range between 1.8 and 2.2. * * @note The value for gamma will be restricted to the range 1.1 <= gamma <= 3.0. * * @note This function is not, currently, a simple linear to gamma encoding * because adjustments are made so that a gamma of 1.8 gives the same * results as those hardcoded for use by the server. */ void set_light_table(float gamma) { static const float brightness_step = 255.0f / (LIGHT_MAX + 1); /* These are adjustment values that are added to the calculated light value * after gamma is applied. Currently they are used so that given a gamma * of 1.8 the light values set by this function are the same as those * hardcoded in the initalizer list for the declaration of light_LUT. */ static const int adjustments[LIGHT_MAX + 1] = { 7, 7, 7, 5, 2, 0, -7, -20, -31, -39, -43, -45, -40, -25, 0 }; gamma = rangelim(gamma, 1.1, 3.0); float brightness = brightness_step; for (size_t i = 0; i < LIGHT_MAX; i++) { light_LUT[i] = (u8)(255 * powf(brightness / 255.0f, gamma)); light_LUT[i] = rangelim(light_LUT[i] + adjustments[i], 0, 255); if (i > 1 && light_LUT[i] < light_LUT[i-1]) light_LUT[i] = light_LUT[i-1] + 1; brightness += brightness_step; } light_LUT[LIGHT_MAX] = 255; } #endif #if 0 /* Made using this and: - adding 220 as the second last one - replacing the third last one (212) with 195 #!/usr/bin/python from math import * from sys import stdout # We want 0 at light=0 and 255 at light=LIGHT_MAX LIGHT_MAX = 14 #FACTOR = 0.69 #FACTOR = 0.75 FACTOR = 0.83 START_FROM_ZERO = False L = [] if START_FROM_ZERO: for i in range(1,LIGHT_MAX+1): L.append(int(round(255.0 * FACTOR ** (i-1)))) L.append(0) else: for i in range(1,LIGHT_MAX+1): L.append(int(round(255.0 * FACTOR ** (i-1)))) L.append(255) L.reverse() for i in L: stdout.write(str(i)+",\n") */ u8 light_decode_table[LIGHT_MAX+1] = { 23, 27, 33, 40, 48, 57, 69, 83, 100, 121, 146, 176, 195, 220, 255, }; #endif #if 0 // This is good // a_n+1 = a_n * 0.786 // Length of LIGHT_MAX+1 means LIGHT_MAX is the last value. // LIGHT_SUN is read as LIGHT_MAX from here. u8 light_decode_table[LIGHT_MAX+1] = { 8, 11, 14, 18, 22, 29, 37, 47, 60, 76, 97, 123, 157, 200, 255, }; #endif #if 0 // Use for debugging in dark u8 light_decode_table[LIGHT_MAX+1] = { 58, 64, 72, 80, 88, 98, 109, 121, 135, 150, 167, 185, 206, 229, 255, }; #endif // This is reasonable with classic lighting with a light source /*u8 light_decode_table[LIGHT_MAX+1] = { 2, 3, 4, 6, 9, 13, 18, 25, 32, 35, 45, 57, 69, 79, 255 };*/ // As in minecraft, a_n+1 = a_n * 0.8 // NOTE: This doesn't really work that well because this defines // LIGHT_MAX as dimmer than LIGHT_SUN // NOTE: Uh, this has had 34 left out; forget this. /*u8 light_decode_table[LIGHT_MAX+1] = { 8, 11, 14, 17, 21, 27, 42, 53, 66, 83, 104, 130, 163, 204, 255, };*/ // This was a quick try of more light, manually quickly made /*u8 light_decode_table[LIGHT_MAX+1] = { 0, 7, 11, 15, 21, 29, 42, 53, 69, 85, 109, 135, 167, 205, 255, };*/ // This was used for a long time, manually made /*u8 light_decode_table[LIGHT_MAX+1] = { 0, 6, 8, 11, 14, 19, 26, 34, 45, 61, 81, 108, 143, 191, 255, };*/ /*u8 light_decode_table[LIGHT_MAX+1] = { 0, 3, 6, 10, 18, 25, 35, 50, 75, 95, 120, 150, 185, 215, 255, };*/ /*u8 light_decode_table[LIGHT_MAX+1] = { 0, 5, 12, 22, 35, 50, 65, 85, 100, 120, 140, 160, 185, 215, 255, };*/ // LIGHT_MAX is 14, 0-14 is 15 values /*u8 light_decode_table[LIGHT_MAX+1] = { 0, 9, 12, 14, 16, 20, 26, 34, 45, 61, 81, 108, 143, 191, 255, };*/ #if 0 /* #!/usr/bin/python from math import * from sys import stdout # We want 0 at light=0 and 255 at light=LIGHT_MAX LIGHT_MAX = 14 #FACTOR = 0.69 FACTOR = 0.75 L = [] for i in range(1,LIGHT_MAX+1): L.append(int(round(255.0 * FACTOR ** (i-1)))) L.append(0) L.reverse() for i in L: stdout.write(str(i)+",\n") */ u8 light_decode_table[LIGHT_MAX+1] = { 0, 6, 8, 11, 14, 19, 26, 34, 45, 61, 81, 108, 143, 191, 255, }; #endif