Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from godotengine:master #140

Merged
merged 30 commits into from
Jan 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
8a544bf
Fix undo behavior on `EditorSettingsDialog::_update_builtin_action`.
allenwp Dec 5, 2024
176e5f4
add Static assert checks
kiroxas Jan 2, 2025
84e6ac9
Web: Export ASTC/BPTC compressed textures
BlueCube3310 Jan 6, 2025
a705962
Simplify scene tabs option disabling
KoBeWi Jan 3, 2025
a29294f
SCons: Refactor color output implementation
Repiteo Jan 7, 2025
a8377d0
Fix ANGLE and D3D12 libraries inclusion in .zip export
Summersay415 Jan 8, 2025
989161e
Fix color picking on linux.
WhalesState Jan 8, 2025
f134769
Fix various typos
akx Jan 8, 2025
e5ac45e
Wayland: Unsuspend only for the same reason as suspension
Riteo Sep 26, 2024
cd17cb0
[macos, ios]: Refactor joypad support into shared code, numerous bugf…
stuartcarnie Jul 21, 2024
dea597c
Merge pull request #94580 from stuartcarnie/sgc/macos_joypad
akien-mga Jan 8, 2025
abd188f
Merge pull request #97480 from Riteo/why-is-suspension-so-hard
akien-mga Jan 8, 2025
b857c2f
Merge pull request #101016 from kiroxas/AddVariantStaticAssert
akien-mga Jan 8, 2025
0dcc1a3
Merge pull request #101094 from KoBeWi/what_if
akien-mga Jan 8, 2025
cc3a32b
Merge pull request #101249 from Repiteo/scons/color-refactor
akien-mga Jan 8, 2025
76c8e76
Merge pull request #101284 from akx/tyops
akien-mga Jan 8, 2025
5fad891
Fix menus and dropdowns requiring two clicks
wlsnmrk Jan 7, 2025
084e84b
Add AgX tonemapper option to Environment
Calinou Jan 1, 2024
abd0e69
Renderer: minor optimisation when running `gl_compatibility` mode
stuartcarnie Jan 8, 2025
21721ae
Merge pull request #87260 from Calinou/tonemap-add-agx
akien-mga Jan 8, 2025
bfa351c
Merge pull request #101246 from wlsnmrk/dropdown-fix
akien-mga Jan 8, 2025
a659548
Merge pull request #101298 from stuartcarnie/rendering_server
akien-mga Jan 8, 2025
08a2f0a
Fix LookAtModifier rest space rotation
TokageItLab Jan 8, 2025
6f3cc27
Merge pull request #101178 from BlueCube3310/web-high-quality
akien-mga Jan 8, 2025
88c457e
CI: Ensure problem matchers handle colored output
Repiteo Jan 8, 2025
4d77bbf
Merge pull request #100069 from allenwp/editor-shortcuts-undo-fix
akien-mga Jan 8, 2025
8e0f498
Merge pull request #101266 from WhalesState/color-picking-fix
akien-mga Jan 8, 2025
2a2adfa
Merge pull request #101267 from Summersay415/angle-libs
akien-mga Jan 8, 2025
f83919c
Merge pull request #101311 from TokageItLab/fix-lookat-rest
akien-mga Jan 8, 2025
8c6dbff
Merge pull request #101316 from Repiteo/ci/problem-matchers-color
akien-mga Jan 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 13 additions & 33 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,10 @@ EnsureSConsVersion(4, 0)
EnsurePythonVersion(3, 8)

# System
import atexit
import glob
import os
import pickle
import sys
import time
from collections import OrderedDict
from importlib.util import module_from_spec, spec_from_file_location
from types import ModuleType
Expand Down Expand Up @@ -52,13 +50,14 @@ _helper_module("platform_methods", "platform_methods.py")
_helper_module("version", "version.py")
_helper_module("core.core_builders", "core/core_builders.py")
_helper_module("main.main_builders", "main/main_builders.py")
_helper_module("misc.utility.color", "misc/utility/color.py")

