1#version 100 2 3int f(int a, int b, int c) 4{ 5 int a = b; 6 7 { 8 float a = float(a) + 1.0; 9 } 10 11 return a; 12} 13 14int f(int a, int b, int c); // okay to redeclare 15 16bool b; 17float b(int a); // ERROR: redefinition 18 19float c(int a); 20bool c; // ERROR: redefinition 21 22float f; // ERROR: redefinition 23float tan; // okay, built-in is in an outer scope 24float sin(float x); // ERROR: can't redefine built-in functions 25float cos(float x) // ERROR: can't redefine built-in functions 26{ 27 return 1.0; 28} 29bool radians(bool x) // okay, can overload built-in functions 30{ 31 return true; 32} 33 34invariant gl_Position; 35 36void main() 37{ 38 int g(); // ERROR: no local function declarations 39 g(); 40 41 float sin; // okay 42 sin; 43 sin(0.7); // ERROR, use of hidden function 44 f(1,2,3); 45 46 float f; // hides f() 47 f = 3.0; 48 49 gl_Position = vec4(f); 50 51 for (int f = 0; f < 10; ++f) 52 ++f; 53 54 int x = 1; 55 { 56 float x = 2.0, /* 2nd x visible here */ y = x; // y is initialized to 2 57 int z = z; // ERROR: z not previously defined. 58 } 59 { 60 int x = x; // x is initialized to '1' 61 } 62 63 struct S 64 { 65 int x; 66 }; 67 { 68 S S = S(0); // 'S' is only visible as a struct and constructor 69 S.x; // 'S' is now visible as a variable 70 } 71 72 int degrees; 73 degrees(3.2); // ERROR, use of hidden built-in function 74} 75 76varying struct SSS { float f; } s; // ERROR 77