Changed the OpenGL part and the GLSL shaders to use UBO and
[demo] / gl_shaders / default.f.glsl
index ad4b77a..fe78fbc 100644 (file)
@@ -1,45 +1,38 @@
 #version 450
 
-uniform sampler2D tex;
-uniform samplerCube dstex;
+#define SHADING_UNIFORMS 1
 
-uniform vec4 diffuse;
-uniform vec4 specular;
-uniform float shininess;
+layout(binding = 0) uniform sampler2D tex;
+layout(binding = 1) uniform samplerCube dstex;
 
-varying vec3 pos;
-// varying vec3 normal;
-// varying vec3 ldir;
-varying vec2 tex_coord;
-varying vec3 world_normal;
+layout(std140, binding = SHADING_UNIFORMS) uniform fu {
+       vec4 diffuse;
+       vec4 specular;
+       float shininess;
+       float fog_density;
+} s;
 
-// const float fog_density = 0.005;
-uniform float fog_density;
 const vec3 sky_color = vec3(0.35, 0.5, 0.65);
+// const float fog_density = 0.005;
+
+/* varyings */
+layout(location = 4) in vec3 pos;
+layout(location = 5) in vec2 tex_coord;
+layout(location = 6) in vec3 world_normal;
 
-out vec4 color;
+layout(location = 0) out vec4 color;
 
 void main()
 {
        vec4 itexel = textureCube(dstex, normalize(world_normal));
 
-/*     vec3 p = normalize(pos); // view space dir
-       vec3 n = normalize(normal);
-       vec3 l = normalize(ldir);
-
-       vec3 r = normalize(-reflect(l, n));
-       vec3 vdir = normalize(-p);
-
-       float cdiff = max(dot(l, n), 0.0);
-       float cspec = pow(max(dot(r, vdir), 0.0), shininess); */
-
        float dist = -pos.z;
-       float fog = clamp(exp(-fog_density * dist), 0.0, 1.0);
+       float fog = clamp(exp(-s.fog_density * dist), 0.0, 1.0);
 
        vec4 texel = texture2D(tex, tex_coord);
 
        // vec3 object_color = (diffuse.xyz * cdiff * texel.xyz + specular.xyz * cspec) * itexel.xyz;
-       vec3 object_color = diffuse.xyz * texel.xyz * itexel.xyz;
+       vec3 object_color = s.diffuse.xyz * texel.xyz * itexel.xyz;
 
        color.xyz = mix(sky_color, object_color, fog);
        color.w = 1.0;