Commit Graph

115 Commits

Author SHA1 Message Date
Chaosus b2611c198e Fix shader incorrectly expects `int` on `uint` and vice-versa in cases 2024-09-11 09:22:27 +03:00
Yuri Rubinsky af92fdb0ac Add basic support to evaluate operator value in shader language 2024-09-09 15:12:11 +03:00
Rémi Verschelde 10a92287c6
Merge pull request #94352 from Chaosus/shader_ternary_fix
Fix multiple ternary expressions to be used without parenthesis
2024-08-28 00:12:07 +02:00
Rémi Verschelde 7999b4bb8a
Merge pull request #94324 from SomeRanDev/shader_hint_enum
GDShader: Add `hint_enum` for `uniform int`
2024-08-20 10:01:57 +02:00
Rémi Verschelde 6bf64027b7
Merge pull request #94785 from Chaosus/shader_fix_samplers_order
Fix texture samplers to not being last in the property list
2024-08-19 16:05:21 +02:00
Chaosus d74749fd60 Fix shader crash when the comma used in `for` loop as a trailing 2024-08-10 11:23:11 +03:00
Yuri Rubinsky e41048e16e Fix texture samplers to not being last in the property list 2024-07-29 09:19:09 +03:00
clayjohn a2f2699208 Restrict sampler hint validation to only screen texture hints 2024-07-28 22:31:57 -07:00
clayjohn ba3457dfff Emit normal_roughness compatibility code in custom functions 2024-07-26 10:45:36 -07:00
Yuri Rubinsky 965b2f6ca4 Fix shader crash when using a varying in separate func before it defined 2024-07-23 21:55:18 +03:00
Yuri Rubinsky eb4bbbb02d Fix multiple ternary expressions to be used without parenthesis 2024-07-17 10:34:17 +03:00
Robert Borghese 1052985b00 Add `hint_enum` for uniform int in gdshader 2024-07-13 14:30:08 -04:00
Yuri Rubinsky 4f657f5c6d Improve code for setup of `global_func_set` in `ShaderLanguage` 2024-07-02 18:16:04 +03:00
Rémi Verschelde 2e8ebb4a5e
Merge pull request #93469 from Chaosus/shader_fix_crash
Fix crash on shader constant initialization on MinGW compiler
2024-06-25 10:01:46 +02:00
Yuri Rubinsky d5b393a268 Fix crash on shader constant initialization on MinGW compiler 2024-06-22 16:36:54 +03:00
Yuri Rubinsky ae95531e64 Forbid calling of derivative functions in incorrect functions 2024-06-21 20:47:21 +03:00
Yuri Rubinsky aecc4cbc47 Prevent using built-ins for func names in shaders 2024-05-30 21:33:21 +03:00
Yuri Rubinsky 246a760323 Fix completion of functions with struct param/return type in shaders 2024-05-28 12:13:25 +03:00
Thaddeus Crews 9903e6779b
Enforce template syntax `typename` over `class` 2024-03-07 22:39:09 -06:00
Muller-Castro 96a95cb974 Add const lvalue ref to container parameters 2024-01-05 14:49:57 -03:00
Rémi Verschelde 24c166dfe2
Merge pull request #81619 from Chaosus/fix_shader_const
Re-allows constants in global space to be initialized with function call
2023-10-03 17:20:23 +02:00
Yuri Roubinski d3d20f15bf Re-allows constants in global space to be initialized with function call 2023-09-13 21:04:29 +03:00
bitsawer 3c042fb99f Fix shader language preprocessor include marker handling 2023-09-06 16:57:40 +03:00
Ninni Pipping 71ee65dc57 Enable shadow warnings and fix raised errors 2023-05-11 16:00:59 +02:00
Yuri Rubinsky 94831c7209 Forbid passing multiview sampler to the custom function in shaders 2023-02-21 11:23:17 +03:00
Yuri Rubinsky e034d5f764 Fix shader failure when using non-const initializer on a constant 2023-02-01 13:03:11 +03:00
Rémi Verschelde d95794ec8a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
Yuri Rubinsky f28348fc5c Fix shader crash when using boolean type for vertex->fragment varyings 2022-12-23 07:47:49 +03:00
Yuri Rubinsky 56954485ed Refactor `ShaderData` & fix the sorting of shader uniforms 2022-12-15 10:02:59 +03:00
Yuri Rubinsky 5693286e90 Mark shader built-ins as used when passed to functions as out parameter 2022-11-15 22:06:16 +03:00
Rémi Verschelde 85fe6ecc32 Fix MSVC warnings C4701 and C4703: Potentially uninitialized variable used 2022-09-28 17:05:34 +02:00
Yuri Rubinsky e4a8646c19 Prevent duplicated hints in shader uniform completion 2022-09-11 15:21:43 +03:00
clayjohn 028ef2edc8 Add shader uniform hints for screen textures so users can specify custom filter and repeat modes.
At this time, it works best in the Vulkan Renderers as they support using multiple samplers with the same texture.

