Browse Source

Update shading_language.rst

pkowal1982 9 years ago
parent
commit
93ac24a8e2
1 changed files with 9 additions and 2 deletions
  1. 9 2
      reference/shading_language.rst

+ 9 - 2
reference/shading_language.rst

@@ -487,8 +487,15 @@ Obtaining world-space normal and position in material fragment program:
 
     // Use reverse multiply because INV_CAMERA_MATRIX is world2cam
 
-    vec3 world_normal = NORMAL * mat3(INV_CAMERA_MATRIX);
-    vec3 world_pos = (VERTEX - INV_CAMERA_MATRIX.w.xyz) * mat3(INV_CAMERA_MATRIX);
+    vec4 invcamx = INV_CAMERA_MATRIX.x;
+    vec4 invcamy = INV_CAMERA_MATRIX.y;
+    vec4 invcamz = INV_CAMERA_MATRIX.z;
+    vec4 invcamw = INV_CAMERA_MATRIX.w;
+
+    mat3 invcam = mat3(invcamx.xyz, invcamy.xyz, invcamz.xyz);
+
+    vec3 world_normal = NORMAL * invcam;
+    vec3 world_pos = (VERTEX - invcamw.xyz) * invcam;
 
 Notes
 -----