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

@ -1,21 +1,21 @@
/* /*
Minetest Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3.0 of the License, or the Free Software Foundation; either version 3.0 of the License, or
(at your option) any later version. (at your option) any later version.
This program is distributed in the hope that it will be useful, This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details. GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#include "light.h" #include "light.h"
#include <math.h> #include <math.h>
@ -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.
@ -64,325 +44,41 @@ const u8 *light_decode_table = light_LUT;
void set_light_table(float gamma) 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
}; };
gamma = rangelim(gamma, 1.0, 3.0); gamma = rangelim(gamma, 1.0, 3.0);
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;
brightness += brightness_step; brightness += brightness_step;
} }
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