# Local
import gles3_builders
import glsl_builders
import methods
import scu_builders
from methods import Ansi, print_error, print_info, print_warning
from misc.utility.color import STDERR_COLOR, print_error, print_info, print_warning
from platform_methods import architecture_aliases, architectures, compatibility_platform_aliases

if ARGUMENTS.get("target", "editor") == "editor":
Expand All @@ -74,8 +73,6 @@ platform_doc_class_path = {}
platform_exporters = []
platform_apis = []

time_at_start = time.time()

for x in sorted(glob.glob("platform/*")):
if not os.path.isdir(x) or not os.path.exists(x + "/detect.py"):
continue
Expand Down Expand Up @@ -198,7 +195,7 @@ opts.Add(BoolVariable("threads", "Enable threading support", True))
opts.Add(BoolVariable("deprecated", "Enable compatibility code for deprecated and removed features", True))
opts.Add(EnumVariable("precision", "Set the floating-point precision level", "single", ("single", "double")))
opts.Add(BoolVariable("minizip", "Enable ZIP archive support using minizip", True))
opts.Add(BoolVariable("brotli", "Enable Brotli for decompresson and WOFF2 fonts support", True))
opts.Add(BoolVariable("brotli", "Enable Brotli for decompression and WOFF2 fonts support", True))
opts.Add(BoolVariable("xaudio2", "Enable the XAudio2 audio driver on supported platforms", False))
opts.Add(BoolVariable("vulkan", "Enable the vulkan rendering driver", True))
opts.Add(BoolVariable("opengl3", "Enable the OpenGL/GLES3 rendering driver", True))
Expand Down Expand Up @@ -702,6 +699,14 @@ if env["arch"] == "x86_32":
else:
env.Append(CCFLAGS=["-msse2"])

# Explicitly specify colored output.
if methods.using_gcc(env):
env.AppendUnique(CCFLAGS=["-fdiagnostics-color" if STDERR_COLOR else "-fno-diagnostics-color"])
elif methods.using_clang(env) or methods.using_emcc(env):
env.AppendUnique(CCFLAGS=["-fcolor-diagnostics" if STDERR_COLOR else "-fno-color-diagnostics"])
if sys.platform == "win32":
env.AppendUnique(CCFLAGS=["-fansi-escape-codes"])

# Set optimize and debug_symbols flags.
# "custom" means do nothing and let users set their own optimization flags.
# Needs to happen after configure to have `env.msvc` defined.
Expand Down Expand Up @@ -1086,30 +1091,5 @@ methods.show_progress(env)
# TODO: replace this with `env.Dump(format="json")`
# once we start requiring SCons 4.0 as min version.
methods.dump(env)


def print_elapsed_time():
elapsed_time_sec = round(time.time() - time_at_start, 2)
time_centiseconds = round((elapsed_time_sec % 1) * 100)
print(
"{}[Time elapsed: {}.{:02}]{}".format(
Ansi.GRAY,
time.strftime("%H:%M:%S", time.gmtime(elapsed_time_sec)),
time_centiseconds,
Ansi.RESET,
)
)


atexit.register(print_elapsed_time)


def purge_flaky_files():
paths_to_keep = [env["ninja_file"]]
for build_failure in GetBuildFailures():
path = build_failure.node.path
if os.path.isfile(path) and path not in paths_to_keep:
os.remove(path)


