aboutsummaryrefslogtreecommitdiff
path: root/media/Shaders/SphereMap.vsh
diff options
context:
space:
mode:
Diffstat (limited to 'media/Shaders/SphereMap.vsh')
-rw-r--r--media/Shaders/SphereMap.vsh50
1 files changed, 50 insertions, 0 deletions
diff --git a/media/Shaders/SphereMap.vsh b/media/Shaders/SphereMap.vsh
new file mode 100644
index 0000000..5062d79
--- /dev/null
+++ b/media/Shaders/SphereMap.vsh
@@ -0,0 +1,50 @@
+#version 100
+
+/* Attributes */
+
+attribute vec3 inVertexPosition;
+attribute vec3 inVertexNormal;
+attribute vec4 inVertexColor;
+attribute vec2 inTexCoord0;
+attribute vec2 inTexCoord1;
+
+/* Uniforms */
+
+uniform mat4 uWVPMatrix;
+uniform mat4 uWVMatrix;
+uniform mat4 uNMatrix;
+
+uniform vec4 uGlobalAmbient;
+uniform vec4 uMaterialAmbient;
+uniform vec4 uMaterialDiffuse;
+uniform vec4 uMaterialEmissive;
+uniform vec4 uMaterialSpecular;
+uniform float uMaterialShininess;
+
+uniform float uThickness;
+
+/* Varyings */
+
+varying vec2 vTextureCoord0;
+varying vec4 vVertexColor;
+varying vec4 vSpecularColor;
+varying float vFogCoord;
+
+void main()
+{
+ gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);
+ gl_PointSize = uThickness;
+
+ vec3 Position = (uWVMatrix * vec4(inVertexPosition, 1.0)).xyz;
+ vec3 P = normalize(Position);
+ vec3 N = normalize(vec4(uNMatrix * vec4(inVertexNormal, 0.0)).xyz);
+ vec3 R = reflect(P, N);
+
+ float V = 2.0 * sqrt(R.x*R.x + R.y*R.y + (R.z+1.0)*(R.z+1.0));
+ vTextureCoord0 = vec2(R.x/V + 0.5, R.y/V + 0.5);
+
+ vVertexColor = inVertexColor.bgra;
+ vSpecularColor = vec4(0.0, 0.0, 0.0, 0.0);
+
+ vFogCoord = length(Position);
+}