123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- shader_type canvas_item;
- shader_type spatial;
- /* ************************************************************************** */
- // types
- void a;
- bool b = true;
- bool b2 = false;
- bvec2 c;
- bvec3 d;
- bvec4 e;
- int f;
- ivec2 g;
- ivec3 h;
- ivec4 i;
- uint j;
- uvec2 k;
- uvec3 l;
- uvec4 m;
- float n;
- vec2 o;
- vec3 p;
- vec4 q;
- mat2 r;
- mat3 s;
- mat4 t;
- sampler2D u;
- isampler2D v;
- usampler2D w;
- samplerCube x;
- // qualifiers
- uniform int qualifier_a;
- global uniform int qualifier_b;
- instance uniform int qualifier_c;
- varying flat int qualifier_d;
- // hints
- uniform sampler2D hint_a : hint_albedo; // godot 3
- uniform sampler2D hint_b : source_color; // godot 4
- uniform sampler2D hint_c : hint_black; // godot 3
- uniform sampler2D hint_d : hint_white; // godot 3
- uniform sampler2D hint_e : hint_default_black; // godot 4
- uniform sampler2D hint_f : hint_default_white; // godot 4
- uniform sampler2D hint_g : hint_aniso;
- uniform vec4 hint_h : hint_color;
- uniform float hint_i : hint_range(0, 1);
- uniform vec4 hint_o : hint_color = vec4(1.0);
- /* ************************************************************************** */
- // the remaining examples are copied directly from
- // https://docs.godotengine.org/en/3.0/tutorials/shading/shading_language.html
- float a = 2; // valid
- float a = 2.0; // valid
- float a = float(2); // valid
- // The required amount of scalars
- vec4 a = vec4(0.0, 1.0, 2.0, 3.0);
- // Complementary vectors and/or scalars
- vec4 a = vec4(vec2(0.0, 1.0), vec2(2.0, 3.0));
- vec4 a = vec4(vec3(0.0, 1.0, 2.0), 3.0);
- // A single scalar for the whole vector
- vec4 a = vec4(0.0);
- // if and else
- if (cond) {
- } else {
- }
- // for loops
- for (int i = 0; i < 10; i++) {
- }
- // while
- while (true) {
- }
- int sum2(int a, int b) {
- return a + b;
- }
- void sum3(int a, int b, inout int result) {
- result = a + b;
- }
- /* ************************************************************************** */
- struct Test {
- vec3 color;
- };
- struct MyStruct {
- float power;
- vec3 color;
- Test result;
- };
- Test foo(MyStruct a, MyStruct b) {
- MyStruct k;
- k.result.color = (a.color + b.color) * k.power;
- return k.result;
- }
- void fragment() {
- MyStruct inst = MyStruct(0.0, vec3(0.0), Test(vec3(1.0)));
- Test result = foo(inst, MyStruct(1.0, vec3(0, 1, 0), Test(vec3(0.0))));
- }
|