diff --git a/Effects/building.eff b/Effects/building.eff
index f50968f0a..c46cf6bd7 100644
--- a/Effects/building.eff
+++ b/Effects/building.eff
@@ -79,12 +79,14 @@
+
Shaders/deferred-gbuffer.vert
Shaders/deferred-gbuffer.frag
Shaders/gbuffer-functions.frag
+ Shaders/gbuffer-encode.frag
diff --git a/Effects/model-combined-deferred.eff b/Effects/model-combined-deferred.eff
index 3897332e2..d0121ec7a 100644
--- a/Effects/model-combined-deferred.eff
+++ b/Effects/model-combined-deferred.eff
@@ -53,8 +53,7 @@ the objects that use it, and replaces it with the default shader.
Shaders/ubershader.vert
Shaders/ubershader-gbuffer.frag
Shaders/gbuffer-functions.frag
-
+ Shaders/gbuffer-encode.frag
diff --git a/Effects/model-default.eff b/Effects/model-default.eff
index c4ab897b4..5bc396735 100644
--- a/Effects/model-default.eff
+++ b/Effects/model-default.eff
@@ -195,6 +195,7 @@
Shaders/deferred-gbuffer.vert
Shaders/deferred-gbuffer.frag
Shaders/gbuffer-functions.frag
+ Shaders/gbuffer-encode.frag
texture
diff --git a/Effects/terrain-default.eff b/Effects/terrain-default.eff
index 240232f1d..10e1549e7 100644
--- a/Effects/terrain-default.eff
+++ b/Effects/terrain-default.eff
@@ -465,6 +465,7 @@
Shaders/deferred-gbuffer.vert
Shaders/deferred-gbuffer.frag
Shaders/gbuffer-functions.frag
+ Shaders/gbuffer-encode.frag
texture
diff --git a/Effects/tree.eff b/Effects/tree.eff
index c1bd27686..f3c028286 100644
--- a/Effects/tree.eff
+++ b/Effects/tree.eff
@@ -68,6 +68,7 @@
Shaders/deferred-tree.vert
Shaders/deferred-tree.frag
Shaders/gbuffer-functions.frag
+ Shaders/gbuffer-encode.frag
texture
diff --git a/Effects/urban.eff b/Effects/urban.eff
index 90a20b3d1..d0bbbbdb7 100644
--- a/Effects/urban.eff
+++ b/Effects/urban.eff
@@ -159,6 +159,7 @@
Shaders/urban-gbuffer.vert
Shaders/urban-gbuffer.frag
Shaders/gbuffer-functions.frag
+ Shaders/gbuffer-encode.frag
tangent
6
@@ -323,6 +324,7 @@
Shaders/urban-gbuffer.vert
Shaders/urban-gbuffer.frag
Shaders/gbuffer-functions.frag
+ Shaders/gbuffer-encode.frag
tangent
6
diff --git a/Shaders/gbuffer-encode.frag b/Shaders/gbuffer-encode.frag
new file mode 100644
index 000000000..931f959f3
--- /dev/null
+++ b/Shaders/gbuffer-encode.frag
@@ -0,0 +1,22 @@
+// -*- mode: C; -*-
+// Licence: GPL v2
+// Author: Frederic Bouvier.
+
+uniform bool fg_DepthInColor;
+
+vec2 normal_encode(vec3 n);
+vec3 float_to_color(in float f);
+
+// attachment 0: normal.x | normal.y | 0.0 | 1.0
+// attachment 1: diffuse.r | diffuse.g | diffuse.b | material Id
+// attachment 2: specular.l | shininess | emission.l | unused
+// attachment 3: ---------- depth ------------ | unused (optional)
+//
+void encode_gbuffer(vec3 normal, vec3 color, int mId, float specular, float shininess, float emission, float depth)
+{
+ gl_FragData[0] = vec4( normal_encode(normal), 0.0, 1.0 );
+ gl_FragData[1] = vec4( color, float( mId ) / 255.0 );
+ gl_FragData[2] = vec4( specular, shininess / 128.0, emission, 1.0 );
+ if (fg_DepthInColor)
+ gl_FragData[3] = vec4(float_to_color(depth), 1.0);
+}
diff --git a/Shaders/gbuffer-functions.frag b/Shaders/gbuffer-functions.frag
index 871a209ef..2c057a4eb 100644
--- a/Shaders/gbuffer-functions.frag
+++ b/Shaders/gbuffer-functions.frag
@@ -67,17 +67,3 @@ vec3 position( vec3 viewDir, vec2 coords, sampler2D depth_tex )
depth = texture2D( depth_tex, coords ).r;
return position( viewDir, depth );
}
-
-// attachment 0: normal.x | normal.y | 0.0 | 1.0
-// attachment 1: diffuse.r | diffuse.g | diffuse.b | material Id
-// attachment 2: specular.l | shininess | emission.l | unused
-// attachment 3: ---------- depth ------------ | unused (optional)
-//
-void encode_gbuffer(vec3 normal, vec3 color, int mId, float specular, float shininess, float emission, float depth)
-{
- gl_FragData[0] = vec4( normal_encode(normal), 0.0, 1.0 );
- gl_FragData[1] = vec4( color, float( mId ) / 255.0 );
- gl_FragData[2] = vec4( specular, shininess / 128.0, emission, 1.0 );
- if (fg_DepthInColor)
- gl_FragData[3] = vec4(float_to_color(depth), 1.0);
-}