framebuffer formalitites
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / standard.fs
index e3f05c8d72a042046450f13af9e3413cc7e10144..58678f01195a3ff47fc4711ee45e7ed988080477 100644 (file)
@@ -1,20 +1,41 @@
-out vec4 FragColor;
-
+uniform sampler2D uTexGarbage;
 uniform sampler2D uTexMain;
-uniform vec4 uColour;
+uniform vec3 uCamera;
+uniform vec4 uPlane;
 
 in vec4 aColour;
 in vec2 aUv;
 in vec3 aNorm;
 in vec3 aCo;
+in vec3 aWorldCo;
+
+#include "common_world.glsl"
+#include "motion_vectors_fs.glsl"
 
 void main()
 {
-   vec3 diffuse = texture( uTexMain, aUv ).rgb;
-   float light1 = max(0.0,dot(-vec3(0.5,-0.8,0.25), aNorm));
-   float light2 = max(0.0,dot(-vec3(-0.8,0.5,-0.25), aNorm));
-   diffuse += vec3(0.2,0.2,0.2) +
-             vec3(1.0,1.0,0.9)*light1 + 
-             vec3(0.1,0.3,0.4)*light2;
-   FragColor = vec4(diffuse*uColour.rgb, aColour.a*uColour.a);
+   compute_motion_vectors();
+
+   vec3 vfrag = vec3(0.5,0.5,0.5);
+   vec4 vsamplemain = texture( uTexMain, aUv );
+   vec3 qnorm = normalize(aNorm);
+
+   vfrag = vsamplemain.rgb;
+
+   if( g_light_preview == 1 )
+   {
+      vfrag = vec3(0.5);
+   }
+
+   // Lighting
+   vec3 halfview = uCamera - aWorldCo;
+   float fdist = length( halfview );
+   halfview /= fdist;
+
+   vfrag = do_light_diffuse( vfrag, qnorm );
+   vfrag = do_light_spec( vfrag, qnorm, halfview, 0.1 );
+   vfrag = do_light_shadowing( vfrag );
+   vfrag = apply_fog( vfrag, fdist );
+
+   oColour = vec4(vfrag, 1.0);
 }