diff --git a/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java b/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java index c7b4f9f36..4598ec0d6 100644 --- a/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java +++ b/jme3-core/src/main/java/com/jme3/environment/util/EnvMapUtils.java @@ -509,15 +509,15 @@ public class EnvMapUtils { float coef7 = coef5; float coef8 = sqrt15Pi / 4f; - shCoefs[0].multLocal(coef0); - shCoefs[1].multLocal(coef1); - shCoefs[2].multLocal(coef2); - shCoefs[3].multLocal(coef3); - shCoefs[4].multLocal(coef4); - shCoefs[5].multLocal(coef5); - shCoefs[6].multLocal(coef6); - shCoefs[7].multLocal(coef7); - shCoefs[8].multLocal(coef8); + shCoefs[0].multLocal(coef0).multLocal(shBandFactor[0]); + shCoefs[1].multLocal(coef1).multLocal(shBandFactor[1]); + shCoefs[2].multLocal(coef2).multLocal(shBandFactor[2]); + shCoefs[3].multLocal(coef3).multLocal(shBandFactor[3]); + shCoefs[4].multLocal(coef4).multLocal(shBandFactor[4]); + shCoefs[5].multLocal(coef5).multLocal(shBandFactor[5]); + shCoefs[6].multLocal(coef6).multLocal(shBandFactor[6]); + shCoefs[7].multLocal(coef7).multLocal(shBandFactor[7]); + shCoefs[8].multLocal(coef8).multLocal(shBandFactor[8]); } diff --git a/jme3-core/src/main/java/com/jme3/light/LightProbe.java b/jme3-core/src/main/java/com/jme3/light/LightProbe.java index 11eacf566..1cc713445 100644 --- a/jme3-core/src/main/java/com/jme3/light/LightProbe.java +++ b/jme3-core/src/main/java/com/jme3/light/LightProbe.java @@ -120,20 +120,32 @@ public class LightProbe extends Light implements Savable { oc.write(position, "position", null); oc.write(bounds, "bounds", new BoundingSphere(1.0f, Vector3f.ZERO)); oc.write(ready, "ready", false); + oc.write(nbMipMaps, "nbMipMaps", 0); } @Override public void read(JmeImporter im) throws IOException { super.read(im); InputCapsule ic = im.getCapsule(this); - shCoeffs = (Vector3f[]) ic.readSavableArray("shCoeffs", null); + + prefilteredEnvMap = (TextureCubeMap) ic.readSavable("prefilteredEnvMap", null); position = (Vector3f) ic.readSavable("position", this); bounds = (BoundingVolume) ic.readSavable("bounds", new BoundingSphere(1.0f, Vector3f.ZERO)); + nbMipMaps = ic.readInt("nbMipMaps", 0); ready = ic.readBoolean("ready", false); - if (shCoeffs == null) { + + + Savable[] coeffs = ic.readSavableArray("shCoeffs", null); + if (coeffs == null) { ready = false; logger.log(Level.WARNING, "LightProbe is missing parameters, it should be recomputed. Please use lightProbeFactory.updateProbe()"); + } else { + shCoeffs = new Vector3f[coeffs.length]; + for (int i = 0; i < coeffs.length; i++) { + shCoeffs[i] = (Vector3f) coeffs[i]; + } + } } diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.frag b/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.frag index dcff8030e..118ebbe19 100644 --- a/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.frag +++ b/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.frag @@ -128,13 +128,13 @@ void main(){ #ifdef USE_PACKED_MR vec2 rm = texture2D(m_MetallicRoughnessMap, newTexCoord).gb; - float Roughness = rm.x * max(m_Roughness, 1e-8); + float Roughness = rm.x * max(m_Roughness, 1e-4); float Metallic = rm.y * max(m_Metallic, 0.0); #else #ifdef ROUGHNESSMAP - float Roughness = texture2D(m_RoughnessMap, newTexCoord).r * max(m_Roughness, 1e-8); + float Roughness = texture2D(m_RoughnessMap, newTexCoord).r * max(m_Roughness, 1e-4); #else - float Roughness = max(m_Roughness, 1e-8); + float Roughness = max(m_Roughness, 1e-4); #endif #ifdef METALLICMAP float Metallic = texture2D(m_MetallicMap, newTexCoord).r * max(m_Metallic, 0.0); @@ -187,7 +187,7 @@ void main(){ #endif specularColor *= m_Specular; #endif - vec4 diffuseColor = albedo * (1.0 - max(max(specularColor.r, specularColor.g), specularColor.b)); + vec4 diffuseColor = albedo;// * (1.0 - max(max(specularColor.r, specularColor.g), specularColor.b)); Roughness = 1.0 - glossiness; #else float nonMetalSpec = 0.08 * specular; diff --git a/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.j3md b/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.j3md index e2c1b089e..61edf8e0d 100644 --- a/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.j3md +++ b/jme3-core/src/main/resources/Common/MatDefs/Light/PBRLighting.j3md @@ -288,9 +288,6 @@ MaterialDef PBR Lighting { Defines { NEED_TEXCOORD1 - HAS_GLOWMAP : GlowMap - HAS_GLOWCOLOR : GlowColor - NUM_BONES : NumberOfBones INSTANCING : UseInstancing } diff --git a/jme3-testdata/src/main/resources/Scenes/defaultProbe.j3o b/jme3-testdata/src/main/resources/Scenes/defaultProbe.j3o index 89a086d44..3d7568340 100644 Binary files a/jme3-testdata/src/main/resources/Scenes/defaultProbe.j3o and b/jme3-testdata/src/main/resources/Scenes/defaultProbe.j3o differ