In GLES3 this feature really only allows you to use the screen texture without mipmaps if you want to save the cost of generating them.
2022-08-09 12:29:49 -04:00
Hugo Locurcio 813f6a5d57
Add `hint_transparent` to use a transparent black placeholder texture
This can be used in shaders to avoid the need to supply a transparent
placeholder texture manually.
2022-08-01 23:38:06 +02:00
Hugo Locurcio 4b42379c8f
Rename RenderingServer global shader uniform methods to be more explicit
The `global_shader_uniform` name is longer, but it makes it much
easier to find the methods when searching in the class reference.
2022-07-28 18:46:59 +02:00
Yuri Rubinsky 886c2d9681 Implement shader uniform groups/subgroups 2022-07-26 11:26:09 +03:00
Yuri Rubinsky be3fb7a216 Fix errors when using built-ins in shaderinc 2022-07-25 12:33:04 +03:00
reduz f649678402 Clean up Shader Preprocessor
* Moved preprocessor to Shader and ShaderInclude
* Clean up RenderingServer side
* Preprocessor is separate from parser now, but it emits tokens with include location hints.
* Improved ShaderEditor validation code
* Added include file code completion
* Added notification for all files affected by a broken include.
2022-07-22 22:53:03 +02:00
Yuri Roubinsky 7b94603baa Adding shader preprocessor support
Co-authored-by: TheOrangeDay <6472143+TheOrangeDay@users.noreply.github.com>
2022-07-22 22:51:57 +02:00
clayjohn a94110d0c6 Remove GLES2 shader constraints from GLES3 2022-06-14 12:01:52 -07:00
Yuri Rubinsky cf240a7ae0 Refactor shader hints 2022-05-31 11:51:47 +03:00
Rémi Verschelde 1314e6cbcc
Merge pull request #60803 from Chaosus/shader_hint_rename
Rename `hint_albedo`, `hint_white/black` in shaders
2022-05-24 08:15:33 +02:00
Rémi Verschelde 126470caa1
Merge pull request #61226 from Chaosus/shader_fix_keyword_completion 2022-05-23 19:05:29 +02:00
reduz 45af29da80 Add a new HashSet template
* Intended to replace RBSet in most cases.
* Optimized for iteration speed
2022-05-20 22:40:38 +02:00
Yuri Rubinsky 29ff04acf2 Fix incorrect keyword completion after period in shader editor 2022-05-20 18:40:57 +03:00
reduz 746dddc067 Replace most uses of Map by HashMap
* Map is unnecessary and inefficient in almost every case.
* Replaced by the new HashMap.
* Renamed Map to RBMap and Set to RBSet for cases that still make sense
  (order matters) but use is discouraged.

There were very few cases where replacing by HashMap was undesired because
keeping the key order was intended.
I tried to keep those (as RBMap) as much as possible, but might have missed
some. Review appreciated!
2022-05-16 10:37:48 +02:00
Yuri Roubinsky a8bbe570ca Rename `hint_albedo`, `hint_white/black` in shaders 2022-05-09 22:50:18 +03:00
Rémi Verschelde 477b53d280
Merge pull request #60568 from Chaosus/shader_keyword_completions
Add keyword completion to shader editor
2022-05-04 23:27:33 +02:00
Rémi Verschelde c273ddc3ee Style: Partially apply clang-tidy's `cppcoreguidelines-pro-type-member-init`
Didn't commit all the changes where it wants to initialize a struct
with `{}`. Should be reviewed in a separate PR.

Option `IgnoreArrays` enabled for now to be conservative, can be
disabled to see if it proposes more useful changes.

Also fixed manually a handful of other missing initializations / moved
some from constructors.
2022-05-02 16:28:25 +02:00
Yuri Roubinsky 15032e01e6 Add keyword completion to shader editor 2022-04-29 08:40:43 +03:00