123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326 |
- /*
- Minetest
- Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
- 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
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
- 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.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
- #include "light.h"
- #if 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.
- u8 light_decode_table[LIGHT_MAX+1] =
- {
- 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,
- };
- #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
|