Skip to content

Commit e9049b5

Browse files
authored
Merge pull request #2387 from jMonkeyEngine/yaRnMcDonuts-patch-2
Fix logic errors and exception in SpecGloss pipeline
2 parents d233f1d + 154022e commit e9049b5

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

jme3-core/src/main/resources/Common/ShaderLib/module/pbrlighting/PBRLightingUtils.glsllib

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -384,28 +384,25 @@
384384
//spec gloss tex reads:
385385

386386
#ifdef SPECGLOSSPIPELINE
387+
float glossiness = m_Glossiness;
387388
#ifdef USE_PACKED_SG
388389
vec4 specularColor = texture2D(m_SpecularGlossinessMap, newTexCoord);
389-
float glossiness = specularColor.a * m_Glossiness;
390-
specularColor *= m_Specular;
390+
glossiness *= specularColor.a;
391391
#else
392392
#ifdef SPECULARMAP
393393
vec4 specularColor = texture2D(m_SpecularMap, newTexCoord);
394394
#else
395395
vec4 specularColor = vec4(1.0);
396396
#endif
397397
#ifdef GLOSSINESSMAP
398-
float glossiness = texture2D(m_GlossinesMap, newTexCoord).r * m_Glossiness;
399-
#else
400-
float glossiness = m_Glossiness;
398+
glossiness *= texture2D(m_GlossinesMap, newTexCoord).r;
401399
#endif
402-
specularColor *= m_Specular;
403-
surface.specularColor = specularColor;
404400
#endif
401+
specularColor *= m_Specular;
402+
surface.specularColor = specularColor.rgb;
403+
surface.roughness = 1.0 - glossiness;
405404
#endif
406405

407-
408-
409406
vec3 ao = vec3(1.0);
410407
#ifdef LIGHTMAP
411408
vec3 lightMapColor;
@@ -475,7 +472,6 @@
475472

476473
#ifdef SPECGLOSSPIPELINE
477474
surface.diffuseColor = surface.albedo;// * (1.0 - max(max(specularColor.r, specularColor.g), specularColor.b));
478-
surface.roughness = 1.0 - m_Glossiness;
479475
surface.fZero = surface.specularColor.xyz;
480476
#else
481477
surface.specularColor = (0.04 - 0.04 * surface.metallic) + surface.albedo * surface.metallic; // 0.04 is the standard base specular reflectance for non-metallic surfaces in PBR. While values like 0.08 can be used for different implementations, 0.04 aligns with Khronos' PBR specification.

0 commit comments

Comments
 (0)