Files
godot-vscode-plugin/syntaxes/examples/example.gdshader

119 lines
2.2 KiB
Plaintext

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))));
}