From 9c9d84a18463b60433db4c0cbf47d3991acb9bc0 Mon Sep 17 00:00:00 2001 From: zhuxudong Date: Thu, 18 Jul 2024 12:23:06 +0800 Subject: [PATCH] fix: clamp 0 at last output (#2243) --- packages/core/src/shaderlib/common.glsl | 1 + packages/core/src/shaderlib/pbr/ibl_frag_define.glsl | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) 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; }