Update light.cpp (thank's @sofar), iOS: small fix

This commit is contained in:
Maksim Gamarnik 2016-12-12 00:21:25 +02:00
parent b0d4c29e5e
commit e7ee249303
8 changed files with 52 additions and 352 deletions

0
build/iOS/Ads/ads.h Normal file → Executable file
View File

0
build/iOS/Ads/ads.mm Normal file → Executable file
View File

0
build/iOS/Ads/readme.txt Normal file → Executable file
View File

View File

@ -29,6 +29,10 @@
</dict> </dict>
<key>NSCalendarsUsageDescription</key> <key>NSCalendarsUsageDescription</key>
<string>Advertising</string> <string>Advertising</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Advertising</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Advertising</string>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIMainStoryboardFile</key> <key>UIMainStoryboardFile</key>

View File

@ -37,7 +37,7 @@ echo "Creating assets.zip"
ZIPDEST=$FOLDER/assets.zip ZIPDEST=$FOLDER/assets.zip
rm -f $ZIPDEST rm -f $ZIPDEST
cd $DEST; zip -9r $ZIPDEST -- * cd $DEST; zip -0r $ZIPDEST -- *
cd $FOLDER; rm -rf $DEST cd $FOLDER; rm -rf $DEST
########### ###########

View File

@ -114,7 +114,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("leaves_style", "fancy"); settings->setDefault("leaves_style", "fancy");
settings->setDefault("connected_glass", "false"); settings->setDefault("connected_glass", "false");
settings->setDefault("smooth_lighting", "true"); settings->setDefault("smooth_lighting", "true");
settings->setDefault("display_gamma", "1.4"); settings->setDefault("display_gamma", "2.5");
settings->setDefault("texture_path", ""); settings->setDefault("texture_path", "");
settings->setDefault("shader_path", ""); settings->setDefault("shader_path", "");
settings->setDefault("video_driver", "opengl"); settings->setDefault("video_driver", "opengl");

View File

@ -484,7 +484,7 @@ void Hud::drawCrosshair()
core::rect<s32>(0, 0, size.X, size.Y), core::rect<s32>(0, 0, size.X, size.Y),
0, crosshair_argb, true); 0, crosshair_argb, true);
} else { } else {
#if defined(__ANDROID__) || defined(__IOS__) #if defined(__ANDROID__)
driver->draw2DLine(m_displaycenter - v2s32(35, 0), driver->draw2DLine(m_displaycenter - v2s32(35, 0),
m_displaycenter + v2s32(35, 0), crosshair_argb); m_displaycenter + v2s32(35, 0), crosshair_argb);
driver->draw2DLine(m_displaycenter - v2s32(0, 35), driver->draw2DLine(m_displaycenter - v2s32(0, 35),

View File

@ -26,29 +26,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
// Length of LIGHT_MAX+1 means LIGHT_MAX is the last value. // Length of LIGHT_MAX+1 means LIGHT_MAX is the last value.
// LIGHT_SUN is read as LIGHT_MAX from here. // LIGHT_SUN is read as LIGHT_MAX from here.
u8 light_LUT[LIGHT_MAX+1] = 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,
};
// the const ref to light_LUT is what is actually used in the code.
const u8 *light_decode_table = light_LUT; const u8 *light_decode_table = light_LUT;
/** Initialize or update the light value tables using the specified \p gamma. /** Initialize or update the light value tables using the specified \p gamma.
@ -65,26 +45,26 @@ void set_light_table(float gamma)
{ {
static const float brightness_step = 255.0f / (LIGHT_MAX + 1); static const float brightness_step = 255.0f / (LIGHT_MAX + 1);
/* These are adjustment values that are added to the calculated light value // this table is pure arbitrary values, made so that
* after gamma is applied. Currently they are used so that given a gamma // at gamma 2.2 the game looks not too dark at light=1,
* of 1.8 the light values set by this function are the same as those // and mostly lineair for the rest of the scale.
* hardcoded in the initalizer list for the declaration of light_LUT. // we could try to inverse the gamma power function, but this
*/ // is simpler and quicker.
static const int adjustments[LIGHT_MAX + 1] = { static const int adjustments[LIGHT_MAX + 1] = {
7, -67,
7, -91,
7, -125,
5, -115,
2, -104,
0, -85,
-7, -70,
-20, -63,
-31, -56,
-39, -49,
-43, -42,
-45, -35,
-40, -28,
-25, -22,
0 0
}; };
@ -93,7 +73,7 @@ void set_light_table(float gamma)
float brightness = brightness_step; float brightness = brightness_step;
for (size_t i = 0; i < LIGHT_MAX; i++) { for (size_t i = 0; i < LIGHT_MAX; i++) {
light_LUT[i] = (u8)(255 * powf(brightness / 255.0f, gamma)); light_LUT[i] = (u8)(255 * powf(brightness / 255.0f, 1.0 / gamma));
light_LUT[i] = rangelim(light_LUT[i] + adjustments[i], 0, 255); light_LUT[i] = rangelim(light_LUT[i] + adjustments[i], 0, 255);
if (i > 1 && light_LUT[i] < light_LUT[i - 1]) if (i > 1 && light_LUT[i] < light_LUT[i - 1])
light_LUT[i] = light_LUT[i - 1] + 1; light_LUT[i] = light_LUT[i - 1] + 1;
@ -102,287 +82,3 @@ void set_light_table(float gamma)
light_LUT[LIGHT_MAX] = 255; light_LUT[LIGHT_MAX] = 255;
} }
#endif #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