OSDN Git Service

SpotLight : Applied the same changes to terrain lighting
authorremy.bouquet@gmail.com <remy.bouquet@gmail.com@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Fri, 5 Aug 2011 17:37:29 +0000 (17:37 +0000)
committerremy.bouquet@gmail.com <remy.bouquet@gmail.com@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Fri, 5 Aug 2011 17:37:29 +0000 (17:37 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7979 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.frag
engine/src/terrain/Common/MatDefs/Terrain/TerrainLighting.vert

index e9f2e84..bf79d84 100644 (file)
@@ -1,5 +1,6 @@
 \r
 uniform float m_Shininess;\r
+uniform vec4 g_LightDirection;\r
 \r
 varying vec4 AmbientSum;\r
 varying vec4 DiffuseSum;\r
@@ -12,8 +13,7 @@ varying vec3 vnPosition;
 varying vec3 vViewDir;\r
 varying vec4 vLightDir;\r
 varying vec4 vnLightDir;\r
-varying vec4 lightVec;\r
-varying vec4 spotVec;\r
+varying vec3 lightVec;\r
 \r
 \r
 #ifdef DIFFUSEMAP\r
@@ -647,12 +647,12 @@ void main(){
     #endif\r
 \r
         float spotFallOff = 1.0;\r
-        if(spotVec.w!=0.0){\r
+        if(g_LightDirection.w!=0.0){\r
               vec3 L=normalize(lightVec.xyz);\r
-              vec3 spotdir = normalize(spotVec.xyz);\r
+              vec3 spotdir = normalize(g_LightDirection.xyz);\r
               float curAngleCos = dot(-L, spotdir);             \r
-              float innerAngleCos = spotVec.w;\r
-              float outerAngleCos = lightVec.w;\r
+              float innerAngleCos = floor(g_LightDirection.w) * 0.001;\r
+              float outerAngleCos = fract(g_LightDirection.w);\r
               float innerMinusOuter = innerAngleCos - outerAngleCos;\r
               spotFallOff = clamp((curAngleCos - outerAngleCos) / innerMinusOuter, 0.0, 1.0);\r
               if(spotFallOff<=0.0){\r
index 648289e..a3a1cc2 100644 (file)
@@ -5,7 +5,6 @@ uniform mat4 g_ViewMatrix;
 \r
 uniform vec4 g_LightColor;\r
 uniform vec4 g_LightPosition;\r
-uniform vec4 g_LightDirection;\r
 uniform vec4 g_AmbientLightColor;\r
 \r
 uniform float m_Shininess;\r
@@ -24,8 +23,7 @@ varying vec3 vnViewDir;
 varying vec4 vLightDir;\r
 varying vec4 vnLightDir;\r
 \r
-varying vec4 lightVec;\r
-varying vec4 spotVec;\r
+varying vec3 lightVec;\r
 \r
 varying vec4 AmbientSum;\r
 varying vec4 DiffuseSum;\r
@@ -92,9 +90,9 @@ void main(){
     #endif\r
    \r
       //computing spot direction in view space and unpacking spotlight cos\r
-   spotVec=(g_ViewMatrix *vec4(g_LightDirection.xyz,0.0) );\r
-   spotVec.w=floor(g_LightDirection.w)*0.001;\r
-   lightVec.w = fract(g_LightDirection.w);\r
+  // spotVec=(g_ViewMatrix *vec4(g_LightDirection.xyz,0.0) );\r
+  // spotVec.w=floor(g_LightDirection.w)*0.001;\r
+  // lightVec.w = fract(g_LightDirection.w);\r
 \r
     AmbientSum  = vec4(0.2, 0.2, 0.2, 1.0) * g_AmbientLightColor; // Default: ambient color is dark gray\r
     DiffuseSum  = lightColor;\r