diff --git a/tutorials/shaders/shader_reference/shading_language.rst b/tutorials/shaders/shader_reference/shading_language.rst index ba2ca01d7..056f7603d 100644 --- a/tutorials/shaders/shader_reference/shading_language.rst +++ b/tutorials/shaders/shader_reference/shading_language.rst @@ -637,13 +637,23 @@ Example below: result = a + b; } -.. note:: +Function overloading is supported. You can define multiple functions with the same +name, but different arguments. Note that `implicit casting `_ in overloaded +function calls is not allowed, such as from ``int`` to ``float`` (``1`` to ``1.0``). + +.. code-block:: glsl + + vec3 get_color(int t) { + return vec3(1, 0, 0); // Red color. + } + vec3 get_color(float t) { + return vec3(0, 1, 0); // Green color. + } + void fragment() { + vec3 red = get_color(1); + vec3 green = get_color(1.0); + } - Unlike GLSL, Godot's shader language does **not** support function - overloading. This means that a function cannot be defined several times with - different argument types or numbers of arguments. As a workaround, use - different names for functions that accept a different number of arguments or - arguments of different types. Varyings --------