diff options
31 files changed, 224 insertions, 143 deletions
@@ -6,25 +6,35 @@ Andreas Haas <liu.gam3@gmail.com> Andreas Haas <liu.gam3@gmail.com> <hinsbart@gmail.com> Andreas Haas <liu.gam3@gmail.com> <hinsbart@users.noreply.github.com> Andreas Haas <liu.gam3@gmail.com> <entenflugstuhl@gmail.com> +Anish Bhobe <anishbhobe@hotmail.com> +Anutrix <numaanzaheerahmed@yahoo.com> +Aren Villanueva <arenvillanueva@yomogi-soft.com> <aren@displaysweet.com> Ariel Manzur <ariel@godotengine.org> Ariel Manzur <ariel@godotengine.org> <punto@godotengine.org> Ariel Manzur <ariel@godotengine.org> <ariel@okamstudio.com> Ariel Manzur <ariel@godotengine.org> <punto@Ariels-Mac-mini.local> Ariel Manzur <ariel@godotengine.org> <punto@Ariels-Mac-mini-2.local> Bastiaan Olij <mux213@gmail.com> +Benjamin <mafortion.benjamin@gmail.com> Bernhard Liebl <Bernhard.Liebl@gmx.org> <poke1024@gmx.de> Bernhard Liebl <Bernhard.Liebl@gmx.org> <poke1024@gmx.org> +Chaosus <chaosus89@gmail.com> Chris Bradfield <chris@kidscancode.org> <cb@scribe.net> Clay John <claynjohn@gmail.com> Clay John <claynjohn@gmail.com> <clayjohn@shaw.ca> Dana Olson <dana@shineuponthee.com> <adolson@gmail.com> Daniel J. Ramirez <djrmuv@gmail.com> +Fabian <supagu@gmail.com> Ferenc Arn <tagcup@yahoo.com> Ferenc Arn <tagcup@yahoo.com> <tagcup@users.noreply.github.com> Geequlim <geequlim@gmail.com> Gilles Roudiere <gilles.roudiere@gmail.com> Gilles Roudiere <gilles.roudiere@gmail.com> <gilles.roudiere@laas.fr> Guilherme Felipe <guilhermefelipecgs@gmail.com> +Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com> +Hein-Pieter van Braam-Stewart <hp@tmm.cx> +Hubert Jarosz <marqin.pl@gmail.com> +Hubert Jarosz <marqin.pl@gmail.com> <marqin.pl+git@gmail.com> Hugo Locurcio <hugo.locurcio@hugo.pro> <hugo.l@openmailbox.org> Hugo Locurcio <hugo.locurcio@hugo.pro> <Calinou@users.noreply.github.com> Hugo Locurcio <hugo.locurcio@hugo.pro> Calinou <calinou@opmbx.org> @@ -36,34 +46,62 @@ J08nY <johny@neuromancer.sk> <jancar.jj@gmail.com> J08nY <johny@neuromancer.sk> <J08nY@users.noreply.github.com> Jakub Grzesik <kubecz3k@gmail.com> Jérôme Gully <jerome.gully0@gmail.com> +JFonS <joan.fonssanchez@gmail.com> Juan Linietsky <reduzio@gmail.com> Juan Linietsky <reduzio@gmail.com> <juan@godotengine.org> Juan Linietsky <reduzio@gmail.com> <juan@okamstudio.com> Juan Linietsky <reduzio@gmail.com> <reduz@Juans-MBP.fibertel.com.ar> Juan Linietsky <reduzio@gmail.com> <red@kyoko> Julian Murgia <the.straton@gmail.com> +Kanabenki <lucien.menassol@gmail.com> <18357657+Kanabenki@users.noreply.github.com> Kelly Thomas <kelly.thomas@hotmail.com.au> +K. S. Ernest (iFire) Lee <ernest.lee@chibifire.com> Leon Krause <lk@leonkrause.com> <eska@eska.me> Leon Krause <lk@leonkrause.com> <eska014@users.noreply.github.com> Marcelo Fernandez <marcelofg55@gmail.com> Marcin Zawiejski <dragmz@gmail.com> Mariano Javier Suligoy <marianognu.easyrpg@gmail.com> Mario Schlack <m4r10.5ch14ck@gmail.com> +marxin <mliska@suse.cz> +marynate <mary.w.nate@gmail.com> <marynate@github.com> Max Hilbrunner <m.hilbrunner@gmail.com> Max Hilbrunner <m.hilbrunner@gmail.com> <mhilbrunner@users.noreply.github.com> +Michael Alexsander Silva Dias <michaelalexsander@protonmail.com> +Nathan Lovato <nathan@gdquest.com> Nathan Warden <nathan@nathanwarden.com> <nathanwardenlee@icloud.com> +Nils ANDRÉ-CHANG <nils@nilsand.re> +Nils ANDRÉ-CHANG <nils@nilsand.re> <nils.andre.chang@gmail.com> Nuno Donato <nunodonato@gmail.com> <n.donato@estrelasustentavel.pt> Pedro J. Estébanez <pedrojrulez@gmail.com> <RandomShaper@users.noreply.github.com> Paul Batty <p_batty@hotmail.co.uk> Paul Batty <p_batty@hotmail.co.uk> <Paulb23@users.noreply.github.com> +Pawel Kowal <pkowal1982@gmail.com> <pawel.kowal@javart.eu> Pieter-Jan Briers <pieterjan.briers+git@gmail.com> Pieter-Jan Briers <pieterjan.briers+git@gmail.com> <pieterjan.briers@gmail.com> Poommetee Ketson <poommetee@protonmail.com> +Przemysław Gołąb (n-pigeon) <golab.przemyslaw@gmail.com> +Ralf Hölzemer <r.hoelzemer@posteo.de> <rollenrolm@posteo.de> +Ralf Hölzemer <r.hoelzemer@posteo.de> <rollenrolm@users.noreply.github.com> +Ramesh Ravone <ramesh.maran443@gmail.com> +RaphaelHunter <raphael10241024@gmail.com> +RaphaelHunter <raphael10241024@gmail.com> <Raphael10241024@gmail.com> +RaphaelHunter <raphael10241024@gmail.com> <raphael20141024@gmail.com> Rémi Verschelde <rverschelde@gmail.com> <remi@verschelde.fr> +Rhody Lugo <rhodylugo@gmail.com> <rhodylugo@me.com> +Robin Hübner <profan@prfn.se> <robinhubner@gmail.com> +romulox_x <romulox_x@yahoo.com> Ruslan Mustakov <r.mustakov@gmail.com> <ruslan.mustakov@xored.com> Saracen <SaracenOne@gmail.com> +sheepandshepherd <sheepandshepherd@hotmail.com> <sheepandshepherd@users.noreply.github.com> +Swarnim Arun <swarnimarun11@gmail.com> Theo Hallenius <redsymbzone@hotmail.com> Thomas Herzog <therzog@mail.de> Thomas Herzog <therzog@mail.de> <thomas.herzog@mail.com> Thomas Herzog <therzog@mail.de> <thomas.herzog@simedis.com> +Twarit <wtwarit@gmail.com> +V.VamsiKrishna <vk@bsb.in> <vamsikrishna.v@gmail.com> +Wilhem Barbier <nounoursheureux@openmailbox.org> <wilhem.b@free.fr> +Wilhem Barbier <nounoursheureux@openmailbox.org> <schtroumps31@gmail.com> +Will Nations <willnationsdev@gmail.com> +yg2f <yoann@terminajones.com> Zher Huei Lee <lee.zh.92@gmail.com> diff --git a/AUTHORS.md b/AUTHORS.md index 523f253228..4ae6db35d7 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -41,11 +41,12 @@ name is available. Ariel Manzur (punto-) Bastiaan Olij (BastiaanOlij) Ben Brookshire (sheepandshepherd) - Benjamin (Nallebeorn) + Benjamin Larsson (Nallebeorn) Bernard Liebl (poke1024) Błażej Szczygieł (zaps166) Bojidar Marinov (bojidar-bg) bruvzg + Cameron Reikes (creikey) Camille Mohr-Daurat (pouleyKetchoupp) Carl Olsson (not-surt) Carter Anderson (cart) @@ -57,7 +58,7 @@ name is available. Dharkael (lupoDharkael) Dmitry Koteroff (Krakean) DualMatrix - Emmanuel Barroga (sparkart) + Emmanuel Barroga (codecustard) Emmanuel Leblond (touilleMan) Eric Lasota (elasota) est31 @@ -70,8 +71,8 @@ name is available. Gerrit Großkopf (Grosskopf) Gilles Roudiere (groud) Guilherme Felipe de C. G. da Silva (guilhermefelipecgs) - Hanif A (hbina) - Hein-Pieter van Braam (hpvb) + Hanif Bin Ariffin (hbina) + Hein-Pieter van Braam-Stewart (hpvb) Hiroshi Ogawa (hi-ogawa) homer666 Hubert Jarosz (Marqin) @@ -109,8 +110,10 @@ name is available. Max Hilbrunner (mhilbrunner) merumelu Michael Alexsander Silva Dias (YeldhamDev) + MichiRecRoom (LikeLakers2) mrezai Nathan Warden (NathanWarden) + Nils André-Chang (NilsIrl) Nuno Donato (nunodonato) Ovnuniarchos Pascal Richter (ShyRed) @@ -125,10 +128,12 @@ name is available. Rafał Mikrut (qarmin) Ralf Hölzemer (rollenrolm) Ramesh Ravone (RameshRavone) + raphael10241024 Ray Koopa (RayKoopa) Rémi Verschelde (akien-mga) Rhody Lugo (rraallvv) Roberto F. Arroyo (robfram) + Robin Hübner (profan) romulox-x Ruslan Mustakov (endragor) Saniko (sanikoyes) @@ -136,11 +141,13 @@ name is available. SaracenOne sersoong Simon Wenner (swenner) + Swarnim Arun (minraws) Theo Hallenius (TheoXD) Thomas Herzog (karroffel) Timo (toger5) Timo Schwarzer (timoschwarzer) Tomasz Chabora (KoBeWi) + Twarit Waikar (IronicallySerious) Vinzenz Feenstra (vinzenz) 박한얼 (volzhs) V. Vamsi Krishna (vkbsb) @@ -149,7 +156,6 @@ name is available. Wilson E. Alvarez (Rubonnek) Xavier Cho (mysticfall) yg2f (SuperUserNameMan) - Yuri Roubinski (Chaosus) + Yuri Roubinsky (Chaosus) Zher Huei Lee (leezh) ZuBsPaCe - Дмитрий Сальников (DmitriySalnikov) @@ -13,6 +13,7 @@ generous deed immortalized in the next stable release of Godot Engine. ## Platinum sponsors Enjin Coin <https://enjincoin.io> + Heroic Labs <https://heroiclabs.com> ## Gold sponsors @@ -29,6 +30,7 @@ generous deed immortalized in the next stable release of Godot Engine. Christian Chipont Christian Uldall Pedersen Christoph Woinke + Darkhan Baimyrza Denis Malyavin Edward Flick Gamechuck @@ -38,23 +40,25 @@ generous deed immortalized in the next stable release of Godot Engine. Hein-Pieter van Braam Jacob McKenney Javary Co. + Jeffery Chiu Jeppe Zapp Justin Arnold Justo Delgado Baudí Kyle Szklenski Leonard Meagher + Mariano Suligoy Matthieu Huvé Maxim Karsten Mike King Nathan Warden Neal Gompa (Conan Kudo) Patrick Aarstad + ScottMakesGames Slobodan Milnovic Stephan Lanfermann Steve + Tristan Pemble VilliHaukka - Xananax - Zashi ## Gold donors @@ -63,8 +67,11 @@ generous deed immortalized in the next stable release of Godot Engine. Daniel Hartmann Dave David Gehrig + David Snopek Ed Morley Florian Krick + Florian Rämisch + GiulianoB Jakub Grzesik K9Kraken Manuele Finocchiaro @@ -72,30 +79,31 @@ generous deed immortalized in the next stable release of Godot Engine. Retro Village Ronan Zeegers Sofox + Taylor Ritenour Zaven Muradyan Alexander Trey Saunders Asher Glick Austen McRae + Bernhard Werner beVR Brian van der Stel Cameron MacNair Carlo Cabanilla Daniel James David Giardi - David Snopek Default Name Edward E Florian Breisch + Gamejunkey Gero - GiulianoB Javier Roman Jay Horton - Jonathan Turner + Joel Höglund Jon Woodward Jose Fernando Alexandre Karl Werf - Kommentgames + Lex Steers Luke Maciej Pendolski Matthew Hillier @@ -107,11 +115,11 @@ generous deed immortalized in the next stable release of Godot Engine. Scott Wadden Sergey Shawn Yu - Svenne Krap thechris Tom Langwaldt tukon - William Wold + Unseen Domains + wmww Alex Khayrullin Branwyn Tylwyth @@ -122,7 +130,6 @@ generous deed immortalized in the next stable release of Godot Engine. Craig Smith Darrian Little Dean Harmon - Ian Richard Kunert Ivan Trombley Joan Fons Joshua Flores @@ -136,10 +143,7 @@ generous deed immortalized in the next stable release of Godot Engine. Rami Reneator Robert Willes - Robin Arys Ronnie Ashlock - ScottMakesGames - Tad C Johnson Thomas Bjarnelöf Vincent Henderson Wojciech Chojnacki @@ -148,12 +152,13 @@ generous deed immortalized in the next stable release of Godot Engine. Adam Neumann Alexander J Maynard Alexey Dyadchenko + Andreas Funke André Frélicot andres eduardo lopez Andrew Bowen - Asdf Ben Botwin Carlos de Sousa Marques + Chase Taranto Chris Petrich Christian Leth Jeppesen Christoph Schröder @@ -162,9 +167,10 @@ generous deed immortalized in the next stable release of Godot Engine. Daniel Eichler David White Eric - Eric Churches Eric Monson + Erik Hatfield Eugenio Hugo Salgüero Jáñez + Fain flesk gavlig GGGames.org @@ -173,14 +179,17 @@ generous deed immortalized in the next stable release of Godot Engine. Hysteria Idzard Kwadijk Jared White + Jeremy Sims + Jerry Ling Joe Flood Jose Malheiro Joshua Lesperance Juan T Chen + Juan Velandia Juraj Móza Kasper Jeppesen kinfox - Klaus The. + Klaus The Klavdij Voncina Maarten Elings Marcelo Dornbusch Lopes @@ -191,7 +200,7 @@ generous deed immortalized in the next stable release of Godot Engine. Matt Eunson Max Bulai Max R.R. Collada - M H + MuffinManKen Nick Nikitin Oliver Dick Patrick Ting @@ -200,7 +209,11 @@ generous deed immortalized in the next stable release of Godot Engine. Pete Goodwin pl Ranoller + Robert Larnach + Robin Arys + Rocknight Studios Romildo Franco + Ryan Samuel Judd Scott Pilet spilldata @@ -213,11 +226,13 @@ generous deed immortalized in the next stable release of Godot Engine. ## Silver donors 1D_Inc - Abby Jones Abraham Haskins + Adam Adam Brunnmeier Adam Carr + Adam Long Adam Nakonieczny + Adam N Webber Adam Smeltzer Adisibio Adrian Demetrescu @@ -228,14 +243,15 @@ generous deed immortalized in the next stable release of Godot Engine. Alder Stefano Alessandro Senese Alexander Koppe + Alexandre Alex Davies-Moore Allen Schade Andreas Evers Andreas Krampitz - Andreas Lundmark Andreas Schüle André Simões Andrés Rodríguez + Andrew Thomas Andrzej Skalski Anthony Bongiovanni Anthony Staunton @@ -243,13 +259,16 @@ generous deed immortalized in the next stable release of Godot Engine. Antony K. Jones AP Condomines Arda Erol + Arseniy M Arthur S. Muszynski + Atilla Kiran Aubrey Falconer Avencherus B A Balázs Batári Beliar Benedikt + Ben G Ben Phelan Ben Vercammen Bernd Jänichen @@ -257,7 +276,7 @@ generous deed immortalized in the next stable release of Godot Engine. Blair Allen Bobby CC Wong Bryan Stevenson - Caleb Dumitry + Carl van der Geest Carwyn Edwards Chris Brown Chris Chapin @@ -268,21 +287,20 @@ generous deed immortalized in the next stable release of Godot Engine. Clay Heaton Cobaltum Collin Shooltz - Dag Sundin Söderström - Dan H. Bentsen Daniel Johnson DanielMaximiano Daniel Pontillo Daniel Reed - Daniel Tebbutt - David Bullock David Cravens David May David Rapisarda David Woodard Dominic Cooney Dominik Wetzel + Donn Eddy Donovan Hutcheon + Dragontrapper + Dr Ewan Murray Duobix Eduardo Teixeira Edward Herbert @@ -318,6 +336,8 @@ generous deed immortalized in the next stable release of Godot Engine. Iiari IndustrialRobot Isaac Morton + Jack Newley + Jaiden Gerig Jaime Ruiz-Borau Vizárraga Jako Danar James A F Manley @@ -325,37 +345,41 @@ generous deed immortalized in the next stable release of Godot Engine. Jed Jeff Hungerford Jeff Nyte + Jennifer Graves Jeremy Kahn Jesse Dubay + Joao Senerchia Joe Alden Joel Fivat Joel Setterberg - Johannes Eichler Johannes Wuensch + John Selig Jomei Jackson Jonas Rudlang Jonas Yamazaki Jonathan G - Jonathan Nieto Jonathon Jon Bonazza Jon Sully Jose Aleman Jose Andrés Mejias Rojas + Jose C. Rubio Joseph Catrambone Josh 'Cheeseness' Bush Juanfran Juan Negrier - Juan Velandia Judd - Jueast Julian Murgia + JungleRobba Justin Spedding Kaiser Bald0 Kamuna Kauzig KC Chan Keedong Park + Keith Bradner + Kevin Kolcheck + Kevin McPhillips kickmaniac Kiyohiro Kawamura (kyorohiro) Kjetil Haugland @@ -378,12 +402,15 @@ generous deed immortalized in the next stable release of Godot Engine. Marcus Richter Markus Lohaus Markus Michael Egger + Martin Candela Martin Holas Martin Liška - Matt Edwards Matthew Little + Maxime Blade Maxwell medecau + Melissa Mears + M H mhilbrunner Michael Dürwald Michael Gringauz @@ -392,11 +419,10 @@ generous deed immortalized in the next stable release of Godot Engine. Mikael Olsson Mikayla Hutchinson Mike Birkhead - Mike Cunningham Mitchell J. Wagner MoM - MuffinManKen Nathan Fish + Nathan W Natrim nee Neil Blakey-Milner @@ -410,13 +436,12 @@ generous deed immortalized in the next stable release of Godot Engine. Nima Farid Nithin Jino NZ + Oleg Reva Olivier Omar Delarosa - omzee Oscar Norlander Pafka Pan Ip - Pat LaBine Patrick Forringer Patrick Nafarrete Paul Gieske @@ -429,24 +454,25 @@ generous deed immortalized in the next stable release of Godot Engine. Poryg Rafa Laguna Rafal Wyszomirski + rainerLinux Raphael Leroux Remi Rampin Rémi Verschelde Rezgi Ricardo Alcantara + Richard Diss + Richard Ivánek Robert Farr (Larington) Robert Hernandez - Robert Larnach Rodrigo Loli Roger Smith Roland Rząsa Roman Tinkov Ronan Jouchet - Ryan - Ryan Brooks Ryan Groom Ryan Hentz Saad Khoudmi + Sam Edson Samuele Zolfanelli Sanka.X Sasori Olkof @@ -459,20 +485,22 @@ generous deed immortalized in the next stable release of Godot Engine. Simon Ledam Simon Wenner SK + smbe19 Sootstone - Taylor Fahlman + Stonepyre + Svenne Krap + The Architect thomas - Thomas Bell + Thomas Bechtold Thomas Kelly Thomas Kurz tiansheng li Tim Drumheller - Tim Gudex Timothy B. MacDonald + TJRHTK Tobbun Tom Fulp Tom Glenn - Tom Larrow Torsten Crass Travis O'Brien Trent Skinner @@ -487,7 +515,6 @@ generous deed immortalized in the next stable release of Godot Engine. Vigilant Watch Vincent Cloutier waka nya - Walter Byers Wayne Haak werner mendizabal Wiley Thompson diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index 9a943aba51..2b44eb81b1 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -177,6 +177,7 @@ Enables fog's light transmission. If enabled, lets reflections light to be transmitted by the fog. </member> <member name="glow_bicubic_upscale" type="bool" setter="set_glow_bicubic_upscale" getter="is_glow_bicubic_upscale_enabled" default="false"> + Smooths out blockiness created by sampling higher levels. </member> <member name="glow_blend_mode" type="int" setter="set_glow_blend_mode" getter="get_glow_blend_mode" enum="Environment.GlowBlendMode" default="2"> Glow blending mode. @@ -193,10 +194,10 @@ Bleed scale of the HDR glow. </member> <member name="glow_hdr_threshold" type="float" setter="set_glow_hdr_bleed_threshold" getter="get_glow_hdr_bleed_threshold" default="1.0"> - Bleed threshold of the HDR glow. + Bleed threshold of the HDR glow. In GLES2, this needs to be below 1.0 in order for glow to be visible, a default value of 0.9 works well. </member> <member name="glow_intensity" type="float" setter="set_glow_intensity" getter="get_glow_intensity" default="0.8"> - Glow intensity. + Glow intensity. In GLES2, this should be increased to 1.5 by default to compensate for not using HDR. </member> <member name="glow_levels/1" type="bool" setter="set_glow_level" getter="is_glow_level_enabled" default="false"> First level of glow (most local). @@ -220,7 +221,7 @@ Seventh level of glow (most global). </member> <member name="glow_strength" type="float" setter="set_glow_strength" getter="get_glow_strength" default="1.0"> - Glow strength. + Glow strength. In GLES2, this should be increased to 1.3 by default to compensate for not using HDR. </member> <member name="ss_reflections_depth_tolerance" type="float" setter="set_ssr_depth_tolerance" getter="get_ssr_depth_tolerance" default="0.2"> </member> diff --git a/doc/classes/Mutex.xml b/doc/classes/Mutex.xml index 793696321b..8a294425e6 100644 --- a/doc/classes/Mutex.xml +++ b/doc/classes/Mutex.xml @@ -7,6 +7,7 @@ A synchronization mutex (mutual exclusion). This is used to synchronize multiple [Thread]s, and is equivalent to a binary [Semaphore]. It guarantees that only one thread can ever acquire the lock at a time. A mutex can be used to protect a critical section; however, be careful to avoid deadlocks. </description> <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/threads/using_multiple_threads.html</link> </tutorials> <methods> <method name="lock"> diff --git a/doc/classes/Semaphore.xml b/doc/classes/Semaphore.xml index 7aee5c2951..74970be8b4 100644 --- a/doc/classes/Semaphore.xml +++ b/doc/classes/Semaphore.xml @@ -7,6 +7,7 @@ A synchronization semaphore which can be used to synchronize multiple [Thread]s. Initialized to zero on creation. Be careful to avoid deadlocks. For a binary version, see [Mutex]. </description> <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/threads/using_multiple_threads.html</link> </tutorials> <methods> <method name="post"> diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml index 8f96ab0aed..25e40d4c1f 100644 --- a/doc/classes/Thread.xml +++ b/doc/classes/Thread.xml @@ -7,6 +7,7 @@ A unit of execution in a process. Can run methods on [Object]s simultaneously. The use of synchronization via [Mutex] or [Semaphore] is advised if working with shared objects. </description> <tutorials> + <link>https://docs.godotengine.org/en/latest/tutorials/threads/using_multiple_threads.html</link> </tutorials> <methods> <method name="get_id" qualifiers="const"> diff --git a/drivers/gles2/rasterizer_scene_gles2.h b/drivers/gles2/rasterizer_scene_gles2.h index 366a9020fc..7babcfeed1 100644 --- a/drivers/gles2/rasterizer_scene_gles2.h +++ b/drivers/gles2/rasterizer_scene_gles2.h @@ -420,11 +420,11 @@ public: canvas_max_layer(0), glow_enabled(false), glow_levels((1 << 2) | (1 << 4)), - glow_intensity(1.5), - glow_strength(1.3), + glow_intensity(0.8), + glow_strength(1.0), glow_bloom(0.0), glow_blend_mode(VS::GLOW_BLEND_MODE_SOFTLIGHT), - glow_hdr_bleed_threshold(0.9), + glow_hdr_bleed_threshold(1.0), glow_hdr_bleed_scale(2.0), glow_hdr_luminance_cap(12.0), glow_bicubic_upscale(false), diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp index 1584295b4c..e09e34e2e4 100644 --- a/drivers/gles2/rasterizer_storage_gles2.cpp +++ b/drivers/gles2/rasterizer_storage_gles2.cpp @@ -1482,8 +1482,9 @@ void RasterizerStorageGLES2::_update_shader(Shader *p_shader) const { } Error err = shaders.compiler.compile(p_shader->mode, p_shader->code, actions, p_shader->path, gen_code); - - ERR_FAIL_COND(err != OK); + if (err != OK) { + return; + } p_shader->shader->set_custom_shader_code(p_shader->custom_code_id, gen_code.vertex, gen_code.vertex_global, gen_code.fragment, gen_code.light, gen_code.fragment_global, gen_code.uniforms, gen_code.texture_uniforms, gen_code.custom_defines); diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp index a29831e3f5..95be67a5b7 100644 --- a/drivers/gles3/rasterizer_storage_gles3.cpp +++ b/drivers/gles3/rasterizer_storage_gles3.cpp @@ -2168,8 +2168,9 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const { } Error err = shaders.compiler.compile(p_shader->mode, p_shader->code, actions, p_shader->path, gen_code); - - ERR_FAIL_COND(err != OK); + if (err != OK) { + return; + } p_shader->shader->set_custom_shader_code(p_shader->custom_code_id, gen_code.vertex, gen_code.vertex_global, gen_code.fragment, gen_code.light, gen_code.fragment_global, gen_code.uniforms, gen_code.texture_uniforms, gen_code.defines); diff --git a/drivers/unix/ip_unix.cpp b/drivers/unix/ip_unix.cpp index ac7195abc1..cf47cdc7e8 100644 --- a/drivers/unix/ip_unix.cpp +++ b/drivers/unix/ip_unix.cpp @@ -152,7 +152,7 @@ void IP_Unix::get_local_interfaces(Map<String, Interface_Info> *r_interfaces) co Interface_Info info; info.name = name; info.name_friendly = hostname->DisplayName->Data(); - info.index = 0; + info.index = String::num_uint64(0); E = r_interfaces->insert(name, info); ERR_CONTINUE(!E); } diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp index b6cd69c3cd..4c31797c50 100644 --- a/editor/code_editor.cpp +++ b/editor/code_editor.cpp @@ -456,10 +456,10 @@ void FindReplaceBar::_show_search(bool p_focus_replace, bool p_show_only) { void FindReplaceBar::popup_search(bool p_show_only) { - if (!is_visible()) - replace_text->hide(); + replace_text->hide(); hbc_button_replace->hide(); hbc_option_replace->hide(); + _show_search(false, p_show_only); } diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index 5ea7081667..3663bdee27 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -1411,9 +1411,6 @@ String EditorFileSystem::_get_global_script_class(const String &p_type, const St } void EditorFileSystem::_scan_script_classes(EditorFileSystemDirectory *p_dir) { - if (p_dir->parent && p_dir->parent->name == "addons" && !EditorNode::get_singleton()->is_addon_plugin_enabled(p_dir->name)) { - return; - } int filecount = p_dir->files.size(); const EditorFileSystemDirectory::FileInfo *const *files = p_dir->files.ptr(); for (int i = 0; i < filecount; i++) { diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index 2d00324c84..60ef88d2e3 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -304,6 +304,7 @@ void AnimationPlayerEditor::_animation_selected(int p_which) { AnimationPlayerEditor::singleton->get_track_editor()->update_keying(); EditorNode::get_singleton()->update_keying(); + _animation_key_editor_seek(timeline_position, false); } void AnimationPlayerEditor::_animation_new() { @@ -1072,6 +1073,8 @@ void AnimationPlayerEditor::_animation_key_editor_anim_len_changed(float p_len) void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos, bool p_drag) { + timeline_position = p_pos; + if (!is_visible_in_tree()) return; if (!player) @@ -1753,6 +1756,7 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor, AnimationPlay renaming = false; last_active = false; + timeline_position = 0; set_process_unhandled_key_input(true); diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h index eed7344395..663ffd57f3 100644 --- a/editor/plugins/animation_player_editor_plugin.h +++ b/editor/plugins/animation_player_editor_plugin.h @@ -107,6 +107,7 @@ class AnimationPlayerEditor : public VBoxContainer { UndoRedo *undo_redo; Ref<Texture> autoplay_icon; bool last_active; + float timeline_position; EditorFileDialog *file; AcceptDialog *accept; diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 9d3c580f02..ecb2354aa1 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -814,7 +814,7 @@ void ScriptTextEditor::_code_complete_script(const String &p_code, List<ScriptCo } String hint; Error err = script->get_language()->complete_code(p_code, script->get_path(), base, r_options, r_force, hint); - if (err == OK && hint != "") { + if (err == OK) { code_editor->get_text_edit()->set_code_hint(hint); } } diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index df3e23a9e9..97f194e40f 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -198,13 +198,9 @@ void ShaderTextEditor::_code_complete_script(const String &p_code, List<ScriptCo ShaderLanguage sl; String calltip; - Error err = sl.complete(p_code, ShaderTypes::get_singleton()->get_functions(VisualServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_modes(VisualServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_types(), r_options, calltip); - if (err != OK) - ERR_PRINT("Shaderlang complete failed"); + sl.complete(p_code, ShaderTypes::get_singleton()->get_functions(VisualServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_modes(VisualServer::ShaderMode(shader->get_mode())), ShaderTypes::get_singleton()->get_types(), r_options, calltip); - if (calltip != "") { - get_text_edit()->set_code_hint(calltip); - } + get_text_edit()->set_code_hint(calltip); } void ShaderTextEditor::_validate_script() { diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index c5b84f0af1..2e20e068d7 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -88,7 +88,6 @@ void VisualShaderEditor::edit(VisualShader *p_visual_shader) { } else { if (changed) { // to avoid tree collapse _clear_buffer(); - _update_custom_nodes(); _update_options_menu(); _update_preview(); } @@ -178,7 +177,7 @@ bool VisualShaderEditor::_is_available(int p_mode) { return (p_mode == -1 || (p_mode & current_mode) != 0); } -void VisualShaderEditor::_update_custom_nodes() { +void VisualShaderEditor::update_custom_nodes() { clear_custom_types(); List<StringName> class_list; ScriptServer::get_global_class_list(&class_list); @@ -228,6 +227,7 @@ void VisualShaderEditor::_update_custom_nodes() { add_custom_type(name, script, description, return_icon_type, category, sub_category); } } + _update_options_menu(); } String VisualShaderEditor::_get_description(int p_idx) { @@ -1219,6 +1219,23 @@ void VisualShaderEditor::_edit_port_default_input(Object *p_button, int p_node, editing_port = p_port; } +void VisualShaderEditor::_add_custom_node(const String &p_path) { + + int idx = -1; + + for (int i = custom_node_option_idx; i < add_options.size(); i++) { + if (add_options[i].script.is_valid()) { + if (add_options[i].script->get_path() == p_path) { + idx = i; + break; + } + } + } + if (idx != -1) { + _add_node(idx); + } +} + void VisualShaderEditor::_add_texture_node(const String &p_path) { VisualShaderNodeTexture *texture = (VisualShaderNodeTexture *)_add_node(texture_node_option_idx, -1); texture->set_texture(ResourceLoader::load(p_path)); @@ -2072,14 +2089,24 @@ void VisualShaderEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da } else if (d.has("files")) { if (d["files"].get_type() == Variant::POOL_STRING_ARRAY) { + int j = 0; PoolStringArray arr = d["files"]; for (int i = 0; i < arr.size(); i++) { String type = ResourceLoader::get_resource_type(arr[i]); - if (ClassDB::get_parent_class(type) == "Texture") { - saved_node_pos = p_point + Vector2(0, i * 210 * EDSCALE); + if (type == "GDScript") { + Ref<Script> script = ResourceLoader::load(arr[i]); + if (script->get_instance_base_type() == "VisualShaderNodeCustom") { + saved_node_pos = p_point + Vector2(0, j * 210 * EDSCALE); + saved_node_pos_dirty = true; + _add_custom_node(arr[i]); + j++; + } + } else if (ClassDB::get_parent_class(type) == "Texture") { + saved_node_pos = p_point + Vector2(0, j * 210 * EDSCALE); saved_node_pos_dirty = true; _add_texture_node(arr[i]); + j++; } } } @@ -2698,6 +2725,7 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("DdYS", "Special", "Derivative", "VisualShaderNodeScalarDerivativeFunc", TTR("(Fragment/Light mode only) (Scalar) Derivative in 'y' using local differencing."), VisualShaderNodeScalarDerivativeFunc::FUNC_Y, VisualShaderNode::PORT_TYPE_SCALAR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true)); add_options.push_back(AddOption("Sum", "Special", "Derivative", "VisualShaderNodeVectorDerivativeFunc", TTR("(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and 'y'."), VisualShaderNodeVectorDerivativeFunc::FUNC_SUM, VisualShaderNode::PORT_TYPE_VECTOR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true)); add_options.push_back(AddOption("SumS", "Special", "Derivative", "VisualShaderNodeScalarDerivativeFunc", TTR("(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and 'y'."), VisualShaderNodeScalarDerivativeFunc::FUNC_SUM, VisualShaderNode::PORT_TYPE_SCALAR, VisualShader::TYPE_FRAGMENT | VisualShader::TYPE_LIGHT, -1, -1, true)); + custom_node_option_idx = add_options.size(); ///////////////////////////////////////////////////////////////////// @@ -2739,6 +2767,7 @@ void VisualShaderEditorPlugin::make_visible(bool p_visible) { //editor->animation_panel_make_visible(true); button->show(); editor->make_bottom_panel_item_visible(visual_shader_editor); + visual_shader_editor->update_custom_nodes(); visual_shader_editor->set_process_input(true); //visual_shader_editor->set_process(true); } else { diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index d56e223057..700e7cfd7d 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -149,13 +149,14 @@ class VisualShaderEditor : public VBoxContainer { Vector<AddOption> add_options; int texture_node_option_idx; + int custom_node_option_idx; List<String> keyword_list; void _draw_color_over_button(Object *obj, Color p_color); + void _add_custom_node(const String &p_path); void _add_texture_node(const String &p_path); VisualShaderNode *_add_node(int p_idx, int p_op_idx = -1); - void _update_custom_nodes(); void _update_options_menu(); void _show_preview_text(); @@ -255,6 +256,7 @@ protected: static void _bind_methods(); public: + void update_custom_nodes(); void add_plugin(const Ref<VisualShaderNodePlugin> &p_plugin); void remove_plugin(const Ref<VisualShaderNodePlugin> &p_plugin); diff --git a/main/splash_editor.png b/main/splash_editor.png Binary files differindex d8677f1749..ab10716a2e 100644 --- a/main/splash_editor.png +++ b/main/splash_editor.png diff --git a/misc/dist/html/fixed-size.html b/misc/dist/html/fixed-size.html index 14766e8239..1cc6fd715e 100644 --- a/misc/dist/html/fixed-size.html +++ b/misc/dist/html/fixed-size.html @@ -229,6 +229,7 @@ $GODOT_HEAD_INCLUDE (function() { + const EXECUTABLE_NAME = '$GODOT_BASENAME'; const MAIN_PACK = '$GODOT_BASENAME.pck'; const DEBUG_ENABLED = $GODOT_DEBUG_ENABLED; const INDETERMINATE_STATUS_STEP_MS = 100; @@ -380,7 +381,7 @@ $GODOT_HEAD_INCLUDE } else { setStatusMode('indeterminate'); engine.setCanvas(canvas); - engine.startGame(MAIN_PACK).then(() => { + engine.startGame(EXECUTABLE_NAME, MAIN_PACK).then(() => { setStatusMode('hidden'); initializing = false; }, displayFailureNotice); diff --git a/misc/dist/html/full-size.html b/misc/dist/html/full-size.html index 12b9af21e5..9269227d02 100644 --- a/misc/dist/html/full-size.html +++ b/misc/dist/html/full-size.html @@ -142,6 +142,7 @@ $GODOT_HEAD_INCLUDE (function() { + const EXECUTABLE_NAME = '$GODOT_BASENAME'; const MAIN_PACK = '$GODOT_BASENAME.pck'; const INDETERMINATE_STATUS_STEP_MS = 100; @@ -254,7 +255,7 @@ $GODOT_HEAD_INCLUDE } else { setStatusMode('indeterminate'); engine.setCanvas(canvas); - engine.startGame(MAIN_PACK).then(() => { + engine.startGame(EXECUTABLE_NAME, MAIN_PACK).then(() => { setStatusMode('hidden'); initializing = false; }, displayFailureNotice); diff --git a/misc/scripts/sort-demos.sh b/misc/scripts/sort-demos.sh deleted file mode 100644 index 5e01b86b46..0000000000 --- a/misc/scripts/sort-demos.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -# When scanning for demos, the project manager sorts them based on their -# timestamp, i.e. last modification date. This can make for a pretty -# messy output, so this script 'touches' each project.godot file in reverse -# alphabetical order to ensure a nice listing. -# -# It's good practice to run it once before packaging demos on the build -# server. - -if [ ! -d "demos" ]; then - echo "Run this script from the root directory where 'demos/' is contained." - exit 1 -fi - -if [ -e demos.list ]; then - rm -f demos.list -fi - -for dir in 2d 3d gui misc viewport; do - find "demos/$dir" -name "project.godot" |sort >> demos.list -done -cat demos.list |sort -r > demos_r.list - -while read line; do - touch $line - sleep 0.2 -done < demos_r.list - -#rm -f demos.list demos_r.list diff --git a/modules/gdscript/editor/gdscript_highlighter.cpp b/modules/gdscript/editor/gdscript_highlighter.cpp index ee7313957c..4d6279074c 100644 --- a/modules/gdscript/editor/gdscript_highlighter.cpp +++ b/modules/gdscript/editor/gdscript_highlighter.cpp @@ -364,20 +364,28 @@ void GDScriptSyntaxHighlighter::_update_cache() { number_color = text_editor->get_color("number_color"); member_color = text_editor->get_color("member_variable_color"); - EditorSettings *settings = EditorSettings::get_singleton(); - String text_editor_color_theme = settings->get("text_editor/theme/color_theme"); - - bool default_theme = text_editor_color_theme == "Default"; - bool dark_theme = settings->is_dark_theme(); - - function_definition_color = default_theme ? Color(0.0, 0.88, 1.0) : dark_theme ? Color(0.0, 0.88, 1.0) : Color(0.0, 0.65, 0.73); - node_path_color = default_theme ? Color(0.39, 0.76, 0.35) : dark_theme ? Color(0.39, 0.76, 0.35) : Color(0.32, 0.55, 0.29); + const String text_editor_color_theme = EditorSettings::get_singleton()->get("text_editor/theme/color_theme"); + const bool default_theme = text_editor_color_theme == "Default"; + + if (default_theme || EditorSettings::get_singleton()->is_dark_theme()) { + function_definition_color = Color(0.4, 0.9, 1.0); + node_path_color = Color(0.39, 0.76, 0.35); + } else { + function_definition_color = Color(0.0, 0.65, 0.73); + node_path_color = Color(0.32, 0.55, 0.29); + } EDITOR_DEF("text_editor/highlighting/gdscript/function_definition_color", function_definition_color); EDITOR_DEF("text_editor/highlighting/gdscript/node_path_color", node_path_color); if (text_editor_color_theme == "Adaptive" || default_theme) { - settings->set_initial_value("text_editor/highlighting/gdscript/function_definition_color", function_definition_color, true); - settings->set_initial_value("text_editor/highlighting/gdscript/node_path_color", node_path_color, true); + EditorSettings::get_singleton()->set_initial_value( + "text_editor/highlighting/gdscript/function_definition_color", + function_definition_color, + true); + EditorSettings::get_singleton()->set_initial_value( + "text_editor/highlighting/gdscript/node_path_color", + node_path_color, + true); } function_definition_color = EDITOR_GET("text_editor/highlighting/gdscript/function_definition_color"); diff --git a/modules/jsonrpc/jsonrpc.cpp b/modules/jsonrpc/jsonrpc.cpp index e1bba60f2f..ea90cce83d 100644 --- a/modules/jsonrpc/jsonrpc.cpp +++ b/modules/jsonrpc/jsonrpc.cpp @@ -47,11 +47,11 @@ void JSONRPC::_bind_methods() { ClassDB::bind_method(D_METHOD("make_notification", "method", "params"), &JSONRPC::make_notification); ClassDB::bind_method(D_METHOD("make_response_error", "code", "message", "id"), &JSONRPC::make_response_error, DEFVAL(Variant())); - BIND_ENUM_CONSTANT(PARSE_ERROR) - BIND_ENUM_CONSTANT(INVALID_REQUEST) - BIND_ENUM_CONSTANT(METHOD_NOT_FOUND) - BIND_ENUM_CONSTANT(INVALID_PARAMS) - BIND_ENUM_CONSTANT(INTERNAL_ERROR) + BIND_ENUM_CONSTANT(PARSE_ERROR); + BIND_ENUM_CONSTANT(INVALID_REQUEST); + BIND_ENUM_CONSTANT(METHOD_NOT_FOUND); + BIND_ENUM_CONSTANT(INVALID_PARAMS); + BIND_ENUM_CONSTANT(INTERNAL_ERROR); } Dictionary JSONRPC::make_response_error(int p_code, const String &p_message, const Variant &p_id) const { diff --git a/platform/javascript/engine.js b/platform/javascript/engine.js index 860d6707ff..1f78aa672d 100644 --- a/platform/javascript/engine.js +++ b/platform/javascript/engine.js @@ -94,6 +94,7 @@ return new Promise(function(resolve, reject) { rtenvProps.onRuntimeInitialized = resolve; rtenvProps.onAbort = reject; + rtenvProps.thisProgram = executableName; rtenvProps.engine.rtenv = Engine.RuntimeEnvironment(rtenvProps, LIBS); }); } @@ -130,13 +131,11 @@ ); }; - this.startGame = function(mainPack) { + this.startGame = function(execName, mainPack) { + + executableName = execName; + var mainArgs = [ '--main-pack', mainPack ]; - executableName = getBaseName(mainPack); - var mainArgs = []; - if (!getPathLeaf(mainPack).endsWith('.pck')) { - mainArgs = ['--main-pack', getPathLeaf(mainPack)]; - } return Promise.all([ // Load from directory, this.init(getBasePath(mainPack)), @@ -187,8 +186,6 @@ this.rtenv.locale = this.rtenv.locale.split('.')[0]; this.rtenv.resizeCanvasOnStart = resizeCanvasOnStart; - this.rtenv.thisProgram = executableName || getBaseName(basePath); - preloadedFiles.forEach(function(file) { var dir = LIBS.PATH.dirname(file.path); try { diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp index 9f8510248c..9797b5f3ab 100644 --- a/scene/3d/camera.cpp +++ b/scene/3d/camera.cpp @@ -548,9 +548,9 @@ void Camera::_bind_methods() { BIND_ENUM_CONSTANT(KEEP_WIDTH); BIND_ENUM_CONSTANT(KEEP_HEIGHT); - BIND_ENUM_CONSTANT(DOPPLER_TRACKING_DISABLED) - BIND_ENUM_CONSTANT(DOPPLER_TRACKING_IDLE_STEP) - BIND_ENUM_CONSTANT(DOPPLER_TRACKING_PHYSICS_STEP) + BIND_ENUM_CONSTANT(DOPPLER_TRACKING_DISABLED); + BIND_ENUM_CONSTANT(DOPPLER_TRACKING_IDLE_STEP); + BIND_ENUM_CONSTANT(DOPPLER_TRACKING_PHYSICS_STEP); } float Camera::get_fov() const { diff --git a/scene/animation/animation_blend_tree.cpp b/scene/animation/animation_blend_tree.cpp index 20a09696e1..6f67d01a1c 100644 --- a/scene/animation/animation_blend_tree.cpp +++ b/scene/animation/animation_blend_tree.cpp @@ -350,8 +350,8 @@ void AnimationNodeOneShot::_bind_methods() { ADD_GROUP("", ""); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sync"), "set_use_sync", "is_using_sync"); - BIND_ENUM_CONSTANT(MIX_MODE_BLEND) - BIND_ENUM_CONSTANT(MIX_MODE_ADD) + BIND_ENUM_CONSTANT(MIX_MODE_BLEND); + BIND_ENUM_CONSTANT(MIX_MODE_ADD); } AnimationNodeOneShot::AnimationNodeOneShot() { diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp index 2817ec4eb0..bc96b5e9f3 100644 --- a/scene/resources/environment.cpp +++ b/scene/resources/environment.cpp @@ -1374,11 +1374,6 @@ Environment::Environment() : glow_hdr_luminance_cap = 12.0; glow_hdr_bleed_scale = 2.0; glow_bicubic_upscale = false; - if (VisualServer::get_singleton()->is_low_end()) { - glow_hdr_bleed_threshold = 0.9; - glow_intensity = 1.5; - glow_strength = 1.3; - } dof_blur_far_enabled = false; dof_blur_far_distance = 10; diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp index 6c829e6e81..1dba0c5b09 100644 --- a/scene/resources/visual_shader.cpp +++ b/scene/resources/visual_shader.cpp @@ -1148,12 +1148,16 @@ Error VisualShader::_write_node(Type type, StringBuilder &global_code, StringBui global_code += vsnode->generate_global(get_mode(), type, node); - if (!r_classes.has(vsnode->get_class_name())) { + String class_name = vsnode->get_class_name(); + if (class_name == "VisualShaderNodeCustom") { + class_name = vsnode->get_script_instance()->get_script()->get_language()->get_global_class_name(vsnode->get_script_instance()->get_script()->get_path()); + } + if (!r_classes.has(class_name)) { global_code_per_node += vsnode->generate_global_per_node(get_mode(), type, node); for (int i = 0; i < TYPE_MAX; i++) { global_code_per_func[Type(i)] += vsnode->generate_global_per_func(get_mode(), Type(i), node); } - r_classes.insert(vsnode->get_class_name()); + r_classes.insert(class_name); } } diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp index 1b9c3e2eff..3b549afb02 100644 --- a/servers/visual/shader_language.cpp +++ b/servers/visual/shader_language.cpp @@ -5348,9 +5348,7 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Funct nodes = NULL; shader = alloc_node<ShaderNode>(); - Error err = _parse_shader(p_functions, p_render_modes, p_shader_types); - if (err != OK) - ERR_PRINT("Failed to parse shader"); + _parse_shader(p_functions, p_render_modes, p_shader_types); switch (completion_type) { |