OSDN Git Service

* Tried to fix NVIDIA shininess==0 bug (again!)
authorshadowislord <shadowislord@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sat, 25 Jun 2011 19:27:23 +0000 (19:27 +0000)
committershadowislord <shadowislord@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sat, 25 Jun 2011 19:27:23 +0000 (19:27 +0000)
 * MTL loader now properly follows spec regarding initial values of colors
 * TangentBinormalGenerator now throws proper exception on missing normals

git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7730 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/nbproject/project.properties
engine/src/core-data/Common/MatDefs/Light/Lighting.frag
engine/src/core-plugins/com/jme3/scene/plugins/MTLLoader.java
engine/src/core/com/jme3/util/TangentBinormalGenerator.java

index e906937..1a72763 100644 (file)
@@ -78,7 +78,7 @@ jnlp.signed=true
 jnlp.signing=generated\r
 jnlp.signing.alias=\r
 jnlp.signing.keystore=\r
-main.class=jme3test.export.TestOgreConvert\r
+main.class=testcases.ObjImport\r
 manifest.file=MANIFEST.MF\r
 meta.inf.dir=${src.dir}/META-INF\r
 mkdist.disabled=false\r
index 8b8cc82..579ee86 100644 (file)
@@ -101,7 +101,9 @@ float lightComputeSpecular(in vec3 norm, in vec3 viewdir, in vec3 lightdir, in f
 vec2 computeLighting(in vec3 wvPos, in vec3 wvNorm, in vec3 wvViewDir, in vec3 wvLightDir){\r
    float diffuseFactor = lightComputeDiffuse(wvNorm, wvLightDir, wvViewDir);\r
    float specularFactor = lightComputeSpecular(wvNorm, wvViewDir, wvLightDir, m_Shininess);\r
-   specularFactor *= step(1.0, m_Shininess);\r
+\r
+   // if shininess is == 0, spec == 0, if shininess > 1, spec == 1\r
+   specularFactor *= min(1.0, m_Shininess); \r
 \r
    #ifdef HQ_ATTENUATION\r
     float att = clamp(1.0 - g_LightPosition.w * length(lightVec), 0.0, 1.0);\r
index 4709abe..a366a61 100644 (file)
@@ -92,8 +92,8 @@ public class MTLLoader implements AssetLoader {
     }
     
     protected void resetMaterial(){
-        ambient.set(ColorRGBA.Black);
-        diffuse.set(ColorRGBA.Black);
+        ambient.set(ColorRGBA.DarkGray);
+        diffuse.set(ColorRGBA.LightGray);
         specular.set(ColorRGBA.Black);
         shininess = 16;
         shadeless = false;
@@ -189,6 +189,9 @@ public class MTLLoader implements AssetLoader {
             specular.set(readColor());
         }else if (cmd.equals("ns")){
             shininess = scan.nextFloat(); /* (128f / 1000f)*/
+            if (specular.equals(ColorRGBA.Black)){
+                specular.set(ColorRGBA.White);
+            }
         }else if (cmd.equals("d") || cmd.equals("tr")){
             alpha = scan.nextFloat();
             transparent = true;
index b796fa4..7a2cdec 100644 (file)
@@ -165,6 +165,10 @@ public class TangentBinormalGenerator {
             v[i] = new Vector3f();
             t[i] = new Vector2f();
         }
+        
+        if (mesh.getBuffer(Type.Normal) == null){
+            throw new IllegalArgumentException("The given mesh has no normal data!");
+        }
 
         VertexData[] vertices;
         switch (mesh.getMode()) {