atexit.register(purge_flaky_files)
methods.prepare_purge(env)
methods.prepare_timer()
12 changes: 6 additions & 6 deletions core/math/delaunay_3d.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,9 @@ class Delaunay3D {
R128 row3_y = v3_y - v0_y;
R128 row3_z = v3_z - v0_z;

R128 sq_lenght1 = row1_x * row1_x + row1_y * row1_y + row1_z * row1_z;
R128 sq_lenght2 = row2_x * row2_x + row2_y * row2_y + row2_z * row2_z;
R128 sq_lenght3 = row3_x * row3_x + row3_y * row3_y + row3_z * row3_z;
R128 sq_length1 = row1_x * row1_x + row1_y * row1_y + row1_z * row1_z;
R128 sq_length2 = row2_x * row2_x + row2_y * row2_y + row2_z * row2_z;
R128 sq_length3 = row3_x * row3_x + row3_y * row3_y + row3_z * row3_z;

// Compute the determinant of said matrix.
R128 determinant = row1_x * (row2_y * row3_z - row3_y * row2_z) - row2_x * (row1_y * row3_z - row3_y * row1_z) + row3_x * (row1_y * row2_z - row2_y * row1_z);
Expand All @@ -146,9 +146,9 @@ class Delaunay3D {
R128 volume = determinant / R128(6.f);
R128 i12volume = R128(1.f) / (volume * R128(12.f));

R128 center_x = v0_x + i12volume * ((row2_y * row3_z - row3_y * row2_z) * sq_lenght1 - (row1_y * row3_z - row3_y * row1_z) * sq_lenght2 + (row1_y * row2_z - row2_y * row1_z) * sq_lenght3);
R128 center_y = v0_y + i12volume * (-(row2_x * row3_z - row3_x * row2_z) * sq_lenght1 + (row1_x * row3_z - row3_x * row1_z) * sq_lenght2 - (row1_x * row2_z - row2_x * row1_z) * sq_lenght3);
R128 center_z = v0_z + i12volume * ((row2_x * row3_y - row3_x * row2_y) * sq_lenght1 - (row1_x * row3_y - row3_x * row1_y) * sq_lenght2 + (row1_x * row2_y - row2_x * row1_y) * sq_lenght3);
R128 center_x = v0_x + i12volume * ((row2_y * row3_z - row3_y * row2_z) * sq_length1 - (row1_y * row3_z - row3_y * row1_z) * sq_length2 + (row1_y * row2_z - row2_y * row1_z) * sq_length3);
R128 center_y = v0_y + i12volume * (-(row2_x * row3_z - row3_x * row2_z) * sq_length1 + (row1_x * row3_z - row3_x * row1_z) * sq_length2 - (row1_x * row2_z - row2_x * row1_z) * sq_length3);
R128 center_z = v0_z + i12volume * ((row2_x * row3_y - row3_x * row2_y) * sq_length1 - (row1_x * row3_y - row3_x * row1_y) * sq_length2 + (row1_x * row2_y - row2_x * row1_y) * sq_length3);

// Once we know the center, the radius is clearly the distance to any vertex.
R128 rel1_x = center_x - v0_x;
Expand Down
12 changes: 6 additions & 6 deletions core/templates/rid_owner.h
Original file line number Diff line number Diff line change
Expand Up @@ -417,8 +417,8 @@ class RID_Alloc : public RID_AllocBase {
}
}

void set_description(const char *p_descrption) {
description = p_descrption;
void set_description(const char *p_description) {
description = p_description;
}

RID_Alloc(uint32_t p_target_chunk_byte_size = 65536, uint32_t p_maximum_number_of_elements = 262144) {
Expand Down Expand Up @@ -515,8 +515,8 @@ class RID_PtrOwner {
alloc.fill_owned_buffer(p_rid_buffer);
}

void set_description(const char *p_descrption) {
alloc.set_description(p_descrption);
void set_description(const char *p_description) {
alloc.set_description(p_description);
}

RID_PtrOwner(uint32_t p_target_chunk_byte_size = 65536, uint32_t p_maximum_number_of_elements = 262144) :
Expand Down Expand Up @@ -570,8 +570,8 @@ class RID_Owner {
alloc.fill_owned_buffer(p_rid_buffer);
}

void set_description(const char *p_descrption) {
alloc.set_description(p_descrption);
void set_description(const char *p_description) {
alloc.set_description(p_description);
}
RID_Owner(uint32_t p_target_chunk_byte_size = 65536, uint32_t p_maximum_number_of_elements = 262144) :
alloc(p_target_chunk_byte_size, p_maximum_number_of_elements) {}
Expand Down
21 changes: 21 additions & 0 deletions core/variant/variant.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2378,66 +2378,79 @@ Variant::Variant(const ObjectID &p_id) :
Variant::Variant(const StringName &p_string) :
type(STRING_NAME) {
memnew_placement(_data._mem, StringName(p_string));
static_assert(sizeof(StringName) <= sizeof(_data._mem));
}

Variant::Variant(const String &p_string) :
type(STRING) {
memnew_placement(_data._mem, String(p_string));
static_assert(sizeof(String) <= sizeof(_data._mem));
}

Variant::Variant(const char *const p_cstring) :
type(STRING) {
memnew_placement(_data._mem, String((const char *)p_cstring));
static_assert(sizeof(String) <= sizeof(_data._mem));
}

Variant::Variant(const char32_t *p_wstring) :
type(STRING) {
memnew_placement(_data._mem, String(p_wstring));
static_assert(sizeof(String) <= sizeof(_data._mem));
}

Variant::Variant(const Vector3 &p_vector3) :
type(VECTOR3) {
memnew_placement(_data._mem, Vector3(p_vector3));
static_assert(sizeof(Vector3) <= sizeof(_data._mem));
}

Variant::Variant(const Vector3i &p_vector3i) :
type(VECTOR3I) {
memnew_placement(_data._mem, Vector3i(p_vector3i));
static_assert(sizeof(Vector3i) <= sizeof(_data._mem));
}

Variant::Variant(const Vector4 &p_vector4) :
type(VECTOR4) {
memnew_placement(_data._mem, Vector4(p_vector4));
static_assert(sizeof(Vector4) <= sizeof(_data._mem));
}

Variant::Variant(const Vector4i &p_vector4i) :
type(VECTOR4I) {
memnew_placement(_data._mem, Vector4i(p_vector4i));
static_assert(sizeof(Vector4i) <= sizeof(_data._mem));
}

Variant::Variant(const Vector2 &p_vector2) :
type(VECTOR2) {
memnew_placement(_data._mem, Vector2(p_vector2));
static_assert(sizeof(Vector2) <= sizeof(_data._mem));
}

Variant::Variant(const Vector2i &p_vector2i) :
type(VECTOR2I) {
memnew_placement(_data._mem, Vector2i(p_vector2i));
static_assert(sizeof(Vector2i) <= sizeof(_data._mem));
}

Variant::Variant(const Rect2 &p_rect2) :
type(RECT2) {
memnew_placement(_data._mem, Rect2(p_rect2));
static_assert(sizeof(Rect2) <= sizeof(_data._mem));
}

Variant::Variant(const Rect2i &p_rect2i) :
type(RECT2I) {
memnew_placement(_data._mem, Rect2i(p_rect2i));
static_assert(sizeof(Rect2i) <= sizeof(_data._mem));
}

Variant::Variant(const Plane &p_plane) :
type(PLANE) {
memnew_placement(_data._mem, Plane(p_plane));
static_assert(sizeof(Plane) <= sizeof(_data._mem));
}

Variant::Variant(const ::AABB &p_aabb) :
Expand All @@ -2455,6 +2468,7 @@ Variant::Variant(const Basis &p_matrix) :
Variant::Variant(const Quaternion &p_quaternion) :
type(QUATERNION) {
memnew_placement(_data._mem, Quaternion(p_quaternion));
static_assert(sizeof(Quaternion) <= sizeof(_data._mem));
}

Variant::Variant(const Transform3D &p_transform) :
Expand All @@ -2478,16 +2492,19 @@ Variant::Variant(const Transform2D &p_transform) :
Variant::Variant(const Color &p_color) :
type(COLOR) {
memnew_placement(_data._mem, Color(p_color));
static_assert(sizeof(Color) <= sizeof(_data._mem));
}

Variant::Variant(const NodePath &p_node_path) :
type(NODE_PATH) {
memnew_placement(_data._mem, NodePath(p_node_path));
static_assert(sizeof(NodePath) <= sizeof(_data._mem));
}

Variant::Variant(const ::RID &p_rid) :
type(RID) {
memnew_placement(_data._mem, ::RID(p_rid));
static_assert(sizeof(::RID) <= sizeof(_data._mem));
}

Variant::Variant(const Object *p_object) :
Expand All @@ -2499,21 +2516,25 @@ Variant::Variant(const Object *p_object) :
Variant::Variant(const Callable &p_callable) :
type(CALLABLE) {
memnew_placement(_data._mem, Callable(p_callable));
static_assert(sizeof(Callable) <= sizeof(_data._mem));
}

Variant::Variant(const Signal &p_callable) :
type(SIGNAL) {
memnew_placement(_data._mem, Signal(p_callable));
static_assert(sizeof(Signal) <= sizeof(_data._mem));
}

Variant::Variant(const Dictionary &p_dictionary) :
type(DICTIONARY) {
memnew_placement(_data._mem, Dictionary(p_dictionary));
static_assert(sizeof(Dictionary) <= sizeof(_data._mem));
}

Variant::Variant(const Array &p_array) :
type(ARRAY) {
memnew_placement(_data._mem, Array(p_array));
static_assert(sizeof(Array) <= sizeof(_data._mem));
}

Variant::Variant(const PackedByteArray &p_byte_array) :
Expand Down
30 changes: 15 additions & 15 deletions core/variant/variant_setget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
} \
};

#define INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(m_base_type, m_elem_type, m_assign_type, m_max) \
#define INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(m_base_type, m_elem_type, m_assign_type, m_max) \
struct VariantIndexedSetGet_##m_base_type { \
static void get(const Variant *base, int64_t index, Variant *value, bool *oob) { \
if (index < 0 || index >= m_max) { \
Expand Down Expand Up @@ -541,7 +541,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
} \
};

#define INDEXED_SETGET_STRUCT_BULTIN_ACCESSOR(m_base_type, m_elem_type, m_accessor, m_max) \
#define INDEXED_SETGET_STRUCT_BUILTIN_ACCESSOR(m_base_type, m_elem_type, m_accessor, m_max) \
struct VariantIndexedSetGet_##m_base_type { \
static void get(const Variant *base, int64_t index, Variant *value, bool *oob) { \
if (index < 0 || index >= m_max) { \
Expand Down Expand Up @@ -597,7 +597,7 @@ Variant Variant::get_named(const StringName &p_member, bool &r_valid) const {
} \
};

#define INDEXED_SETGET_STRUCT_BULTIN_FUNC(m_base_type, m_elem_type, m_set, m_get, m_max) \
#define INDEXED_SETGET_STRUCT_BUILTIN_FUNC(m_base_type, m_elem_type, m_set, m_get, m_max) \
struct VariantIndexedSetGet_##m_base_type { \
static void get(const Variant *base, int64_t index, Variant *value, bool *oob) { \
if (index < 0 || index >= m_max) { \
Expand Down Expand Up @@ -844,18 +844,18 @@ struct VariantIndexedSetGet_String {
static uint64_t get_indexed_size(const Variant *base) { return VariantInternal::get_string(base)->length(); }
};

INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Vector2, double, real_t, 2)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Vector2i, int64_t, int32_t, 2)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Vector3, double, real_t, 3)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Vector3i, int64_t, int32_t, 3)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Vector4, double, real_t, 4)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Vector4i, int64_t, int32_t, 4)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Quaternion, double, real_t, 4)
INDEXED_SETGET_STRUCT_BULTIN_NUMERIC(Color, double, float, 4)

