OSDN Git Service

Fix spheremap bug.
authorKazuhiko Kobayashi <chototsu_moushinp@yahoo.co.jp>
Wed, 19 Dec 2012 02:34:41 +0000 (11:34 +0900)
committerKazuhiko Kobayashi <chototsu_moushinp@yahoo.co.jp>
Wed, 19 Dec 2012 02:34:41 +0000 (11:34 +0900)
src/MatDefs/pmd/pmd.frag
src/MatDefs/pmd/pmd.vert

index 360f939..024729a 100755 (executable)
@@ -134,7 +134,7 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w
 vec2 Optics_SphereCoord2(in vec3 dir){\r
     float dzplus1 = dir.z + 1.0;\r
     float m = 2.0 * sqrt(dir.x * dir.x + dir.y * dir.y + dzplus1 * dzplus1);\r
-    return vec2(dir.x / m + 0.5, dir.y / m + 0.5);\r
+    return vec2(dir.x / m + 0.5, 0.5 - dir.y / m);\r
 }\r
 \r
 void main(){\r
@@ -241,30 +241,24 @@ void main(){
 //                       SpecularSum2 * specularColor * light.y ) * 0.8;\r
        vec4 output_color = (((AmbientSum + DiffuseSum) * diffuseColor)  +\r
                        SpecularSum2 * specularColor * light.y );\r
-// output_color=vec4(0);\r
 #ifdef SPHERE_MAP_A\r
         vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz));\r
-        v2.y = 1.0 - v2.y;\r
         output_color.xyz +=  (texture2D(m_SphereMap_A, v2).xyz);\r
-        // output_color.xyz = vec3(normalize(refVec.xyz).x);\r
 #endif\r
 #ifdef SPHERE_MAP_H\r
         vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz));\r
-        v2.y = 1.0 - v2.y;\r
         output_color.xyz *= (texture2D(m_SphereMap_H, v2).xyz);\r
 #endif\r
 \r
     #endif\r
 #ifdef SPHERE_MAP_A\r
-        vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz));\r
-        v2.y = 1.0 - v2.y;\r
+        vec2 v2 = Optics_SphereCoord(refVec.xyz);\r
         output_color.xyz +=  (texture2D(m_SphereMap_A, v2).xyz);\r
-        // output_color.xyz = vec3(normalize(refVec.xyz).x);\r
 #endif\r
 #ifdef SPHERE_MAP_H\r
-        vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz));\r
-        v2.y = 1.0 - v2.y;\r
+        vec2 v2 = Optics_SphereCoord(refVec.xyz);\r
         output_color.xyz *= (texture2D(m_SphereMap_H, v2).xyz);\r
+\r
 #endif\r
     output_color.a = alpha;\r
     gl_FragColor = output_color;\r
index 92186ba..7bcdc6c 100755 (executable)
@@ -77,10 +77,10 @@ attribute vec3 inNormal;
      * varying refVec\r
      */\r
     void computeRef(in vec4 position, in vec4 normal){\r
-        vec3 worldPos = (g_WorldMatrix * vec4(normalize(position.xyz),1.0)).xyz;\r
+        vec3 worldPos = (g_WorldMatrix * position).xyz;\r
 \r
-        vec3 I = normalize( g_CameraPosition - worldPos  ).xyz;\r
-        vec3 N = normalize( (g_WorldMatrix * vec4(normalize(normal.xyz), 0.0)).xyz );\r
+        vec3 I = normalize( worldPos - g_CameraPosition    ).xyz;\r
+        vec3 N = normalize( (g_WorldMatrix * normal).xyz );\r
 \r
         refVec.xyz = reflect(I, N);\r
         refVec.w   = 1.0;//m_FresnelParams.x + m_FresnelParams.y * pow(1.0 + dot(I, N), m_FresnelParams.z);\r