diff --git a/packages/core/src/shaderlib/common.glsl b/packages/core/src/shaderlib/common.glsl index bed2784ae..89b82b494 100644 --- a/packages/core/src/shaderlib/common.glsl +++ b/packages/core/src/shaderlib/common.glsl @@ -18,6 +18,7 @@ vec4 gammaToLinear(vec4 srgbIn){ } vec4 linearToGamma(vec4 linearIn){ + linearIn = max(linearIn, 0.0); return vec4( pow(linearIn.rgb, vec3(1.0 / 2.2)), linearIn.a); } diff --git a/packages/core/src/shaderlib/pbr/ibl_frag_define.glsl b/packages/core/src/shaderlib/pbr/ibl_frag_define.glsl index 270636a40..1ca6da403 100644 --- a/packages/core/src/shaderlib/pbr/ibl_frag_define.glsl +++ b/packages/core/src/shaderlib/pbr/ibl_frag_define.glsl @@ -34,9 +34,7 @@ vec3 envBRDFApprox(vec3 specularColor,float roughness, float dotNV ) { vec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw; - // AB may less than 0 at high roughness, ref: https://github.com/galacean/engine/pull/2173 - return max(specularColor * AB.x + AB.y, 0.0); - + return specularColor * AB.x + AB.y; }