Yuri Roubinsky
e8a457ba89
Refactor render_mode in shaders, forbid declaring duplicates
2021-12-21 22:20:09 +03:00
Rémi Verschelde
be83968b6b
Merge pull request #55970 from Chaosus/shader_fix_struct_warning
2021-12-16 13:35:44 +01:00
Yuri Roubinsky
1414a7be91
Fix struct usage passing to shader warning system
2021-12-15 22:54:46 +03:00
Yuri Roubinsky
f0a58af12f
Rename shader hint `filter_anisotropy` to `filter_anisotropic`
2021-12-15 22:12:38 +03:00
Yuri Roubinsky
25a2241e7d
Fix shader array parsing in variable declaration
2021-12-15 17:54:15 +03:00
Rémi Verschelde
de8348a9b3
Merge pull request #55903 from Chaosus/shader_struct
2021-12-15 13:07:48 +01:00
Yuri Roubinsky
09185d76ac
Rename shader hint `filter_aniso` to `filter_anisotropy`
2021-12-15 13:18:32 +03:00
Yuri Roubinsky
31cc6ba622
Allow declaring multiple members in one expression in shader structs
2021-12-13 19:10:08 +03:00
Yuri Roubinsky
8862d1426d
Restore shader parsing errors with lack of semicolon in a block
2021-12-11 17:30:40 +03:00
Hugo Locurcio
92e9cca5be
Rename `hint_aniso` to `hint_anisotropy` in the shader language
...
The word "anisotropy" is used in full form in BaseMaterial3D's
anisotropy-related properties.
2021-12-10 17:41:17 +01:00
Yuri Roubinsky
bcbcf14469
Refactor constant suffix parsing in a shader
2021-12-10 15:38:27 +03:00
Yuri Roubinsky
dcf3594500
Merge pull request #55763 from Chaosus/shader_hint_completion
2021-12-10 11:44:01 +03:00
Yuri Roubinsky
b66510d509
Added completion for uniform hints in a shader
2021-12-10 10:12:25 +03:00
Nathan Franke
49403cbfa0
Replace String comparisons with "", String() to is_empty()
...
Also:
- Adds two stress tests to test_string.h
- Changes to .empty() on std::strings
2021-12-09 04:48:38 -06:00
Yuri Roubinsky
76f6c0849c
Make `compile` shader function to use struct instead long parameter list
2021-12-08 11:34:40 +03:00
Yuri Roubinsky
10b10ae1fa
Fix `^=` operator in shaders
2021-12-03 10:20:44 +03:00
Yuri Roubinsky
5ee73dc5a6
Fix shader crash when using existed constant name for struct
2021-12-01 18:11:45 +03:00
Yuri Roubinsky
a48c205191
Fix declaring array size twice in global shader constant
2021-12-01 16:44:25 +03:00
Yuri Roubinsky
5ba93619fa
Allow using empty statements in the shader, added formatting warning
2021-12-01 11:52:25 +03:00
Rémi Verschelde
5643f5e616
Merge pull request #55490 from Chaosus/fix_shader_crash
2021-11-30 20:13:12 +01:00
Yuri Roubinsky
be7c03779a
Fix shader crash when assigning array to non-array in global constant
2021-11-30 21:28:55 +03:00
Yuri Roubinsky
6e80e97b0f
Fix built-in(PI, TAU, E) assignment to a global constant in a shader
2021-11-29 10:32:36 +03:00
Yuri Roubinsky
9b1f8f7a96
Revert "Pushes array of uniforms to first place in the buffer"
2021-11-25 16:13:19 +03:00
Lightning_A
e078f970db
Rename `remove()` to `remove_at()` when removing by index
2021-11-23 18:58:57 -07:00
Yuri Roubinsky
c7043dbfdc
Prevent return statement from using in block in shader main functions
2021-11-23 10:36:33 +03:00
Yuri Roubinsky
f4c0e90fd9
Allow passing non-variable constant to const function param in shaders
2021-11-19 12:14:13 +03:00
Yuri Roubinsky
bbfa5f29c7
Pushes array of uniforms to first place in the buffer to prevent bug
2021-11-07 23:30:09 +03:00
Rémi Verschelde
02ae47154c
Merge pull request #54356 from Chaosus/shader_fix_matrix_autocompletion
2021-11-01 14:06:04 +01:00
clayjohn
1b2cd9f251
Addition of FogVolumes, FogShaders, FogMaterial, and overhaul of VolumetricFog
...
Co-authored-by: Brian Semrau <brian.semrau@gmail.com>
2021-10-28 22:02:23 -07:00
Yuri Roubinsky
04a2053f9b
Removed incorrect autocompletion of matrixes in shader
2021-10-28 20:21:18 +03:00
Rémi Verschelde
3b11e33a09
clang-format: Disable alignment of operands, too unreliable
...
Sets `AlignOperands` to `DontAlign`.
`clang-format` developers seem to mostly care about space-based indentation and
every other version of clang-format breaks the bad mismatch of tabs and spaces
that it seems to use for operand alignment. So it's better without, so that it
respects our two-tabs `ContinuationIndentWidth`.
2021-10-28 15:19:35 +02:00
Yuri Roubinsky
57fd362fe1
Prevent shader crash when passing constant expression to `textureGather`
2021-10-21 19:46:05 +03:00
Yuri Roubinsky
e9b7ffd1fa
Added few more built-ins to shader language
2021-10-13 20:27:36 +03:00
Rémi Verschelde
09b0293fad
Merge pull request #53066 from Chaosus/shader_funcs
2021-10-10 21:37:07 +02:00
Yuri Roubinsky
b1ac3e256f
Allow declare the shader arrays with a size defined before identifier
2021-10-08 10:28:31 +03:00
Yuri Roubinsky
e707391fb8
Fix shader crash when passing array to index expression
2021-10-07 10:48:32 +03:00
Yuri Roubinsky
be6f36a66d
Add missing shader built-ins
2021-10-05 20:50:26 +03:00
Yuri Roubinsky
7c07ae4c50
Fix shader crash when passing array.length to functions
...
and similar cases
2021-10-05 12:49:59 +03:00
Yuri Roubinsky
69ece73653
Fix syntax parsing error of uniform arrays declaration in shader
2021-10-04 23:19:43 +03:00
Yuri Roubinsky
6873ecaaf9
Added support for uniform arrays in shaders
2021-10-04 13:57:44 +03:00
Lightning_A
c63b18507d
Use range iterators for `Map`
2021-09-30 15:09:12 -06:00
Yuri Roubinsky
e9e21a592e
Prevents editor crash when compare with negative float in shader
2021-09-22 13:26:40 +03:00
Yuri Roubinsky
f68d3f67b5
Fix shader crash when passing array to built-in function without index
2021-09-18 14:05:14 +03:00
reduz
700f9d916d
More fixes to mobile renderer
...
* Specify all precision qualifiers
* Makes renderer work on Adreno Vulkan
2021-08-18 12:20:19 -03:00
Yuri Roubinsky
fa96c98bdf
Fix shader crash when using local var with the same name as varying
2021-08-13 09:20:16 +03:00
Rémi Verschelde
b63af73435
Merge pull request #51391 from Chaosus/shader_param_names
...
Added parameter names to shader built-in function autocompletion
2021-08-12 14:58:11 +02:00
Yuri Roubinsky
fb37846b00
Added parameter names to shader built-in function autocompletion
2021-08-12 11:19:53 +03:00
Yuri Roubinsky
efc6b29601
Merge pull request #51505 from Chaosus/shader_fix_shadetype-errorline
2021-08-11 14:46:04 +03:00
Yuri Roubinsky
2fb5231bbc
Break futher shader compilation after missing `;` after`shader_type`
2021-08-11 12:37:59 +03:00
Yuri Roubinsky
0f42a29864
Allow using more assignment operators on matrixes in shaders
2021-08-11 11:51:39 +03:00
Yuri Roubinsky
fead1595f9
Fix shader crash when using varying array in fragment->light context
2021-08-11 09:44:00 +03:00
Yuri Roubinsky
c082982a47
Fix editor crash if passing index as variable to function parameter
2021-07-26 17:42:52 +03:00
Yuri Roubinsky
b47b3a9957
Prevents shader crashing if varying assigned incorrectly
2021-07-26 14:47:14 +03:00
Yuri Roubinsky
3013324a4e
Fix compilation of `shader_language.cpp`
2021-07-26 13:44:21 +03:00
Rémi Verschelde
a8fcfbf029
Merge pull request #50729 from Chaosus/shader_varying_enchancements2
...
Allow using vertex-stage varying in both `fragment` and `light` functions
2021-07-26 12:17:49 +02:00
Rémi Verschelde
9b9e09f675
Merge pull request #50728 from Chaosus/shader_varying_enchancements
...
Allow using vertex varying in custom functions under any circumstances
2021-07-26 12:17:40 +02:00
Rémi Verschelde
ac3322b0af
Use const references where possible for List range iterators
2021-07-25 12:22:25 +02:00
Aaron Franke
4e6efd1b07
Use C++ iterators for Lists in many situations
2021-07-23 17:38:28 -04:00
Yuri Roubinsky
17b462cc5f
Allow using vertex-stage varying in both `fragment` and `light`
2021-07-22 11:55:14 +03:00
Yuri Roubinsky
94a7b04a01
Allow using vertex varying in custom functions under any circumstances
2021-07-22 11:27:13 +03:00
Yuri Roubinsky
39c06604cd
Forbid varyings from assigning in custom functions to prevent crashes
2021-07-21 14:12:54 +03:00
Yuri Roubinsky
14d5b47a27
Prevent error if varying assigned but not used (push warning instead)
2021-07-15 18:07:19 +03:00
Yuri Roubinsky
5100eed012
Added a shader warning about unused local variable
2021-06-29 15:39:37 +03:00
Lightning_A
b6af2a29eb
Rename `is_valid_integer()` to `is_valid_int()`
...
Method from `String`
2021-06-16 10:32:22 -06:00
Yuri Roubinsky
eec82d9f75
Prevent shader crash when returning array when return type is scalar
2021-06-06 14:59:52 +03:00
Aaron Franke
08a85352fb
Rename Variant TRANSFORM to TRANSFORM3D
...
Also _transform to _transform3d
2021-06-03 07:30:01 -04:00
Aaron Franke
de3f6699a5
Rename Transform to Transform3D in core
2021-06-03 07:30:01 -04:00
Yuri Roubinsky
5874b7a29c
Allow shader arrays to be passed as parameters and return value
2021-05-22 20:15:03 +03:00
Yuri Roubinsky
084648bd18
Basic warning support implementation for the Godot Shading Language.
2021-05-22 19:24:31 +03:00
Yuri Roubinsky
6135744786
Implements length() shader function for arrays in structs
2021-05-19 21:50:11 +03:00
Yuri Roubinsky
96b2e54c70
Fix typo in shader_language.cpp
2021-05-18 19:01:02 +03:00
Hugo Locurcio
e905e8f145
Highlight control flow keywords with a different color
...
This makes them easier to distinguish from other keywords.
2021-05-05 22:38:12 +02:00
Yuri Roubinsky
3c82f01134
Fix shader handle constant expressions in function call
2021-04-27 15:23:01 +03:00
Dennis Brakhane
31d41d83c3
Remove duplicate comments
...
A few single line comments were duplicated, probably due to bad merges.
This commit removes the obviously duplicate ones.
2021-04-25 20:03:52 +02:00
reduz
d3b49c416a
Refactor GLSL shader compilation
...
-Used a more consistent set of keywords for the shader
-Remove all harcoded entry points
-Re-wrote the GLSL shader parser, new system is more flexible. Allows any entry point organization.
-Entry point for sky shaders is now sky().
-Entry point for particle shaders is now process().
2021-04-14 11:37:52 -03:00
Rémi Verschelde
d83761ba80
Style: Apply clang-tidy's `readability-braces-around-statements`
2021-04-05 14:09:59 +02:00
Rémi Verschelde
9bbe51dc27
Style: Apply clang-tidy's `modernize-use-nullptr`
2021-04-05 14:05:07 +02:00
Rémi Verschelde
e9cb64a8b5
Merge pull request #46522 from Ev1lbl0w/bugfix-shader_noret
...
Added missing returns on error scenarios
2021-03-01 09:36:15 +01:00
Yuri Roubinsky
19e0a1ec9d
Fix parsing hexadecimal (lowercase `e`,`f`) in shaders
2021-03-01 09:08:44 +03:00
Ev1lbl0w
3d9ef1e4de
Added missing returns on error scenarios
2021-02-28 19:48:35 +00:00
Yuri Roubinsky
571f4396ea
Prevents shader crash if two struct with the same name are declared
2021-02-21 13:47:09 +03:00
Yuri Roubinsky
f91e7e3ba4
Prevents shader crash if passing invalid struct to the return statement
2021-02-21 07:55:40 +03:00
Yuri Roubinsky
dd0874e717
Allow passing varying from fragment to light shader function
2021-02-11 15:59:21 +03:00
Aaron Franke
a3e3bf8227
Make hex_to_int and bin_to_int handle the prefix automatically
...
Also add BinToInt to C#
2021-01-28 07:43:53 -05:00
Yuri Roubinsky
289cc89a39
Prevent crash due to assigning incorrect order of instance uniform
2021-01-10 10:52:30 +03:00
Rémi Verschelde
b5334d14f7
Update copyright statements to 2021
...
Happy new year to the wonderful Godot community!
2020 has been a tough year for most of us personally, but a good year for
Godot development nonetheless with a huge amount of work done towards Godot
4.0 and great improvements backported to the long-lived 3.2 branch.
We've had close to 400 contributors to engine code this year, authoring near
7,000 commit! (And that's only for the `master` branch and for the engine code,
there's a lot more when counting docs, demos and other first-party repos.)
Here's to a great year 2021 for all Godot users 🎆
2021-01-01 20:19:21 +01:00
Marcel Admiraal
5b937d493f
Rename empty() to is_empty()
2020-12-28 10:39:56 +00:00
Yuri Roubinsky
bc0e8e7a21
Fix using post-init shader array constructors
2020-12-27 01:07:24 +03:00
Yuri Roubinsky
fe4c8e387b
Added support for constants in shader `case` and array size declaration
2020-12-17 11:51:18 +03:00
bruvzg
644f739660
Static analyzer fixes:
...
Removes unused code in OS.
Fixes return types.
Fixes few typos.
2020-12-09 10:17:53 +02:00
George Marques
02f60812ed
Rename TYPE_REAL to TYPE_FLOAT
...
To be consistent with the naming everywhere else.
2020-12-04 09:47:26 -03:00
Aaron Franke
02161aad5a
Remove empty lines around braces with the formatting script
2020-11-16 23:38:11 -05:00
reduz
127458ed17
Reorganized core/ directory, it was too fatty already
...
-Removed FuncRef, since Callable makes it obsolete
-Removed int_types.h as its obsolete in c++11+
-Changed color names code
2020-11-07 20:17:12 -03:00
Yuri Roubinsky
6914597026
FIx autocompletion for emit_particle in shader editor
2020-10-13 14:12:51 +03:00
Yuri Roubinsky
53740c69df
Forbids varying declaration in particles and sky shaders
2020-09-22 10:35:52 +03:00
reduz
d0bddf53c5
Implement manual particle emission and particle sub emitters.
2020-09-06 10:29:27 -03:00
Yuri Roubinsky
b1351fe781
Fix crash regression in the shader function validation
...
introduced in #41780
2020-09-05 13:49:50 +03:00
Yuri Roubinsky
ab9978697e
Improve messages in shader function validation
2020-09-05 13:19:38 +03:00
bruvzg
80b8eff6aa
[Complex Test Layouts] Change `String` to use UTF-32 encoding on all platforms.
2020-09-03 19:56:24 +03:00
Yuri Roubinsky
2a00c868de
Fix particles shader to use built-ins
2020-09-02 22:54:41 +03:00
Aaron Franke
56e2c6c704
Make all String float conversion methods be 64-bit
2020-07-27 18:38:53 -04:00
Yuri Roubinsky
01950553f2
Fix some incorrect conversions which lead to crash in shaders
2020-07-14 21:04:12 +03:00
Yuri Roubinsky
3eeb272b2e
Enables 'fma' for GLES2
2020-07-10 22:21:22 +03:00
Yuri Roubinsky
ecb5f7ea23
Added 'fma' function to shader language
2020-07-10 19:58:03 +03:00
Rémi Verschelde
a8a2769bb6
Merge pull request #38713 from aaronfranke/string-64bit
...
Make all String integer conversion methods be 64-bit
2020-07-01 16:01:05 +02:00
Yuri Roubinsky
c554d9e556
Added const qualifier support for function arguments in shaders
2020-07-01 12:55:00 +03:00
Yuri Roubinsky
2ce77e4b57
Prevents usage of return in main shader functions
2020-06-27 17:36:45 +03:00
Yuri Roubinsky
b6ca9536f2
Fix few places in shaders where const passing still incorrect
2020-06-25 10:40:19 +03:00
Yuri Roubinsky
636a9d9f50
Implemented global const array to shaders
2020-06-19 16:04:54 +03:00
Aaron Franke
e5ae89775a
Remove 32-bit String hex_to_int method
2020-06-03 00:03:34 -04:00
Rémi Verschelde
0ee0fa42e6
Style: Enforce braces around if blocks and loops
...
Using clang-tidy's `readability-braces-around-statements`.
https://clang.llvm.org/extra/clang-tidy/checks/readability-braces-around-statements.html
2020-05-14 21:57:34 +02:00
Rémi Verschelde
07bc4e2f96
Style: Enforce separation line between function definitions
...
I couldn't find a tool that enforces it, so I went the manual route:
```
find -name "thirdparty" -prune \
-o -name "*.cpp" -o -name "*.h" -o -name "*.m" -o -name "*.mm" \
-o -name "*.glsl" > files
perl -0777 -pi -e 's/\n}\n([^#])/\n}\n\n\1/g' $(cat files)
misc/scripts/fix_style.sh -c
```
This adds a newline after all `}` on the first column, unless they
are followed by `#` (typically `#endif`). This leads to having lots
of places with two lines between function/class definitions, but
clang-format then fixes it as we enforce max one line of separation.
This doesn't fix potential occurrences of function definitions which
are indented (e.g. for a helper class defined in a .cpp), but it's
better than nothing. Also can't be made to run easily on CI/hooks so
we'll have to be careful with new code.
Part of #33027 .
2020-05-14 16:54:55 +02:00
Rémi Verschelde
0be6d925dc
Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
...
Which means that reduz' beloved style which we all became used to
will now be changed automatically to remove the first empty line.
This makes us lean closer to 1TBS (the one true brace style) instead
of hybridating it with some Allman-inspired spacing.
There's still the case of braces around single-statement blocks that
needs to be addressed (but clang-format can't help with that, but
clang-tidy may if we agree about it).
Part of #33027 .
2020-05-14 16:54:55 +02:00
Juan Linietsky
1bea8e1eac
New lightmapper
...
-Added LocalVector (needed it)
-Added stb_rect_pack (It's pretty cool, we could probably use it for other stuff too)
-Fixes and changes all around the place
-Added library for 128 bits fixed point (required for Delaunay3D)
2020-05-10 15:59:09 -03:00
Rémi Verschelde
69de7ce38c
Style: clang-format: Disable AllowShortCaseLabelsOnASingleLine
...
Part of #33027 .
2020-05-10 13:13:54 +02:00
Rémi Verschelde
e956e80c1f
Style: clang-format: Disable AllowShortIfStatementsOnASingleLine
...
Part of #33027 , also discussed in #29848 .
Enforcing the use of brackets even on single line statements would be
preferred, but `clang-format` doesn't have this functionality yet.
2020-05-10 13:12:16 +02:00
Rémi Verschelde
0bf6a86db4
Merge pull request #37795 from Chaosus/shader_fix_const_order2
...
Fix shader constant sorting
2020-04-29 09:41:34 +02:00
Juan Linietsky
0e1c66d9fc
Implement global and per instance shader uniforms.
...
Adds two keywords to shader language for uniforms:
-'global'
-'instance'
This allows them to reference values outside the material.
2020-04-17 12:35:41 -03:00
Yuri Roubinsky
bc30f541e6
Fix shader constant sorting
2020-04-11 12:40:17 +03:00
lupoDharkael
95a1400a2a
Replace NULL with nullptr
2020-04-02 13:38:00 +02:00
Yuri Roubinsky
aa33db056a
Prevent shader crash if multiple variables has been declared in 'for'
2020-03-28 19:51:42 +03:00
Juan Linietsky
a6f3bc7c69
Renaming of servers for coherency.
...
VisualServer -> RenderingServer
PhysicsServer -> PhysicsServer3D
Physics2DServer -> PhysicsServer2D
NavigationServer -> NavigationServer3D
Navigation2DServer -> NavigationServer2D
Also renamed corresponding files.
2020-03-27 15:21:27 -03:00