mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-05-13 17:02:07 +02:00
Merge pull request #2 from flashshare/Relintai-master
Update Relintai master
This commit is contained in:
commit
d07c962a50
56
.github/disabled_workflows/static_checks.yml
vendored
Normal file
56
.github/disabled_workflows/static_checks.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
name: 📊 Static Checks
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-static
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
static-checks:
|
||||||
|
name: Static Checks (clang-format, black format, file format, documentation checks)
|
||||||
|
runs-on: "ubuntu-24.04"
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
# Azure repositories are flaky, remove them.
|
||||||
|
sudo rm -f /etc/apt/sources.list.d/{azure,microsoft}*
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -qq dos2unix libxml2-utils python3-pip moreutils
|
||||||
|
sudo update-alternatives --remove-all clang-format || true
|
||||||
|
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-16 100
|
||||||
|
sudo pip3 install black==24.10.0 pygments
|
||||||
|
|
||||||
|
# This needs to happen before Python and npm execution; it must happen before any extra files are written.
|
||||||
|
- name: .gitignore checks (gitignore_check.sh)
|
||||||
|
run: |
|
||||||
|
bash ./misc/scripts/gitignore_check.sh
|
||||||
|
|
||||||
|
- name: File formatting checks (file_format.sh)
|
||||||
|
run: |
|
||||||
|
bash ./misc/scripts/file_format.sh
|
||||||
|
|
||||||
|
- name: Style checks via clang-format (clang_format.sh)
|
||||||
|
run: |
|
||||||
|
bash ./misc/scripts/clang_format.sh
|
||||||
|
|
||||||
|
- name: Python style checks via black (black_format.sh)
|
||||||
|
run: |
|
||||||
|
bash ./misc/scripts/black_format.sh
|
||||||
|
|
||||||
|
- name: JavaScript style and documentation checks via ESLint and JSDoc
|
||||||
|
run: |
|
||||||
|
cd platform/javascript
|
||||||
|
npm ci
|
||||||
|
npm run lint
|
||||||
|
npm run docs -- -d dry-run
|
||||||
|
|
||||||
|
- name: Documentation checks
|
||||||
|
run: |
|
||||||
|
doc/tools/make_rst.py --dry-run doc/classes modules
|
||||||
|
|
||||||
|
- name: Style checks via clang-format (clang_format.sh)
|
||||||
|
run: |
|
||||||
|
bash ./misc/scripts/clang_format.sh
|
11
.github/workflows/android_builds.yml
vendored
11
.github/workflows/android_builds.yml
vendored
@ -13,21 +13,12 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
android-template:
|
android-template:
|
||||||
runs-on: "ubuntu-20.04"
|
runs-on: "ubuntu-24.04"
|
||||||
|
|
||||||
name: Template (target=release, tools=no)
|
name: Template (target=release, tools=no)
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# Azure repositories are not reliable, we need to prevent azure giving us packages.
|
|
||||||
- name: Make apt sources.list use the default Ubuntu repositories
|
|
||||||
run: |
|
|
||||||
sudo rm -f /etc/apt/sources.list.d/*
|
|
||||||
sudo cp -f misc/ci/sources.list /etc/apt/sources.list
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install gcc-multilib
|
|
||||||
|
|
||||||
- name: Set up Java 17
|
- name: Set up Java 17
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
|
2
.github/workflows/javascript_builds.yml
vendored
2
.github/workflows/javascript_builds.yml
vendored
@ -15,7 +15,7 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
javascript-template:
|
javascript-template:
|
||||||
runs-on: "ubuntu-22.04"
|
runs-on: "ubuntu-24.04"
|
||||||
name: Template (target=release, tools=no)
|
name: Template (target=release, tools=no)
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
## [Master]
|
## [Master]
|
||||||
|
|
||||||
Nothing yet.
|
- Backported everything up to and including https://github.com/godotengine/godot/commit/12e9b22777c5e8de47b6731e7b5367cf1276af21
|
||||||
|
|
||||||
## [4.5.0]
|
## [4.5.0]
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ static void *pandemonium_open(void *data, const char *p_fname, int mode) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
FileAccess *f = FileAccess::open(p_fname, FileAccess::READ);
|
FileAccess *f = FileAccess::open(String::utf8(p_fname), FileAccess::READ);
|
||||||
ERR_FAIL_COND_V(!f, nullptr);
|
ERR_FAIL_COND_V(!f, nullptr);
|
||||||
|
|
||||||
return f;
|
return f;
|
||||||
|
@ -714,13 +714,14 @@ PoolByteArray HTTPClient::read_response_body_chunk() {
|
|||||||
chunk_left -= rec;
|
chunk_left -= rec;
|
||||||
|
|
||||||
if (chunk_left == 0) {
|
if (chunk_left == 0) {
|
||||||
if (chunk[chunk.size() - 2] != '\r' || chunk[chunk.size() - 1] != '\n') {
|
const int chunk_size = chunk.size();
|
||||||
|
if (chunk[chunk_size - 2] != '\r' || chunk[chunk_size - 1] != '\n') {
|
||||||
ERR_PRINT("HTTP Invalid chunk terminator (not \\r\\n)");
|
ERR_PRINT("HTTP Invalid chunk terminator (not \\r\\n)");
|
||||||
status = STATUS_CONNECTION_ERROR;
|
status = STATUS_CONNECTION_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.resize(chunk.size() - 2);
|
ret.resize(chunk_size - 2);
|
||||||
PoolByteArray::Write w = ret.write();
|
PoolByteArray::Write w = ret.write();
|
||||||
memcpy(w.ptr(), chunk.ptr(), ret.size());
|
memcpy(w.ptr(), chunk.ptr(), ret.size());
|
||||||
chunk.clear();
|
chunk.clear();
|
||||||
|
@ -106,8 +106,21 @@ Error PacketPeerUDP::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
|
|||||||
return ERR_UNAVAILABLE;
|
return ERR_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Bogus GCC warning here:
|
||||||
|
* In member function 'int RingBuffer<T>::read(T*, int, bool) [with T = unsigned char]',
|
||||||
|
* inlined from 'virtual Error PacketPeerUDP::get_packet(const uint8_t**, int&)' at core/io/packet_peer_udp.cpp:112:9,
|
||||||
|
* inlined from 'virtual Error PacketPeerUDP::get_packet(const uint8_t**, int&)' at core/io/packet_peer_udp.cpp:99:7:
|
||||||
|
* Error: ./core/ring_buffer.h:68:46: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
|
||||||
|
* 68 | p_buf[dst++] = read[pos + i];
|
||||||
|
* | ~~~~~~~~~~~~~^~~~~~~
|
||||||
|
*/
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
#pragma GCC diagnostic push
|
||||||
|
#pragma GCC diagnostic warning "-Wstringop-overflow=0"
|
||||||
|
#endif
|
||||||
|
|
||||||
uint32_t size = 0;
|
uint32_t size = 0;
|
||||||
uint8_t ipv6[16];
|
uint8_t ipv6[16] = {};
|
||||||
rb.read(ipv6, 16, true);
|
rb.read(ipv6, 16, true);
|
||||||
packet_ip.set_ipv6(ipv6);
|
packet_ip.set_ipv6(ipv6);
|
||||||
rb.read((uint8_t *)&packet_port, 4, true);
|
rb.read((uint8_t *)&packet_port, 4, true);
|
||||||
@ -116,6 +129,11 @@ Error PacketPeerUDP::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
|
|||||||
--queue_count;
|
--queue_count;
|
||||||
*r_buffer = packet_buffer;
|
*r_buffer = packet_buffer;
|
||||||
r_buffer_size = size;
|
r_buffer_size = size;
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__)
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,12 +214,12 @@ void StreamPeer::put_var(const Variant &p_variant, bool p_full_objects) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t StreamPeer::get_u8() {
|
uint8_t StreamPeer::get_u8() {
|
||||||
uint8_t buf[1];
|
uint8_t buf[1] = {};
|
||||||
get_data(buf, 1);
|
get_data(buf, 1);
|
||||||
return buf[0];
|
return buf[0];
|
||||||
}
|
}
|
||||||
int8_t StreamPeer::get_8() {
|
int8_t StreamPeer::get_8() {
|
||||||
uint8_t buf[1];
|
uint8_t buf[1] = {};
|
||||||
get_data(buf, 1);
|
get_data(buf, 1);
|
||||||
return buf[0];
|
return buf[0];
|
||||||
}
|
}
|
||||||
|
@ -254,6 +254,10 @@ void TranslationServer::init_locale_info() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String TranslationServer::standardize_locale(const String &p_locale) const {
|
String TranslationServer::standardize_locale(const String &p_locale) const {
|
||||||
|
return _standardize_locale(p_locale, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
String TranslationServer::_standardize_locale(const String &p_locale, bool p_add_defaults) const {
|
||||||
// Replaces '-' with '_' for macOS style locales.
|
// Replaces '-' with '_' for macOS style locales.
|
||||||
String univ_locale = p_locale.replace("-", "_");
|
String univ_locale = p_locale.replace("-", "_");
|
||||||
|
|
||||||
@ -315,6 +319,7 @@ String TranslationServer::standardize_locale(const String &p_locale) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add script code base on language and country codes for some ambiguous cases.
|
// Add script code base on language and country codes for some ambiguous cases.
|
||||||
|
if (p_add_defaults) {
|
||||||
if (script.empty()) {
|
if (script.empty()) {
|
||||||
for (int i = 0; i < locale_script_info.size(); i++) {
|
for (int i = 0; i < locale_script_info.size(); i++) {
|
||||||
const LocaleScriptInfo &info = locale_script_info[i];
|
const LocaleScriptInfo &info = locale_script_info[i];
|
||||||
@ -336,6 +341,7 @@ String TranslationServer::standardize_locale(const String &p_locale) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Combine results.
|
// Combine results.
|
||||||
String locale = lang;
|
String locale = lang;
|
||||||
@ -352,17 +358,34 @@ String TranslationServer::standardize_locale(const String &p_locale) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int TranslationServer::compare_locales(const String &p_locale_a, const String &p_locale_b) const {
|
int TranslationServer::compare_locales(const String &p_locale_a, const String &p_locale_b) const {
|
||||||
String locale_a = standardize_locale(p_locale_a);
|
if (p_locale_a == p_locale_b) {
|
||||||
String locale_b = standardize_locale(p_locale_b);
|
// Exact match.
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
const String cache_key = p_locale_a + "|" + p_locale_b;
|
||||||
|
const int *cached_result = locale_compare_cache.getptr(cache_key);
|
||||||
|
if (cached_result) {
|
||||||
|
return *cached_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
String locale_a = _standardize_locale(p_locale_a, true);
|
||||||
|
String locale_b = _standardize_locale(p_locale_b, true);
|
||||||
|
|
||||||
if (locale_a == locale_b) {
|
if (locale_a == locale_b) {
|
||||||
// Exact match.
|
// Exact match.
|
||||||
|
locale_compare_cache.set(cache_key, 10);
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> locale_a_elements = locale_a.split("_");
|
Vector<String> locale_a_elements = locale_a.split("_");
|
||||||
Vector<String> locale_b_elements = locale_b.split("_");
|
Vector<String> locale_b_elements = locale_b.split("_");
|
||||||
if (locale_a_elements[0] == locale_b_elements[0]) {
|
if (locale_a_elements[0] != locale_b_elements[0]) {
|
||||||
|
// No match.
|
||||||
|
locale_compare_cache.set(cache_key, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Matching language, both locales have extra parts.
|
// Matching language, both locales have extra parts.
|
||||||
// Return number of matching elements.
|
// Return number of matching elements.
|
||||||
int matching_elements = 1;
|
int matching_elements = 1;
|
||||||
@ -373,11 +396,8 @@ int TranslationServer::compare_locales(const String &p_locale_a, const String &p
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
locale_compare_cache.set(cache_key, matching_elements);
|
||||||
return matching_elements;
|
return matching_elements;
|
||||||
} else {
|
|
||||||
// No match.
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String TranslationServer::get_locale_name(const String &p_locale) const {
|
String TranslationServer::get_locale_name(const String &p_locale) const {
|
||||||
|
@ -88,6 +88,8 @@ class TranslationServer : public Object {
|
|||||||
Ref<Translation> tool_translation;
|
Ref<Translation> tool_translation;
|
||||||
Ref<Translation> doc_translation;
|
Ref<Translation> doc_translation;
|
||||||
|
|
||||||
|
mutable HashMap<String, int> locale_compare_cache;
|
||||||
|
|
||||||
bool enabled;
|
bool enabled;
|
||||||
|
|
||||||
static TranslationServer *singleton;
|
static TranslationServer *singleton;
|
||||||
@ -123,6 +125,7 @@ public:
|
|||||||
|
|
||||||
int compare_locales(const String &p_locale_a, const String &p_locale_b) const;
|
int compare_locales(const String &p_locale_a, const String &p_locale_b) const;
|
||||||
String standardize_locale(const String &p_locale) const;
|
String standardize_locale(const String &p_locale) const;
|
||||||
|
String _standardize_locale(const String &p_locale, bool p_add_defaults) const;
|
||||||
|
|
||||||
Vector<String> get_all_languages() const;
|
Vector<String> get_all_languages() const;
|
||||||
String get_language_name(const String &p_language) const;
|
String get_language_name(const String &p_language) const;
|
||||||
|
@ -331,6 +331,10 @@ void String::copy_from(const wchar_t *p_cstr, const int p_clip_to) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void String::copy_from(const Char16String &p_str) {
|
||||||
|
parse_utf16(p_str.ptr());
|
||||||
|
}
|
||||||
|
|
||||||
void String::copy_from(const CharType &p_char) {
|
void String::copy_from(const CharType &p_char) {
|
||||||
if (p_char == 0) {
|
if (p_char == 0) {
|
||||||
#if PRINT_UNICODE_ERRORS
|
#if PRINT_UNICODE_ERRORS
|
||||||
@ -2731,13 +2735,16 @@ Vector<float> String::split_floats(const String &p_splitter, bool p_allow_empty)
|
|||||||
int from = 0;
|
int from = 0;
|
||||||
int len = length();
|
int len = length();
|
||||||
|
|
||||||
|
String buffer = *this;
|
||||||
while (true) {
|
while (true) {
|
||||||
int end = find(p_splitter, from);
|
int end = find(p_splitter, from);
|
||||||
if (end < 0) {
|
if (end < 0) {
|
||||||
end = len;
|
end = len;
|
||||||
}
|
}
|
||||||
if (p_allow_empty || (end > from)) {
|
if (p_allow_empty || (end > from)) {
|
||||||
ret.push_back(String::to_double(&get_data()[from]));
|
buffer[end] = 0;
|
||||||
|
ret.push_back(String::to_double(&buffer.get_data()[from]));
|
||||||
|
buffer[end] = _cowdata.get(end);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (end == len) {
|
if (end == len) {
|
||||||
@ -2755,6 +2762,7 @@ Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_
|
|||||||
int from = 0;
|
int from = 0;
|
||||||
int len = length();
|
int len = length();
|
||||||
|
|
||||||
|
String buffer = *this;
|
||||||
while (true) {
|
while (true) {
|
||||||
int idx;
|
int idx;
|
||||||
int end = findmk(p_splitters, from, &idx);
|
int end = findmk(p_splitters, from, &idx);
|
||||||
@ -2766,7 +2774,9 @@ Vector<float> String::split_floats_mk(const Vector<String> &p_splitters, bool p_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (p_allow_empty || (end > from)) {
|
if (p_allow_empty || (end > from)) {
|
||||||
ret.push_back(String::to_double(&get_data()[from]));
|
buffer[end] = 0;
|
||||||
|
ret.push_back(String::to_double(&buffer.get_data()[from]));
|
||||||
|
buffer[end] = _cowdata.get(end);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (end == len) {
|
if (end == len) {
|
||||||
@ -5155,6 +5165,10 @@ String::String(const CharType *p_str) {
|
|||||||
copy_from(p_str);
|
copy_from(p_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String::String(const Char16String &p_str) {
|
||||||
|
copy_from(p_str);
|
||||||
|
}
|
||||||
|
|
||||||
String::String(const char *p_str, int p_clip_to_len) {
|
String::String(const char *p_str, int p_clip_to_len) {
|
||||||
copy_from(p_str, p_clip_to_len);
|
copy_from(p_str, p_clip_to_len);
|
||||||
}
|
}
|
||||||
|
@ -569,6 +569,7 @@ public:
|
|||||||
String(const char *p_str);
|
String(const char *p_str);
|
||||||
String(const wchar_t *p_str);
|
String(const wchar_t *p_str);
|
||||||
String(const CharType *p_str);
|
String(const CharType *p_str);
|
||||||
|
String(const Char16String &p_str);
|
||||||
String(const char *p_str, int p_clip_to_len);
|
String(const char *p_str, int p_clip_to_len);
|
||||||
String(const wchar_t *p_str, int p_clip_to_len);
|
String(const wchar_t *p_str, int p_clip_to_len);
|
||||||
String(const CharType *p_str, int p_clip_to_len);
|
String(const CharType *p_str, int p_clip_to_len);
|
||||||
@ -582,6 +583,7 @@ private:
|
|||||||
void copy_from(const char *p_cstr, const int p_clip_to);
|
void copy_from(const char *p_cstr, const int p_clip_to);
|
||||||
void copy_from(const wchar_t *p_cstr);
|
void copy_from(const wchar_t *p_cstr);
|
||||||
void copy_from(const wchar_t *p_cstr, const int p_clip_to);
|
void copy_from(const wchar_t *p_cstr, const int p_clip_to);
|
||||||
|
void copy_from(const Char16String &p_str);
|
||||||
void copy_from(const CharType *p_cstr);
|
void copy_from(const CharType *p_cstr);
|
||||||
void copy_from(const CharType *p_cstr, const int p_clip_to);
|
void copy_from(const CharType *p_cstr, const int p_clip_to);
|
||||||
|
|
||||||
|
@ -113,6 +113,9 @@
|
|||||||
<theme_item name="hover" data_type="style" type="StyleBox">
|
<theme_item name="hover" data_type="style" type="StyleBox">
|
||||||
[StyleBox] used when the [Button] is being hovered.
|
[StyleBox] used when the [Button] is being hovered.
|
||||||
</theme_item>
|
</theme_item>
|
||||||
|
<theme_item name="hover_pressed" data_type="style" type="StyleBox">
|
||||||
|
[StyleBox] used when the [Button] is being hovered and pressed.
|
||||||
|
</theme_item>
|
||||||
<theme_item name="normal" data_type="style" type="StyleBox">
|
<theme_item name="normal" data_type="style" type="StyleBox">
|
||||||
Default [StyleBox] for the [Button].
|
Default [StyleBox] for the [Button].
|
||||||
</theme_item>
|
</theme_item>
|
||||||
|
@ -230,6 +230,15 @@
|
|||||||
<member name="glow_levels/7" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false">
|
<member name="glow_levels/7" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false">
|
||||||
If [code]true[/code], the 7th level of glow is enabled. This is the most "global" level (blurriest).
|
If [code]true[/code], the 7th level of glow is enabled. This is the most "global" level (blurriest).
|
||||||
</member>
|
</member>
|
||||||
|
<member name="glow_map" type="Texture" setter="set_glow_map" getter="get_glow_map">
|
||||||
|
The texture that should be used as a glow map to [i]multiply[/i] the resulting glow color according to [member glow_map_strength]. This can be used to create a "lens dirt" effect. The texture's RGB color channels are used for modulation, but the alpha channel is ignored.
|
||||||
|
[b]Note:[/b] The texture will be stretched to fit the screen. Therefore, it's recommended to use a texture with an aspect ratio that matches your project's base aspect ratio (typically 16:9).
|
||||||
|
[b]Note:[/b] [member glow_map] has no effect when using the GLES2 rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices.
|
||||||
|
</member>
|
||||||
|
<member name="glow_map_strength" type="float" setter="set_glow_map_strength" getter="get_glow_map_strength" default="0.8">
|
||||||
|
How strong of an impact the [member glow_map] should have on the overall glow effect. A strength of [code]0.0[/code] means the glow map has no effect on the overall glow effect. A strength of [code]1.0[/code] means the glow has a full effect on the overall glow effect (and can turn off glow entirely in specific areas of the screen if the glow map has black areas).
|
||||||
|
[b]Note:[/b] [member glow_map_strength] has no effect when using the GLES2 rendering method, due to this rendering method using a simpler glow implementation optimized for low-end devices.
|
||||||
|
</member>
|
||||||
<member name="glow_strength" type="float" setter="set_glow_strength" getter="get_glow_strength" default="1.0">
|
<member name="glow_strength" type="float" setter="set_glow_strength" getter="get_glow_strength" default="1.0">
|
||||||
The glow strength. When using the GLES2 renderer, this should be increased to 1.3 to compensate for the lack of HDR rendering.
|
The glow strength. When using the GLES2 renderer, this should be increased to 1.3 to compensate for the lack of HDR rendering.
|
||||||
</member>
|
</member>
|
||||||
|
@ -211,6 +211,7 @@
|
|||||||
If [code]exact[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
|
If [code]exact[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
|
||||||
[b]Note:[/b] Returning [code]true[/code] does not imply that the action is [i]still[/i] pressed. An action can be pressed and released again rapidly, and [code]true[/code] will still be returned so as not to miss input.
|
[b]Note:[/b] Returning [code]true[/code] does not imply that the action is [i]still[/i] pressed. An action can be pressed and released again rapidly, and [code]true[/code] will still be returned so as not to miss input.
|
||||||
[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
|
[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
|
||||||
|
[b]Note:[/b] During input handling (e.g. [method Node._input]), use [method InputEvent.is_action_pressed] instead to query the action state of the current event.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="is_action_just_released" qualifiers="const">
|
<method name="is_action_just_released" qualifiers="const">
|
||||||
@ -221,6 +222,7 @@
|
|||||||
Returns [code]true[/code] when the user [i]stops[/i] pressing the action event in the current frame or physics tick. It will only return [code]true[/code] on the frame or tick that the user releases the button.
|
Returns [code]true[/code] when the user [i]stops[/i] pressing the action event in the current frame or physics tick. It will only return [code]true[/code] on the frame or tick that the user releases the button.
|
||||||
If [code]exact[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
|
If [code]exact[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
|
||||||
[b]Note:[/b] Returning [code]true[/code] does not imply that the action is [i]still[/i] not pressed. An action can be released and pressed again rapidly, and [code]true[/code] will still be returned so as not to miss input.
|
[b]Note:[/b] Returning [code]true[/code] does not imply that the action is [i]still[/i] not pressed. An action can be released and pressed again rapidly, and [code]true[/code] will still be returned so as not to miss input.
|
||||||
|
[b]Note:[/b] During input handling (e.g. [method Node._input]), use [method InputEvent.is_action_released] instead to query the action state of the current event.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
<method name="is_action_pressed" qualifiers="const">
|
<method name="is_action_pressed" qualifiers="const">
|
||||||
|
@ -985,6 +985,15 @@
|
|||||||
Sets the variables to be used with the "glow" post-process effect. See [Environment3D] for more details.
|
Sets the variables to be used with the "glow" post-process effect. See [Environment3D] for more details.
|
||||||
</description>
|
</description>
|
||||||
</method>
|
</method>
|
||||||
|
<method name="environment_set_glow_map">
|
||||||
|
<return type="void" />
|
||||||
|
<argument index="0" name="env" type="RID" />
|
||||||
|
<argument index="1" name="glow_map_strength" type="float" />
|
||||||
|
<argument index="2" name="glow_map" type="RID" />
|
||||||
|
<description>
|
||||||
|
Sets the variables to be used with the glow map post-process effect. See [Environment] for more details.
|
||||||
|
</description>
|
||||||
|
</method>
|
||||||
<method name="environment_set_sky">
|
<method name="environment_set_sky">
|
||||||
<return type="void" />
|
<return type="void" />
|
||||||
<argument index="0" name="env" type="RID" />
|
<argument index="0" name="env" type="RID" />
|
||||||
|
@ -59,6 +59,7 @@ import sys
|
|||||||
sys.modules["_elementtree"] = None
|
sys.modules["_elementtree"] = None
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
|
||||||
|
|
||||||
## override the parser to get the line number
|
## override the parser to get the line number
|
||||||
class LineNumberingParser(ET.XMLParser):
|
class LineNumberingParser(ET.XMLParser):
|
||||||
def _start(self, *args, **kwargs):
|
def _start(self, *args, **kwargs):
|
||||||
|
@ -66,6 +66,7 @@ public:
|
|||||||
void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) {}
|
void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) {}
|
||||||
void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) {}
|
void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) {}
|
||||||
void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) {}
|
void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) {}
|
||||||
|
void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) {}
|
||||||
|
|
||||||
void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {}
|
void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {}
|
||||||
|
|
||||||
|
@ -841,6 +841,11 @@ void RasterizerSceneGLES2::environment_set_glow(RID p_env, bool p_enable, int p_
|
|||||||
env->glow_high_quality = p_high_quality;
|
env->glow_high_quality = p_high_quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RasterizerSceneGLES2::environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) {
|
||||||
|
Environment3D *env = environment_owner.getornull(p_env);
|
||||||
|
ERR_FAIL_COND(!env);
|
||||||
|
}
|
||||||
|
|
||||||
void RasterizerSceneGLES2::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
void RasterizerSceneGLES2::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
||||||
Environment3D *env = environment_owner.getornull(p_env);
|
Environment3D *env = environment_owner.getornull(p_env);
|
||||||
ERR_FAIL_COND(!env);
|
ERR_FAIL_COND(!env);
|
||||||
|
@ -484,6 +484,8 @@ public:
|
|||||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, RS::Environment3DDOFBlurQuality p_quality);
|
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, RS::Environment3DDOFBlurQuality p_quality);
|
||||||
|
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality);
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality);
|
||||||
|
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map);
|
||||||
|
|
||||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
||||||
|
|
||||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
||||||
|
@ -884,6 +884,15 @@ void RasterizerSceneGLES3::environment_set_glow(RID p_env, bool p_enable, int p_
|
|||||||
env->glow_bicubic_upscale = p_bicubic_upscale;
|
env->glow_bicubic_upscale = p_bicubic_upscale;
|
||||||
env->glow_high_quality = p_high_quality;
|
env->glow_high_quality = p_high_quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RasterizerSceneGLES3::environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) {
|
||||||
|
Environment3D *env = environment_owner.getornull(p_env);
|
||||||
|
ERR_FAIL_COND(!env);
|
||||||
|
|
||||||
|
env->glow_map_strength = p_glow_map_strength;
|
||||||
|
env->glow_map = p_glow_map;
|
||||||
|
}
|
||||||
|
|
||||||
void RasterizerSceneGLES3::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
void RasterizerSceneGLES3::environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4022,7 +4031,7 @@ void RasterizerSceneGLES3::_post_process(Environment3D *env, const Projection &p
|
|||||||
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(env->color_correction);
|
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(env->color_correction);
|
||||||
if (tex) {
|
if (tex) {
|
||||||
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_COLOR_CORRECTION, true);
|
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_COLOR_CORRECTION, true);
|
||||||
WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE3);
|
WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE4);
|
||||||
glBindTexture(tex->target, tex->tex_id);
|
glBindTexture(tex->target, tex->tex_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4037,6 +4046,14 @@ void RasterizerSceneGLES3::_post_process(Environment3D *env, const Projection &p
|
|||||||
|
|
||||||
if (max_glow_level >= 0) {
|
if (max_glow_level >= 0) {
|
||||||
state.tonemap_shader.set_uniform(TonemapShaderGLES3::GLOW_INTENSITY, env->glow_intensity);
|
state.tonemap_shader.set_uniform(TonemapShaderGLES3::GLOW_INTENSITY, env->glow_intensity);
|
||||||
|
state.tonemap_shader.set_uniform(TonemapShaderGLES3::GLOW_MAP_STRENGTH, env->glow_map_strength);
|
||||||
|
|
||||||
|
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(env->glow_map);
|
||||||
|
if (tex) {
|
||||||
|
WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE3);
|
||||||
|
glBindTexture(tex->target, tex->tex_id);
|
||||||
|
}
|
||||||
|
|
||||||
int ss[2] = {
|
int ss[2] = {
|
||||||
storage->frame.current_rt->width,
|
storage->frame.current_rt->width,
|
||||||
storage->frame.current_rt->height,
|
storage->frame.current_rt->height,
|
||||||
|
@ -413,6 +413,8 @@ public:
|
|||||||
float glow_hdr_luminance_cap;
|
float glow_hdr_luminance_cap;
|
||||||
bool glow_bicubic_upscale;
|
bool glow_bicubic_upscale;
|
||||||
bool glow_high_quality;
|
bool glow_high_quality;
|
||||||
|
float glow_map_strength;
|
||||||
|
RID glow_map;
|
||||||
|
|
||||||
RS::Environment3DToneMapper tone_mapper;
|
RS::Environment3DToneMapper tone_mapper;
|
||||||
float tone_mapper_exposure;
|
float tone_mapper_exposure;
|
||||||
@ -551,6 +553,8 @@ public:
|
|||||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, RS::Environment3DDOFBlurQuality p_quality);
|
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_amount, RS::Environment3DDOFBlurQuality p_quality);
|
||||||
|
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality);
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality);
|
||||||
|
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map);
|
||||||
|
|
||||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
|
||||||
|
|
||||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
|
||||||
|
@ -42,6 +42,8 @@ uniform highp float auto_exposure_grey;
|
|||||||
|
|
||||||
uniform highp sampler2D source_glow; //texunit:2
|
uniform highp sampler2D source_glow; //texunit:2
|
||||||
uniform highp float glow_intensity;
|
uniform highp float glow_intensity;
|
||||||
|
uniform highp float glow_map_strength;
|
||||||
|
uniform highp sampler2D glow_map; //texunit:3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_BCS
|
#ifdef USE_BCS
|
||||||
@ -57,7 +59,7 @@ uniform float sharpen_intensity;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_COLOR_CORRECTION
|
#ifdef USE_COLOR_CORRECTION
|
||||||
uniform sampler2D color_correction; //texunit:3
|
uniform sampler2D color_correction; //texunit:4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
layout(location = 0) out vec4 frag_color;
|
layout(location = 0) out vec4 frag_color;
|
||||||
@ -482,6 +484,9 @@ void main() {
|
|||||||
|
|
||||||
#ifdef USING_GLOW
|
#ifdef USING_GLOW
|
||||||
vec3 glow = gather_glow(source_glow, uv_interp) * glow_intensity;
|
vec3 glow = gather_glow(source_glow, uv_interp) * glow_intensity;
|
||||||
|
if (glow_map_strength > 0.001) {
|
||||||
|
glow = mix(glow, texture(glow_map, vec2(uv_interp.x, 1.0 - uv_interp.y)).rgb * glow, glow_map_strength);
|
||||||
|
}
|
||||||
|
|
||||||
// high dynamic range -> SRGB
|
// high dynamic range -> SRGB
|
||||||
glow = apply_tonemapping(glow, white);
|
glow = apply_tonemapping(glow, white);
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
from compat import StringIO
|
from compat import StringIO
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
import os
|
import os
|
||||||
from array import array
|
from array import array
|
||||||
|
|
||||||
|
|
||||||
# Generates a C++ file from the specified binary resource file
|
# Generates a C++ file from the specified binary resource file
|
||||||
def generate(in_path, out_path):
|
def generate(in_path, out_path):
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
from compat import byte_to_str
|
from compat import byte_to_str
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
@ -1254,6 +1254,67 @@ bool test_37() {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool test_38() {
|
||||||
|
#define CHECK_ARR_LEN(arr, len) \
|
||||||
|
if (arr.size() != len) { \
|
||||||
|
OS::get_singleton()->print("\tFAIL: Length of %s should be %d, got %d\n", #arr, len, arr.size()); \
|
||||||
|
return false; \
|
||||||
|
} else { \
|
||||||
|
OS::get_singleton()->print("\tPASS\n"); \
|
||||||
|
}
|
||||||
|
#define CHECK_ARR_ELEMENT(arr, i, expect) \
|
||||||
|
if (ABS(arr[i] - expect) > 0.00001) { \
|
||||||
|
OS::get_singleton()->print("\tFAIL: %s[%d] %f != %f\n", #arr, i, arr[i], expect); \
|
||||||
|
return false; \
|
||||||
|
} else { \
|
||||||
|
OS::get_singleton()->print("\tPASS\n"); \
|
||||||
|
}
|
||||||
|
|
||||||
|
OS::get_singleton()->print("\n\nTest 38: split_floats\n");
|
||||||
|
|
||||||
|
{
|
||||||
|
const String s = "1.2;2.3 4.5";
|
||||||
|
const float slices[3] = { 1.2, 2.3, 4.5 };
|
||||||
|
|
||||||
|
const Vector<float> d_arr = s.split_floats(";");
|
||||||
|
CHECK_ARR_LEN(d_arr, 2);
|
||||||
|
for (int i = 0; i < 2; i++) {
|
||||||
|
CHECK_ARR_ELEMENT(d_arr, i, slices[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<String> keys;
|
||||||
|
keys.push_back(";");
|
||||||
|
keys.push_back(" ");
|
||||||
|
const Vector<float> f_arr = s.split_floats_mk(keys);
|
||||||
|
CHECK_ARR_LEN(f_arr, 3);
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
CHECK_ARR_ELEMENT(f_arr, i, slices[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const String s = " -2.0 5";
|
||||||
|
const float slices[10] = { 0, -2, 0, 0, 0, 0, 0, 0, 0, 5 };
|
||||||
|
|
||||||
|
const Vector<float> d_arr = s.split_floats(" ");
|
||||||
|
CHECK_ARR_LEN(d_arr, 10);
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
CHECK_ARR_ELEMENT(d_arr, i, slices[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector<String> keys;
|
||||||
|
keys.push_back(";");
|
||||||
|
keys.push_back(" ");
|
||||||
|
const Vector<float> f_arr = s.split_floats_mk(keys);
|
||||||
|
CHECK_ARR_LEN(f_arr, 10);
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
CHECK_ARR_ELEMENT(f_arr, i, slices[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
typedef bool (*TestFunc)();
|
typedef bool (*TestFunc)();
|
||||||
|
|
||||||
TestFunc test_funcs[] = {
|
TestFunc test_funcs[] = {
|
||||||
@ -1295,6 +1356,7 @@ TestFunc test_funcs[] = {
|
|||||||
test_35,
|
test_35,
|
||||||
test_36,
|
test_36,
|
||||||
test_37,
|
test_37,
|
||||||
|
test_38,
|
||||||
nullptr
|
nullptr
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
|
|
||||||
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
|
|
||||||
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
|
|
||||||
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
|
|
1
modules/database_sqlite/sqlite/VERSION.txt
Normal file
1
modules/database_sqlite/sqlite/VERSION.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.47.0
|
@ -0,0 +1,26 @@
|
|||||||
|
From ad572cdfdb2cac970aa1dd291583b72b7f89f9fb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Relintai <relintai@protonmail.com>
|
||||||
|
Date: Thu, 14 Nov 2024 20:07:24 +0100
|
||||||
|
Subject: [PATCH] Reapply SQLITE_NO_FCHOWN Pandemonium sqlite patch.
|
||||||
|
|
||||||
|
---
|
||||||
|
modules/database_sqlite/sqlite/sqlite3.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/modules/database_sqlite/sqlite/sqlite3.c b/modules/database_sqlite/sqlite/sqlite3.c
|
||||||
|
index 2886d04ae..9918449b9 100644
|
||||||
|
--- a/modules/database_sqlite/sqlite/sqlite3.c
|
||||||
|
+++ b/modules/database_sqlite/sqlite/sqlite3.c
|
||||||
|
@@ -168,7 +168,9 @@
|
||||||
|
#else
|
||||||
|
/* This is not VxWorks. */
|
||||||
|
#define OS_VXWORKS 0
|
||||||
|
+#ifndef SQLITE_NO_FCHOWN
|
||||||
|
#define HAVE_FCHOWN 1
|
||||||
|
+#endif
|
||||||
|
#define HAVE_READLINK 1
|
||||||
|
#define HAVE_LSTAT 1
|
||||||
|
#endif /* defined(_WRS_KERNEL) */
|
||||||
|
--
|
||||||
|
2.47.0
|
||||||
|
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
|
|
||||||
|
@ -84,7 +84,12 @@ void GDScript::_clear_pending_func_states() {
|
|||||||
// Order matters since clearing the stack may already cause
|
// Order matters since clearing the stack may already cause
|
||||||
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
|
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
|
||||||
pending_func_states.remove(E);
|
pending_func_states.remove(E);
|
||||||
E->self()->_clear_stack();
|
GDScriptFunctionState *state = E->self();
|
||||||
|
ObjectID state_id = state->get_instance_id();
|
||||||
|
state->_clear_connections();
|
||||||
|
if (ObjectDB::get_instance(state_id)) {
|
||||||
|
state->_clear_stack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
GDScriptLanguage::get_singleton()->lock.unlock();
|
GDScriptLanguage::get_singleton()->lock.unlock();
|
||||||
}
|
}
|
||||||
@ -1339,7 +1344,12 @@ GDScriptInstance::~GDScriptInstance() {
|
|||||||
// Order matters since clearing the stack may already cause
|
// Order matters since clearing the stack may already cause
|
||||||
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
|
// the GDSCriptFunctionState to be destroyed and thus removed from the list.
|
||||||
pending_func_states.remove(E);
|
pending_func_states.remove(E);
|
||||||
E->self()->_clear_stack();
|
GDScriptFunctionState *state = E->self();
|
||||||
|
ObjectID state_id = state->get_instance_id();
|
||||||
|
state->_clear_connections();
|
||||||
|
if (ObjectDB::get_instance(state_id)) {
|
||||||
|
state->_clear_stack();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (script.is_valid() && owner) {
|
if (script.is_valid() && owner) {
|
||||||
|
@ -1859,6 +1859,15 @@ void GDScriptFunctionState::_clear_stack() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GDScriptFunctionState::_clear_connections() {
|
||||||
|
List<Object::Connection> conns;
|
||||||
|
get_signals_connected_to_this(&conns);
|
||||||
|
for (List<Object::Connection>::Element *E = conns.front(); E; E = E->next()) {
|
||||||
|
Object::Connection &c = E->get();
|
||||||
|
c.source->disconnect(c.signal, c.target, c.method);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GDScriptFunctionState::_bind_methods() {
|
void GDScriptFunctionState::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("resume", "arg"), &GDScriptFunctionState::resume, DEFVAL(Variant()));
|
ClassDB::bind_method(D_METHOD("resume", "arg"), &GDScriptFunctionState::resume, DEFVAL(Variant()));
|
||||||
ClassDB::bind_method(D_METHOD("is_valid", "extended_check"), &GDScriptFunctionState::is_valid, DEFVAL(false));
|
ClassDB::bind_method(D_METHOD("is_valid", "extended_check"), &GDScriptFunctionState::is_valid, DEFVAL(false));
|
||||||
|
@ -374,6 +374,7 @@ public:
|
|||||||
Variant resume(const Variant &p_arg = Variant());
|
Variant resume(const Variant &p_arg = Variant());
|
||||||
|
|
||||||
void _clear_stack();
|
void _clear_stack();
|
||||||
|
void _clear_connections();
|
||||||
|
|
||||||
GDScriptFunctionState();
|
GDScriptFunctionState();
|
||||||
~GDScriptFunctionState();
|
~GDScriptFunctionState();
|
||||||
|
@ -1329,7 +1329,8 @@ void TileMap::_set_tile_data(const PoolVector<int> &p_data) {
|
|||||||
for (int i = 0; i < c; i += offset) {
|
for (int i = 0; i < c; i += offset) {
|
||||||
const uint8_t *ptr = (const uint8_t *)&r[i];
|
const uint8_t *ptr = (const uint8_t *)&r[i];
|
||||||
uint8_t local[12];
|
uint8_t local[12];
|
||||||
for (int j = 0; j < ((format == FORMAT_2) ? 12 : 8); j++) {
|
const int buffer_size = (format == FORMAT_2) ? 12 : 8;
|
||||||
|
for (int j = 0; j < buffer_size; j++) {
|
||||||
local[j] = ptr[j];
|
local[j] = ptr[j];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
|
|
||||||
|
@ -2982,7 +2982,8 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments,
|
|||||||
CloseHandle(pipe[0]); // Cleanup pipe handles.
|
CloseHandle(pipe[0]); // Cleanup pipe handles.
|
||||||
CloseHandle(pipe[1]);
|
CloseHandle(pipe[1]);
|
||||||
}
|
}
|
||||||
ERR_FAIL_COND_V(ret == 0, ERR_CANT_FORK);
|
|
||||||
|
ERR_FAIL_COND_V_MSG(ret == 0, ERR_CANT_FORK, "Could not create child process: " + String(modstr));
|
||||||
|
|
||||||
if (p_blocking) {
|
if (p_blocking) {
|
||||||
if (r_pipe) {
|
if (r_pipe) {
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
All such functions are invoked in a subprocess on Windows to prevent build flakiness.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from platform_methods import subprocess_main
|
from platform_methods import subprocess_main
|
||||||
|
|
||||||
|
@ -1085,7 +1085,12 @@ Vector3 KinematicBody::_move_and_slide_internal(const Vector3 &p_linear_velocity
|
|||||||
|
|
||||||
// We need to check the on_floor_body still exists before accessing.
|
// We need to check the on_floor_body still exists before accessing.
|
||||||
// A valid RID is no guarantee that the object has not been deleted.
|
// A valid RID is no guarantee that the object has not been deleted.
|
||||||
if (ObjectDB::get_instance(on_floor_body_id)) {
|
|
||||||
|
// We can only perform the ObjectDB lifetime check on Object derived objects.
|
||||||
|
// Note that physics also creates RIDs for non-Object derived objects, these cannot
|
||||||
|
// be lifetime checked through ObjectDB, and therefore there is a still a vulnerability
|
||||||
|
// to dangling RIDs (access after free) in this scenario.
|
||||||
|
if (!on_floor_body_id || ObjectDB::get_instance(on_floor_body_id)) {
|
||||||
// This approach makes sure there is less delay between the actual body velocity and the one we saved.
|
// This approach makes sure there is less delay between the actual body velocity and the one we saved.
|
||||||
bs = PhysicsServer::get_singleton()->body_get_direct_state(on_floor_body_rid);
|
bs = PhysicsServer::get_singleton()->body_get_direct_state(on_floor_body_rid);
|
||||||
}
|
}
|
||||||
|
@ -35,8 +35,6 @@
|
|||||||
#include "core/input/shortcut.h"
|
#include "core/input/shortcut.h"
|
||||||
#include "core/os/keyboard.h"
|
#include "core/os/keyboard.h"
|
||||||
#include "core/os/os.h"
|
#include "core/os/os.h"
|
||||||
#include "core/string/print_string.h"
|
|
||||||
#include "core/string/translation.h"
|
|
||||||
#include "scene/gui/margin_container.h"
|
#include "scene/gui/margin_container.h"
|
||||||
#include "scene/gui/scroll_bar.h"
|
#include "scene/gui/scroll_bar.h"
|
||||||
#include "scene/gui/scroll_container.h"
|
#include "scene/gui/scroll_container.h"
|
||||||
@ -144,8 +142,7 @@ int PopupMenu::_get_items_total_height() const {
|
|||||||
items_total_height += MAX(items[i].get_icon_size().height, font_height) + vsep;
|
items_total_height += MAX(items[i].get_icon_size().height, font_height) + vsep;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Subtract a separator which is not needed for the last item.
|
return items_total_height;
|
||||||
return items_total_height - vsep;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PopupMenu::_scroll_to_item(int p_item) {
|
void PopupMenu::_scroll_to_item(int p_item) {
|
||||||
@ -174,16 +171,12 @@ int PopupMenu::_get_mouse_over(const Point2 &p_over) const {
|
|||||||
int vseparation = get_theme_constant("vseparation");
|
int vseparation = get_theme_constant("vseparation");
|
||||||
float font_h = get_theme_font("font")->get_height();
|
float font_h = get_theme_font("font")->get_height();
|
||||||
|
|
||||||
Point2 ofs = style->get_offset() + Point2(0, vseparation / 2);
|
real_t ofs = style->get_margin(MARGIN_TOP) + control->get_position().y;
|
||||||
|
|
||||||
for (int i = 0; i < items.size(); i++) {
|
for (int i = 0; i < items.size(); i++) {
|
||||||
if (i > 0) {
|
ofs += MAX(items[i].get_icon_size().height, font_h) + vseparation;
|
||||||
ofs.y += vseparation;
|
|
||||||
}
|
|
||||||
|
|
||||||
ofs.y += MAX(items[i].get_icon_size().height, font_h);
|
if (p_over.y < ofs) {
|
||||||
|
|
||||||
if (p_over.y - control->get_position().y < ofs.y) {
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -354,7 +347,7 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
|
|
||||||
// Make an area which does not include v scrollbar, so that items are not activated when dragging scrollbar.
|
// Make an area which does not include v scrollbar, so that items are not activated when dragging scrollbar.
|
||||||
Transform2D xform = get_global_transform_with_canvas();
|
Transform2D xform = get_global_transform_with_canvas();
|
||||||
Point2 item_origin = xform.get_origin();
|
Point2 item_origin = scroll_container->get_global_position();
|
||||||
float scroll_width = scroll_container->get_v_scrollbar()->is_visible_in_tree() ? scroll_container->get_v_scrollbar()->get_size().width : 0;
|
float scroll_width = scroll_container->get_v_scrollbar()->is_visible_in_tree() ? scroll_container->get_v_scrollbar()->get_size().width : 0;
|
||||||
Size2 item_size = (control->get_global_rect().get_size() - Vector2(scroll_width, 0)) * xform.get_scale();
|
Size2 item_size = (control->get_global_rect().get_size() - Vector2(scroll_width, 0)) * xform.get_scale();
|
||||||
Rect2 item_clickable_area = Rect2(item_origin, item_size);
|
Rect2 item_clickable_area = Rect2(item_origin, item_size);
|
||||||
@ -493,9 +486,9 @@ void PopupMenu::_draw_items() {
|
|||||||
margin_size.width = margin_container->get_theme_constant("margin_right") + margin_container->get_theme_constant("margin_left");
|
margin_size.width = margin_container->get_theme_constant("margin_right") + margin_container->get_theme_constant("margin_left");
|
||||||
margin_size.height = margin_container->get_theme_constant("margin_top") + margin_container->get_theme_constant("margin_bottom");
|
margin_size.height = margin_container->get_theme_constant("margin_top") + margin_container->get_theme_constant("margin_bottom");
|
||||||
|
|
||||||
Ref<StyleBox> style = get_theme_stylebox("panel");
|
|
||||||
Ref<StyleBox> hover = get_theme_stylebox("hover");
|
Ref<StyleBox> hover = get_theme_stylebox("hover");
|
||||||
Ref<Font> font = get_theme_font("font");
|
Ref<Font> font = get_theme_font("font");
|
||||||
|
|
||||||
select_font(font);
|
select_font(font);
|
||||||
|
|
||||||
// In Item::checkable_type enum order (less the non-checkable member)
|
// In Item::checkable_type enum order (less the non-checkable member)
|
||||||
@ -536,7 +529,7 @@ void PopupMenu::_draw_items() {
|
|||||||
check_ofs = MAX(get_theme_icon("checked")->get_width(), get_theme_icon("radio_checked")->get_width()) + hseparation;
|
check_ofs = MAX(get_theme_icon("checked")->get_width(), get_theme_icon("radio_checked")->get_width()) + hseparation;
|
||||||
}
|
}
|
||||||
|
|
||||||
Point2 ofs = Point2();
|
Point2 ofs = Point2(0, vseparation / 2);
|
||||||
|
|
||||||
// Loop through all items and draw each.
|
// Loop through all items and draw each.
|
||||||
for (int i = 0; i < items.size(); i++) {
|
for (int i = 0; i < items.size(); i++) {
|
||||||
|
@ -1729,7 +1729,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool
|
|||||||
cache.click_id = c.buttons[j].id;
|
cache.click_id = c.buttons[j].id;
|
||||||
cache.click_item = p_item;
|
cache.click_item = p_item;
|
||||||
cache.click_column = col;
|
cache.click_column = col;
|
||||||
cache.click_pos = get_global_mouse_position() - get_global_position();
|
cache.click_pos = get_local_mouse_position();
|
||||||
update();
|
update();
|
||||||
//emit_signal("button_pressed");
|
//emit_signal("button_pressed");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -231,6 +231,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||||||
theme->set_stylebox("normal", "Button", sb_button_normal);
|
theme->set_stylebox("normal", "Button", sb_button_normal);
|
||||||
theme->set_stylebox("pressed", "Button", sb_button_pressed);
|
theme->set_stylebox("pressed", "Button", sb_button_pressed);
|
||||||
theme->set_stylebox("hover", "Button", sb_button_hover);
|
theme->set_stylebox("hover", "Button", sb_button_hover);
|
||||||
|
theme->set_stylebox("hover_pressed", "Button", sb_button_hover);
|
||||||
theme->set_stylebox("disabled", "Button", sb_button_disabled);
|
theme->set_stylebox("disabled", "Button", sb_button_disabled);
|
||||||
theme->set_stylebox("focus", "Button", sb_button_focus);
|
theme->set_stylebox("focus", "Button", sb_button_focus);
|
||||||
|
|
||||||
|
@ -487,7 +487,7 @@ float Environment3D::get_ssao_edge_sharpness() const {
|
|||||||
|
|
||||||
void Environment3D::set_glow_enabled(bool p_enabled) {
|
void Environment3D::set_glow_enabled(bool p_enabled) {
|
||||||
glow_enabled = p_enabled;
|
glow_enabled = p_enabled;
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
_change_notify();
|
_change_notify();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -504,7 +504,7 @@ void Environment3D::set_glow_level(int p_level, bool p_enabled) {
|
|||||||
glow_levels &= ~(1 << p_level);
|
glow_levels &= ~(1 << p_level);
|
||||||
}
|
}
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
bool Environment3D::is_glow_level_enabled(int p_level) const {
|
bool Environment3D::is_glow_level_enabled(int p_level) const {
|
||||||
ERR_FAIL_INDEX_V(p_level, RS::MAX_GLOW_LEVELS, false);
|
ERR_FAIL_INDEX_V(p_level, RS::MAX_GLOW_LEVELS, false);
|
||||||
@ -515,7 +515,7 @@ bool Environment3D::is_glow_level_enabled(int p_level) const {
|
|||||||
void Environment3D::set_glow_intensity(float p_intensity) {
|
void Environment3D::set_glow_intensity(float p_intensity) {
|
||||||
glow_intensity = p_intensity;
|
glow_intensity = p_intensity;
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
float Environment3D::get_glow_intensity() const {
|
float Environment3D::get_glow_intensity() const {
|
||||||
return glow_intensity;
|
return glow_intensity;
|
||||||
@ -523,7 +523,8 @@ float Environment3D::get_glow_intensity() const {
|
|||||||
|
|
||||||
void Environment3D::set_glow_strength(float p_strength) {
|
void Environment3D::set_glow_strength(float p_strength) {
|
||||||
glow_strength = p_strength;
|
glow_strength = p_strength;
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
|
||||||
|
_update_glow();
|
||||||
}
|
}
|
||||||
float Environment3D::get_glow_strength() const {
|
float Environment3D::get_glow_strength() const {
|
||||||
return glow_strength;
|
return glow_strength;
|
||||||
@ -532,7 +533,7 @@ float Environment3D::get_glow_strength() const {
|
|||||||
void Environment3D::set_glow_bloom(float p_threshold) {
|
void Environment3D::set_glow_bloom(float p_threshold) {
|
||||||
glow_bloom = p_threshold;
|
glow_bloom = p_threshold;
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
float Environment3D::get_glow_bloom() const {
|
float Environment3D::get_glow_bloom() const {
|
||||||
return glow_bloom;
|
return glow_bloom;
|
||||||
@ -541,7 +542,7 @@ float Environment3D::get_glow_bloom() const {
|
|||||||
void Environment3D::set_glow_blend_mode(GlowBlendMode p_mode) {
|
void Environment3D::set_glow_blend_mode(GlowBlendMode p_mode) {
|
||||||
glow_blend_mode = p_mode;
|
glow_blend_mode = p_mode;
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
Environment3D::GlowBlendMode Environment3D::get_glow_blend_mode() const {
|
Environment3D::GlowBlendMode Environment3D::get_glow_blend_mode() const {
|
||||||
return glow_blend_mode;
|
return glow_blend_mode;
|
||||||
@ -550,7 +551,7 @@ Environment3D::GlowBlendMode Environment3D::get_glow_blend_mode() const {
|
|||||||
void Environment3D::set_glow_hdr_bleed_threshold(float p_threshold) {
|
void Environment3D::set_glow_hdr_bleed_threshold(float p_threshold) {
|
||||||
glow_hdr_bleed_threshold = p_threshold;
|
glow_hdr_bleed_threshold = p_threshold;
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
float Environment3D::get_glow_hdr_bleed_threshold() const {
|
float Environment3D::get_glow_hdr_bleed_threshold() const {
|
||||||
return glow_hdr_bleed_threshold;
|
return glow_hdr_bleed_threshold;
|
||||||
@ -559,7 +560,7 @@ float Environment3D::get_glow_hdr_bleed_threshold() const {
|
|||||||
void Environment3D::set_glow_hdr_luminance_cap(float p_amount) {
|
void Environment3D::set_glow_hdr_luminance_cap(float p_amount) {
|
||||||
glow_hdr_luminance_cap = p_amount;
|
glow_hdr_luminance_cap = p_amount;
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
float Environment3D::get_glow_hdr_luminance_cap() const {
|
float Environment3D::get_glow_hdr_luminance_cap() const {
|
||||||
return glow_hdr_luminance_cap;
|
return glow_hdr_luminance_cap;
|
||||||
@ -568,7 +569,7 @@ float Environment3D::get_glow_hdr_luminance_cap() const {
|
|||||||
void Environment3D::set_glow_hdr_bleed_scale(float p_scale) {
|
void Environment3D::set_glow_hdr_bleed_scale(float p_scale) {
|
||||||
glow_hdr_bleed_scale = p_scale;
|
glow_hdr_bleed_scale = p_scale;
|
||||||
|
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
_update_glow();
|
||||||
}
|
}
|
||||||
float Environment3D::get_glow_hdr_bleed_scale() const {
|
float Environment3D::get_glow_hdr_bleed_scale() const {
|
||||||
return glow_hdr_bleed_scale;
|
return glow_hdr_bleed_scale;
|
||||||
@ -576,7 +577,8 @@ float Environment3D::get_glow_hdr_bleed_scale() const {
|
|||||||
|
|
||||||
void Environment3D::set_glow_bicubic_upscale(bool p_enable) {
|
void Environment3D::set_glow_bicubic_upscale(bool p_enable) {
|
||||||
glow_bicubic_upscale = p_enable;
|
glow_bicubic_upscale = p_enable;
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
|
||||||
|
_update_glow();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Environment3D::is_glow_bicubic_upscale_enabled() const {
|
bool Environment3D::is_glow_bicubic_upscale_enabled() const {
|
||||||
@ -585,13 +587,59 @@ bool Environment3D::is_glow_bicubic_upscale_enabled() const {
|
|||||||
|
|
||||||
void Environment3D::set_glow_high_quality(bool p_enable) {
|
void Environment3D::set_glow_high_quality(bool p_enable) {
|
||||||
glow_high_quality = p_enable;
|
glow_high_quality = p_enable;
|
||||||
RS::get_singleton()->environment_set_glow(environment, glow_enabled, glow_levels, glow_intensity, glow_strength, glow_bloom, RS::Environment3DGlowBlendMode(glow_blend_mode), glow_hdr_bleed_threshold, glow_hdr_bleed_scale, glow_hdr_luminance_cap, glow_bicubic_upscale, glow_high_quality);
|
|
||||||
|
_update_glow();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Environment3D::is_glow_high_quality_enabled() const {
|
bool Environment3D::is_glow_high_quality_enabled() const {
|
||||||
return glow_high_quality;
|
return glow_high_quality;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Environment3D::set_glow_map_strength(float p_glow_map_strength) {
|
||||||
|
glow_map_strength = p_glow_map_strength;
|
||||||
|
_update_glow_map();
|
||||||
|
}
|
||||||
|
|
||||||
|
float Environment3D::get_glow_map_strength() const {
|
||||||
|
return glow_map_strength;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Environment3D::set_glow_map(Ref<Texture> p_glow_map) {
|
||||||
|
glow_map = p_glow_map;
|
||||||
|
_update_glow_map();
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<Texture> Environment3D::get_glow_map() const {
|
||||||
|
return glow_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Environment3D::_update_glow() {
|
||||||
|
RS::get_singleton()->environment_set_glow(
|
||||||
|
environment,
|
||||||
|
glow_enabled,
|
||||||
|
glow_levels,
|
||||||
|
glow_intensity,
|
||||||
|
glow_strength,
|
||||||
|
glow_bloom,
|
||||||
|
RS::Environment3DGlowBlendMode(glow_blend_mode),
|
||||||
|
glow_hdr_bleed_threshold,
|
||||||
|
glow_hdr_bleed_scale,
|
||||||
|
glow_hdr_luminance_cap,
|
||||||
|
glow_bicubic_upscale,
|
||||||
|
glow_high_quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Environment3D::_update_glow_map() {
|
||||||
|
float _glow_map_strength = 0.0f;
|
||||||
|
RID glow_map_rid;
|
||||||
|
if (glow_map.is_valid()) {
|
||||||
|
glow_map_rid = glow_map->get_rid();
|
||||||
|
_glow_map_strength = glow_map_strength;
|
||||||
|
}
|
||||||
|
|
||||||
|
RS::get_singleton()->environment_set_glow_map(environment, _glow_map_strength, glow_map_rid);
|
||||||
|
}
|
||||||
|
|
||||||
void Environment3D::set_dof_blur_far_enabled(bool p_enable) {
|
void Environment3D::set_dof_blur_far_enabled(bool p_enable) {
|
||||||
dof_blur_far_enabled = p_enable;
|
dof_blur_far_enabled = p_enable;
|
||||||
RS::get_singleton()->environment_set_dof_blur_far(environment, dof_blur_far_enabled, dof_blur_far_distance, dof_blur_far_transition, dof_blur_far_amount, RS::Environment3DDOFBlurQuality(dof_blur_far_quality));
|
RS::get_singleton()->environment_set_dof_blur_far(environment, dof_blur_far_enabled, dof_blur_far_distance, dof_blur_far_transition, dof_blur_far_amount, RS::Environment3DDOFBlurQuality(dof_blur_far_quality));
|
||||||
@ -1086,6 +1134,12 @@ void Environment3D::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_glow_high_quality", "enabled"), &Environment3D::set_glow_high_quality);
|
ClassDB::bind_method(D_METHOD("set_glow_high_quality", "enabled"), &Environment3D::set_glow_high_quality);
|
||||||
ClassDB::bind_method(D_METHOD("is_glow_high_quality_enabled"), &Environment3D::is_glow_high_quality_enabled);
|
ClassDB::bind_method(D_METHOD("is_glow_high_quality_enabled"), &Environment3D::is_glow_high_quality_enabled);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_glow_map_strength", "strength"), &Environment3D::set_glow_map_strength);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_glow_map_strength"), &Environment3D::get_glow_map_strength);
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("set_glow_map", "mode"), &Environment3D::set_glow_map);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_glow_map"), &Environment3D::get_glow_map);
|
||||||
|
|
||||||
ADD_GROUP("Glow", "glow_");
|
ADD_GROUP("Glow", "glow_");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_enabled"), "set_glow_enabled", "is_glow_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_enabled"), "set_glow_enabled", "is_glow_enabled");
|
||||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "glow_levels/1"), "set_glow_level", "is_glow_level_enabled", 0);
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "glow_levels/1"), "set_glow_level", "is_glow_level_enabled", 0);
|
||||||
@ -1105,6 +1159,8 @@ void Environment3D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_scale", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_scale", "get_glow_hdr_bleed_scale");
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_hdr_scale", PROPERTY_HINT_RANGE, "0.0,4.0,0.01"), "set_glow_hdr_bleed_scale", "get_glow_hdr_bleed_scale");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_bicubic_upscale"), "set_glow_bicubic_upscale", "is_glow_bicubic_upscale_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_bicubic_upscale"), "set_glow_bicubic_upscale", "is_glow_bicubic_upscale_enabled");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_high_quality"), "set_glow_high_quality", "is_glow_high_quality_enabled");
|
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "glow_high_quality"), "set_glow_high_quality", "is_glow_high_quality_enabled");
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::REAL, "glow_map_strength", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"), "set_glow_map_strength", "get_glow_map_strength");
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "glow_map", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_glow_map", "get_glow_map");
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("set_adjustment_enable", "enabled"), &Environment3D::set_adjustment_enable);
|
ClassDB::bind_method(D_METHOD("set_adjustment_enable", "enabled"), &Environment3D::set_adjustment_enable);
|
||||||
ClassDB::bind_method(D_METHOD("is_adjustment_enabled"), &Environment3D::is_adjustment_enabled);
|
ClassDB::bind_method(D_METHOD("is_adjustment_enabled"), &Environment3D::is_adjustment_enabled);
|
||||||
@ -1229,6 +1285,7 @@ Environment3D::Environment3D() :
|
|||||||
glow_hdr_bleed_scale = 2.0;
|
glow_hdr_bleed_scale = 2.0;
|
||||||
glow_bicubic_upscale = false;
|
glow_bicubic_upscale = false;
|
||||||
glow_high_quality = false;
|
glow_high_quality = false;
|
||||||
|
glow_map_strength = 0.8f;
|
||||||
|
|
||||||
dof_blur_far_enabled = false;
|
dof_blur_far_enabled = false;
|
||||||
dof_blur_far_distance = 10;
|
dof_blur_far_distance = 10;
|
||||||
@ -1268,3 +1325,4 @@ Environment3D::Environment3D() :
|
|||||||
Environment3D::~Environment3D() {
|
Environment3D::~Environment3D() {
|
||||||
RS::get_singleton()->free(environment);
|
RS::get_singleton()->free(environment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,6 +147,11 @@ private:
|
|||||||
float glow_hdr_luminance_cap;
|
float glow_hdr_luminance_cap;
|
||||||
bool glow_bicubic_upscale;
|
bool glow_bicubic_upscale;
|
||||||
bool glow_high_quality;
|
bool glow_high_quality;
|
||||||
|
float glow_map_strength;
|
||||||
|
Ref<Texture> glow_map;
|
||||||
|
|
||||||
|
void _update_glow();
|
||||||
|
void _update_glow_map();
|
||||||
|
|
||||||
bool dof_blur_far_enabled;
|
bool dof_blur_far_enabled;
|
||||||
float dof_blur_far_distance;
|
float dof_blur_far_distance;
|
||||||
@ -335,6 +340,12 @@ public:
|
|||||||
void set_glow_high_quality(bool p_enable);
|
void set_glow_high_quality(bool p_enable);
|
||||||
bool is_glow_high_quality_enabled() const;
|
bool is_glow_high_quality_enabled() const;
|
||||||
|
|
||||||
|
void set_glow_map_strength(float p_glow_map_strength);
|
||||||
|
float get_glow_map_strength() const;
|
||||||
|
|
||||||
|
void set_glow_map(Ref<Texture> p_glow_map);
|
||||||
|
Ref<Texture> get_glow_map() const;
|
||||||
|
|
||||||
void set_dof_blur_far_enabled(bool p_enable);
|
void set_dof_blur_far_enabled(bool p_enable);
|
||||||
bool is_dof_blur_far_enabled() const;
|
bool is_dof_blur_far_enabled() const;
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
"""Functions used to generate scu build source files during build time
|
"""Functions used to generate scu build source files during build time
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import glob, os
|
import glob, os
|
||||||
import math
|
import math
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@ -158,6 +159,7 @@ def find_section_name(sub_folder):
|
|||||||
# which is slow like a normal build, but prevents the naming conflicts.
|
# which is slow like a normal build, but prevents the naming conflicts.
|
||||||
# Ideally in these situations, the source code should be changed to prevent naming conflicts.
|
# Ideally in these situations, the source code should be changed to prevent naming conflicts.
|
||||||
|
|
||||||
|
|
||||||
# "extension" will usually be cpp, but can also be set to c (for e.g. third party libraries that use c)
|
# "extension" will usually be cpp, but can also be set to c (for e.g. third party libraries that use c)
|
||||||
def process_folder(folders, sought_exceptions=[], includes_per_scu=0, extension="cpp"):
|
def process_folder(folders, sought_exceptions=[], includes_per_scu=0, extension="cpp"):
|
||||||
if len(folders) == 0:
|
if len(folders) == 0:
|
||||||
|
@ -232,12 +232,14 @@ AudioStreamPlaybackMicrophone::AudioStreamPlaybackMicrophone() {
|
|||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|
||||||
void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {
|
void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {
|
||||||
|
AudioServer::get_singleton()->lock();
|
||||||
audio_stream = p_audio_stream;
|
audio_stream = p_audio_stream;
|
||||||
if (audio_stream.is_valid()) {
|
if (audio_stream.is_valid()) {
|
||||||
for (RBSet<AudioStreamPlaybackRandomPitch *>::Element *E = playbacks.front(); E; E = E->next()) {
|
for (RBSet<AudioStreamPlaybackRandomPitch *>::Element *E = playbacks.front(); E; E = E->next()) {
|
||||||
E->get()->playback = audio_stream->instance_playback();
|
E->get()->playback = audio_stream->instance_playback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
AudioServer::get_singleton()->unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<AudioStream> AudioStreamRandomPitch::get_audio_stream() const {
|
Ref<AudioStream> AudioStreamRandomPitch::get_audio_stream() const {
|
||||||
|
@ -66,6 +66,7 @@ public:
|
|||||||
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) = 0;
|
virtual void environment_set_dof_blur_near(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) = 0;
|
||||||
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) = 0;
|
virtual void environment_set_dof_blur_far(RID p_env, bool p_enable, float p_distance, float p_transition, float p_far_amount, RS::Environment3DDOFBlurQuality p_quality) = 0;
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) = 0;
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, RS::Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) = 0;
|
||||||
|
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) = 0;
|
||||||
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
|
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
|
||||||
|
|
||||||
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
|
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
|
||||||
|
@ -538,6 +538,7 @@ public:
|
|||||||
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||||
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||||
BIND12(environment_set_glow, RID, bool, int, float, float, float, Environment3DGlowBlendMode, float, float, float, bool, bool)
|
BIND12(environment_set_glow, RID, bool, int, float, float, float, Environment3DGlowBlendMode, float, float, float, bool, bool)
|
||||||
|
BIND3(environment_set_glow_map, RID, float, RID)
|
||||||
|
|
||||||
BIND9(environment_set_tonemap, RID, Environment3DToneMapper, float, float, bool, float, float, float, float)
|
BIND9(environment_set_tonemap, RID, Environment3DToneMapper, float, float, bool, float, float, float, float)
|
||||||
|
|
||||||
|
@ -451,6 +451,7 @@ public:
|
|||||||
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||||
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, Environment3DDOFBlurQuality)
|
||||||
FUNC12(environment_set_glow, RID, bool, int, float, float, float, Environment3DGlowBlendMode, float, float, float, bool, bool)
|
FUNC12(environment_set_glow, RID, bool, int, float, float, float, Environment3DGlowBlendMode, float, float, float, bool, bool)
|
||||||
|
FUNC3(environment_set_glow_map, RID, float, RID)
|
||||||
|
|
||||||
FUNC9(environment_set_tonemap, RID, Environment3DToneMapper, float, float, bool, float, float, float, float)
|
FUNC9(environment_set_tonemap, RID, Environment3DToneMapper, float, float, bool, float, float, float, float)
|
||||||
|
|
||||||
|
@ -2143,6 +2143,7 @@ void RenderingServer::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_near", "env", "enable", "distance", "transition", "far_amount", "quality"), &RenderingServer::environment_set_dof_blur_near);
|
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_near", "env", "enable", "distance", "transition", "far_amount", "quality"), &RenderingServer::environment_set_dof_blur_near);
|
||||||
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_far", "env", "enable", "distance", "transition", "far_amount", "quality"), &RenderingServer::environment_set_dof_blur_far);
|
ClassDB::bind_method(D_METHOD("environment_set_dof_blur_far", "env", "enable", "distance", "transition", "far_amount", "quality"), &RenderingServer::environment_set_dof_blur_far);
|
||||||
ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "hdr_luminance_cap", "bicubic_upscale", "high_quality"), &RenderingServer::environment_set_glow);
|
ClassDB::bind_method(D_METHOD("environment_set_glow", "env", "enable", "level_flags", "intensity", "strength", "bloom_threshold", "blend_mode", "hdr_bleed_threshold", "hdr_bleed_scale", "hdr_luminance_cap", "bicubic_upscale", "high_quality"), &RenderingServer::environment_set_glow);
|
||||||
|
ClassDB::bind_method(D_METHOD("environment_set_glow_map", "env", "glow_map_strength", "glow_map"), &RenderingServer::environment_set_glow_map);
|
||||||
ClassDB::bind_method(D_METHOD("environment_set_tonemap", "env", "tone_mapper", "exposure", "white", "auto_exposure", "min_luminance", "max_luminance", "auto_exp_speed", "auto_exp_grey"), &RenderingServer::environment_set_tonemap);
|
ClassDB::bind_method(D_METHOD("environment_set_tonemap", "env", "tone_mapper", "exposure", "white", "auto_exposure", "min_luminance", "max_luminance", "auto_exp_speed", "auto_exp_grey"), &RenderingServer::environment_set_tonemap);
|
||||||
ClassDB::bind_method(D_METHOD("environment_set_adjustment", "env", "enable", "brightness", "contrast", "saturation", "ramp"), &RenderingServer::environment_set_adjustment);
|
ClassDB::bind_method(D_METHOD("environment_set_adjustment", "env", "enable", "brightness", "contrast", "saturation", "ramp"), &RenderingServer::environment_set_adjustment);
|
||||||
ClassDB::bind_method(D_METHOD("environment_set_ssr", "env", "enable", "max_steps", "fade_in", "fade_out", "depth_tolerance", "roughness"), &RenderingServer::environment_set_ssr);
|
ClassDB::bind_method(D_METHOD("environment_set_ssr", "env", "enable", "max_steps", "fade_in", "fade_out", "depth_tolerance", "roughness"), &RenderingServer::environment_set_ssr);
|
||||||
|
@ -792,7 +792,9 @@ public:
|
|||||||
GLOW_BLEND_MODE_SOFTLIGHT,
|
GLOW_BLEND_MODE_SOFTLIGHT,
|
||||||
GLOW_BLEND_MODE_REPLACE,
|
GLOW_BLEND_MODE_REPLACE,
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) = 0;
|
virtual void environment_set_glow(RID p_env, bool p_enable, int p_level_flags, float p_intensity, float p_strength, float p_bloom_threshold, Environment3DGlowBlendMode p_blend_mode, float p_hdr_bleed_threshold, float p_hdr_bleed_scale, float p_hdr_luminance_cap, bool p_bicubic_upscale, bool p_high_quality) = 0;
|
||||||
|
virtual void environment_set_glow_map(RID p_env, float p_glow_map_strength, RID p_glow_map) = 0;
|
||||||
|
|
||||||
enum Environment3DToneMapper {
|
enum Environment3DToneMapper {
|
||||||
ENV_TONE_MAPPER_LINEAR,
|
ENV_TONE_MAPPER_LINEAR,
|
||||||
|
7
thirdparty/README.md
vendored
7
thirdparty/README.md
vendored
@ -19,9 +19,14 @@ Files extracted from upstream source:
|
|||||||
## certs
|
## certs
|
||||||
|
|
||||||
- Upstream: Mozilla, via https://github.com/bagder/ca-bundle
|
- Upstream: Mozilla, via https://github.com/bagder/ca-bundle
|
||||||
- Version: git (c5a419971b1bec220368c619aaafd0b818aa119f, 2024)
|
- Version: git (4d3fe6683f651d96be1bbef316b201e9b33b274d, 2024),
|
||||||
|
generated from mozilla-release changeset b8ea2342548b8571e58f9176d9555ccdb5ec199f
|
||||||
- License: MPL 2.0
|
- License: MPL 2.0
|
||||||
|
|
||||||
|
Files extracted from upstream source:
|
||||||
|
|
||||||
|
- `ca-bundle.crt` renamed to `ca-certificates.crt`
|
||||||
|
|
||||||
|
|
||||||
## cvtt
|
## cvtt
|
||||||
|
|
||||||
|
149
thirdparty/certs/ca-certificates.crt
vendored
149
thirdparty/certs/ca-certificates.crt
vendored
@ -1,7 +1,9 @@
|
|||||||
##
|
##
|
||||||
## Bundle of CA Root Certificates
|
## Bundle of CA Root Certificates
|
||||||
##
|
##
|
||||||
## Certificate data from Mozilla as of: Mon Mar 11 15:15:21 2024 GMT
|
## Certificate data from Mozilla as of: Sat Oct 19 21:26:09 2024 GMT
|
||||||
|
##
|
||||||
|
## Find updated versions here: https://curl.se/docs/caextract.html
|
||||||
##
|
##
|
||||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||||
@ -14,7 +16,7 @@
|
|||||||
## Just configure this file as the SSLCACertificateFile.
|
## Just configure this file as the SSLCACertificateFile.
|
||||||
##
|
##
|
||||||
## Conversion done with mk-ca-bundle.pl version 1.29.
|
## Conversion done with mk-ca-bundle.pl version 1.29.
|
||||||
## SHA256: 4d96bd539f4719e9ace493757afbe4a23ee8579de1c97fbebc50bba3c12e8c1e
|
## SHA256: 36105b01631f9fc03b1eca779b44a30a1a5890b9bf8dc07ccb001a07301e01cf
|
||||||
##
|
##
|
||||||
|
|
||||||
|
|
||||||
@ -2600,36 +2602,6 @@ vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
|
|||||||
CAezNIm8BZ/3Hobui3A=
|
CAezNIm8BZ/3Hobui3A=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
GLOBALTRUST 2020
|
|
||||||
================
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
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
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
|
|
||||||
ANF Secure Server Root CA
|
ANF Secure Server Root CA
|
||||||
=========================
|
=========================
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
@ -3579,3 +3551,116 @@ wPfc5+pbrrLMtTWGS9DiP7bY+A4A7l3j941Y/8+LN+ljX273CXE2whJdV/LItM3z7gLfEdxquVeE
|
|||||||
HVlNjM7IDiPCtyaaEBRx/pOyiriA8A4QntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0
|
HVlNjM7IDiPCtyaaEBRx/pOyiriA8A4QntOoUAw3gi/q4Iqd4Sw5/7W0cwDk90imc6y/st53BIe0
|
||||||
o82bNSQ3+pCTE4FCxpgmdTdmQRCsu/WU48IxK63nI1bMNSWSs1A=
|
o82bNSQ3+pCTE4FCxpgmdTdmQRCsu/WU48IxK63nI1bMNSWSs1A=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
FIRMAPROFESIONAL CA ROOT-A WEB
|
||||||
|
==============================
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICejCCAgCgAwIBAgIQMZch7a+JQn81QYehZ1ZMbTAKBggqhkjOPQQDAzBuMQswCQYDVQQGEwJF
|
||||||
|
UzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25hbCBTQTEYMBYGA1UEYQwPVkFURVMtQTYyNjM0MDY4
|
||||||
|
MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFMIENBIFJPT1QtQSBXRUIwHhcNMjIwNDA2MDkwMTM2
|
||||||
|
WhcNNDcwMzMxMDkwMTM2WjBuMQswCQYDVQQGEwJFUzEcMBoGA1UECgwTRmlybWFwcm9mZXNpb25h
|
||||||
|
bCBTQTEYMBYGA1UEYQwPVkFURVMtQTYyNjM0MDY4MScwJQYDVQQDDB5GSVJNQVBST0ZFU0lPTkFM
|
||||||
|
IENBIFJPT1QtQSBXRUIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARHU+osEaR3xyrq89Zfe9MEkVz6
|
||||||
|
iMYiuYMQYneEMy3pA4jU4DP37XcsSmDq5G+tbbT4TIqk5B/K6k84Si6CcyvHZpsKjECcfIr28jlg
|
||||||
|
st7L7Ljkb+qbXbdTkBgyVcUgt5SjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUk+FD
|
||||||
|
Y1w8ndYn81LsF7Kpryz3dvgwHQYDVR0OBBYEFJPhQ2NcPJ3WJ/NS7Beyqa8s93b4MA4GA1UdDwEB
|
||||||
|
/wQEAwIBBjAKBggqhkjOPQQDAwNoADBlAjAdfKR7w4l1M+E7qUW/Runpod3JIha3RxEL2Jq68cgL
|
||||||
|
cFBTApFwhVmpHqTm6iMxoAACMQD94vizrxa5HnPEluPBMBnYfubDl94cT7iJLzPrSA8Z94dGXSaQ
|
||||||
|
pYXFuXqUPoeovQA=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
TWCA CYBER Root CA
|
||||||
|
==================
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
SecureSign Root CA12
|
||||||
|
====================
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDcjCCAlqgAwIBAgIUZvnHwa/swlG07VOX5uaCwysckBYwDQYJKoZIhvcNAQELBQAwUTELMAkG
|
||||||
|
A1UEBhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRT
|
||||||
|
ZWN1cmVTaWduIFJvb3QgQ0ExMjAeFw0yMDA0MDgwNTM2NDZaFw00MDA0MDgwNTM2NDZaMFExCzAJ
|
||||||
|
BgNVBAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMU
|
||||||
|
U2VjdXJlU2lnbiBSb290IENBMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6OcE3
|
||||||
|
emhFKxS06+QT61d1I02PJC0W6K6OyX2kVzsqdiUzg2zqMoqUm048luT9Ub+ZyZN+v/mtp7JIKwcc
|
||||||
|
J/VMvHASd6SFVLX9kHrko+RRWAPNEHl57muTH2SOa2SroxPjcf59q5zdJ1M3s6oYwlkm7Fsf0uZl
|
||||||
|
fO+TvdhYXAvA42VvPMfKWeP+bl+sg779XSVOKik71gurFzJ4pOE+lEa+Ym6b3kaosRbnhW70CEBF
|
||||||
|
EaCeVESE99g2zvVQR9wsMJvuwPWW0v4JhscGWa5Pro4RmHvzC1KqYiaqId+OJTN5lxZJjfU+1Uef
|
||||||
|
NzFJM3IFTQy2VYzxV4+Kh9GtxRESOaCtAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
|
||||||
|
AQH/BAQDAgEGMB0GA1UdDgQWBBRXNPN0zwRL1SXm8UC2LEzZLemgrTANBgkqhkiG9w0BAQsFAAOC
|
||||||
|
AQEAPrvbFxbS8hQBICw4g0utvsqFepq2m2um4fylOqyttCg6r9cBg0krY6LdmmQOmFxv3Y67ilQi
|
||||||
|
LUoT865AQ9tPkbeGGuwAtEGBpE/6aouIs3YIcipJQMPTw4WJmBClnW8Zt7vPemVV2zfrPIpyMpce
|
||||||
|
mik+rY3moxtt9XUa5rBouVui7mlHJzWhhpmA8zNL4WukJsPvdFlseqJkth5Ew1DgDzk9qTPxpfPS
|
||||||
|
vWKErI4cqc1avTc7bgoitPQV55FYxTpE05Uo2cBl6XLK0A+9H7MV2anjpEcJnuDLN/v9vZfVvhga
|
||||||
|
aaI5gdka9at/yOPiZwud9AzqVN/Ssq+xIvEg37xEHA==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
SecureSign Root CA14
|
||||||
|
====================
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
|
||||||
|
SecureSign Root CA15
|
||||||
|
====================
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIICIzCCAamgAwIBAgIUFhXHw9hJp75pDIqI7fBw+d23PocwCgYIKoZIzj0EAwMwUTELMAkGA1UE
|
||||||
|
BhMCSlAxIzAhBgNVBAoTGkN5YmVydHJ1c3QgSmFwYW4gQ28uLCBMdGQuMR0wGwYDVQQDExRTZWN1
|
||||||
|
cmVTaWduIFJvb3QgQ0ExNTAeFw0yMDA0MDgwODMyNTZaFw00NTA0MDgwODMyNTZaMFExCzAJBgNV
|
||||||
|
BAYTAkpQMSMwIQYDVQQKExpDeWJlcnRydXN0IEphcGFuIENvLiwgTHRkLjEdMBsGA1UEAxMUU2Vj
|
||||||
|
dXJlU2lnbiBSb290IENBMTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQLUHSNZDKZmbPSYAi4Io5G
|
||||||
|
dCx4wCtELW1fHcmuS1Iggz24FG1Th2CeX2yF2wYUleDHKP+dX+Sq8bOLbe1PL0vJSpSRZHX+AezB
|
||||||
|
2Ot6lHhWGENfa4HL9rzatAy2KZMIaY+jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
|
||||||
|
AgEGMB0GA1UdDgQWBBTrQciu/NWeUUj1vYv0hyCTQSvT9DAKBggqhkjOPQQDAwNoADBlAjEA2S6J
|
||||||
|
fl5OpBEHvVnCB96rMjhTKkZEBhd6zlHp4P9mLQlO4E/0BdGF9jVg3PVys0Z9AjBEmEYagoUeYWmJ
|
||||||
|
SwdLZrWeqrqgHkHZAXQ6bkU6iYAZezKYVWOr62Nuk22rGwlgMU4=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
Loading…
Reference in New Issue
Block a user