From: Kazuhiko Kobayashi Date: Wed, 19 Dec 2012 02:34:41 +0000 (+0900) Subject: Fix spheremap bug. X-Git-Tag: v0.8.0~21^2~6 X-Git-Url: http://git.osdn.net/view?p=mikumikustudio%2FMikuMikuStudio.git;a=commitdiff_plain;h=6c000f33dc4c4422c179eaae1b60c6d4afd64390 Fix spheremap bug. --- diff --git a/src/MatDefs/pmd/pmd.frag b/src/MatDefs/pmd/pmd.frag index 360f93963..024729a48 100755 --- a/src/MatDefs/pmd/pmd.frag +++ b/src/MatDefs/pmd/pmd.frag @@ -134,7 +134,7 @@ vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 w vec2 Optics_SphereCoord2(in vec3 dir){ float dzplus1 = dir.z + 1.0; float m = 2.0 * sqrt(dir.x * dir.x + dir.y * dir.y + dzplus1 * dzplus1); - return vec2(dir.x / m + 0.5, dir.y / m + 0.5); + return vec2(dir.x / m + 0.5, 0.5 - dir.y / m); } void main(){ @@ -241,30 +241,24 @@ void main(){ // SpecularSum2 * specularColor * light.y ) * 0.8; vec4 output_color = (((AmbientSum + DiffuseSum) * diffuseColor) + SpecularSum2 * specularColor * light.y ); -// output_color=vec4(0); #ifdef SPHERE_MAP_A vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz)); - v2.y = 1.0 - v2.y; output_color.xyz += (texture2D(m_SphereMap_A, v2).xyz); - // output_color.xyz = vec3(normalize(refVec.xyz).x); #endif #ifdef SPHERE_MAP_H vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz)); - v2.y = 1.0 - v2.y; output_color.xyz *= (texture2D(m_SphereMap_H, v2).xyz); #endif #endif #ifdef SPHERE_MAP_A - vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz)); - v2.y = 1.0 - v2.y; + vec2 v2 = Optics_SphereCoord(refVec.xyz); output_color.xyz += (texture2D(m_SphereMap_A, v2).xyz); - // output_color.xyz = vec3(normalize(refVec.xyz).x); #endif #ifdef SPHERE_MAP_H - vec2 v2 = Optics_SphereCoord(normalize(refVec.xyz)); - v2.y = 1.0 - v2.y; + vec2 v2 = Optics_SphereCoord(refVec.xyz); output_color.xyz *= (texture2D(m_SphereMap_H, v2).xyz); + #endif output_color.a = alpha; gl_FragColor = output_color; diff --git a/src/MatDefs/pmd/pmd.vert b/src/MatDefs/pmd/pmd.vert index 92186ba2a..7bcdc6c42 100755 --- a/src/MatDefs/pmd/pmd.vert +++ b/src/MatDefs/pmd/pmd.vert @@ -77,10 +77,10 @@ attribute vec3 inNormal; * varying refVec */ void computeRef(in vec4 position, in vec4 normal){ - vec3 worldPos = (g_WorldMatrix * vec4(normalize(position.xyz),1.0)).xyz; + vec3 worldPos = (g_WorldMatrix * position).xyz; - vec3 I = normalize( g_CameraPosition - worldPos ).xyz; - vec3 N = normalize( (g_WorldMatrix * vec4(normalize(normal.xyz), 0.0)).xyz ); + vec3 I = normalize( worldPos - g_CameraPosition ).xyz; + vec3 N = normalize( (g_WorldMatrix * normal).xyz ); refVec.xyz = reflect(I, N); refVec.w = 1.0;//m_FresnelParams.x + m_FresnelParams.y * pow(1.0 + dot(I, N), m_FresnelParams.z);