Luanti
5.10.0-dev
Loading...
Searching...
No Matches
light.h
Go to the documentation of this file.
1
// Luanti
2
// SPDX-License-Identifier: LGPL-2.1-or-later
3
// Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5
#pragma once
6
#include <cassert>
7
#include "
config.h
"
8
#include "
irrlichttypes.h
"
9
10
/*
11
Lower level lighting stuff
12
*/
13
14
// This directly sets the range of light.
15
// Actually this is not the real maximum, and this is not the brightest, the
16
// brightest is LIGHT_SUN.
17
// If changed, this constant as defined in builtin/game/constants.lua must
18
// also be changed.
19
#define LIGHT_MAX 14
20
// Light is stored as 4 bits, thus 15 is the maximum.
21
// This brightness is reserved for sunlight
22
#define LIGHT_SUN 15
23
24
#if IS_CLIENT_BUILD
25
38
extern
const
u8 *light_decode_table;
39
40
// 0 <= light <= LIGHT_SUN
41
// 0 <= return value <= 255
42
inline
u8 decode_light(u8 light)
43
{
44
// assert(light <= LIGHT_SUN);
45
if
(light >
LIGHT_SUN
)
46
light =
LIGHT_SUN
;
47
return
light_decode_table[light];
48
}
49
50
// 0.0 <= light <= 1.0
51
// 0.0 <= return value <= 1.0
52
float
decode_light_f(
float
light_f);
53
54
void
set_light_table(
float
gamma);
55
56
#endif
57
58
// 0 <= daylight_factor <= 1000
59
// 0 <= lightday, lightnight <= LIGHT_SUN
60
// 0 <= return value <= LIGHT_SUN
61
inline
u8
blend_light
(u32 daylight_factor, u8 lightday, u8 lightnight)
62
{
63
u32 c = 1000;
64
u32 l = ((daylight_factor * lightday + (c - daylight_factor) * lightnight)) / c;
65
if
(l >
LIGHT_SUN
)
66
l =
LIGHT_SUN
;
67
return
l;
68
}
config.h
irrlichttypes.h
LIGHT_SUN
#define LIGHT_SUN
Definition
light.h:22
blend_light
u8 blend_light(u32 daylight_factor, u8 lightday, u8 lightnight)
Definition
light.h:61
light.h
Generated on Fri Nov 1 2024 10:48:59 for Luanti by
1.11.0