INDEXED_SETGET_STRUCT_BULTIN_ACCESSOR(Transform2D, Vector2, .columns, 3)
INDEXED_SETGET_STRUCT_BULTIN_FUNC(Basis, Vector3, set_column, get_column, 3)
INDEXED_SETGET_STRUCT_BULTIN_ACCESSOR(Projection, Vector4, .columns, 4)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Vector2, double, real_t, 2)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Vector2i, int64_t, int32_t, 2)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Vector3, double, real_t, 3)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Vector3i, int64_t, int32_t, 3)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Vector4, double, real_t, 4)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Vector4i, int64_t, int32_t, 4)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Quaternion, double, real_t, 4)
INDEXED_SETGET_STRUCT_BUILTIN_NUMERIC(Color, double, float, 4)

INDEXED_SETGET_STRUCT_BUILTIN_ACCESSOR(Transform2D, Vector2, .columns, 3)
INDEXED_SETGET_STRUCT_BUILTIN_FUNC(Basis, Vector3, set_column, get_column, 3)
INDEXED_SETGET_STRUCT_BUILTIN_ACCESSOR(Projection, Vector4, .columns, 4)

INDEXED_SETGET_STRUCT_TYPED_NUMERIC(PackedByteArray, int64_t, uint8_t)
INDEXED_SETGET_STRUCT_TYPED_NUMERIC(PackedInt32Array, int64_t, int32_t)
Expand Down
2 changes: 1 addition & 1 deletion doc/Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -1475,7 +1475,7 @@ EXT_LINKS_IN_WINDOW = NO

