]> git.lizzy.rs Git - irrlicht.git/blobdiff - media/Shaders/SphereMap.vsh
Merge branch 'opengl3' of https://github.com/numberZero/irrlicht
[irrlicht.git] / media / Shaders / SphereMap.vsh
diff --git a/media/Shaders/SphereMap.vsh b/media/Shaders/SphereMap.vsh
new file mode 100644 (file)
index 0000000..5062d79
--- /dev/null
@@ -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);
+}