FORMULA_FONTSIZE = 10

# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
# supported properly for IE 6.0, but are supported on all modern browsers.
#
Expand Down
6 changes: 5 additions & 1 deletion doc/classes/Environment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,8 @@
The tonemapping mode to use. Tonemapping is the process that "converts" HDR values to be suitable for rendering on an LDR display. (Godot doesn't support rendering on HDR displays yet.)
</member>
<member name="tonemap_white" type="float" setter="set_tonemap_white" getter="get_tonemap_white" default="1.0">
The white reference value for tonemapping (also called "whitepoint"). Higher values can make highlights look less blown out, and will also slightly darken the whole scene as a result. Only effective if the [member tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR]. See also [member tonemap_exposure].
The white reference value for tonemapping (also called "whitepoint"). Higher values can make highlights look less blown out, and will also slightly darken the whole scene as a result. See also [member tonemap_exposure].
[b]Note:[/b] [member tonemap_white] is ignored when using [constant TONE_MAPPER_LINEAR] or [constant TONE_MAPPER_AGX].
</member>
<member name="volumetric_fog_albedo" type="Color" setter="set_volumetric_fog_albedo" getter="get_volumetric_fog_albedo" default="Color(1, 1, 1, 1)">
The [Color] of the volumetric fog when interacting with lights. Mist and fog have an albedo close to [code]Color(1, 1, 1, 1)[/code] while smoke has a darker albedo.
Expand Down Expand Up @@ -425,6 +426,9 @@
Use the Academy Color Encoding System tonemapper. ACES is slightly more expensive than other options, but it handles bright lighting in a more realistic fashion by desaturating it as it becomes brighter. ACES typically has a more contrasted output compared to [constant TONE_MAPPER_REINHARDT] and [constant TONE_MAPPER_FILMIC].
[b]Note:[/b] This tonemapping operator is called "ACES Fitted" in Godot 3.x.
</constant>
<constant name="TONE_MAPPER_AGX" value="4" enum="ToneMapper">
Use the AgX tonemapper. AgX is slightly more expensive than other options, but it handles bright lighting in a more realistic fashion by desaturating it as it becomes brighter. AgX is less likely to darken parts of the scene compared to [constant TONE_MAPPER_ACES] and can match the overall scene brightness of [constant TONE_MAPPER_FILMIC] more closely.
</constant>
<constant name="GLOW_BLEND_MODE_ADDITIVE" value="0" enum="GlowBlendMode">
Additive glow blending mode. Mostly used for particles, glows (bloom), lens flare, bright sources.
</constant>
Expand Down
Loading
Loading