From b6e3c64405c4dc04cca074424c99a9a671810d3c Mon Sep 17 00:00:00 2001 From: Merlin1809 <88194861+Merlin1809@users.noreply.github.com> Date: Sat, 8 Aug 2026 10:48:13 +0200 Subject: [PATCH] fix normal encoding for denoised rough reflections --- shaders/dimensions/composite1.fsh | 12 ++++++++---- shaders/dimensions/composite2.fsh | 4 +++- shaders/lang/en_us.lang | 2 +- shaders/lang/zh_cn.lang | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/shaders/dimensions/composite1.fsh b/shaders/dimensions/composite1.fsh index 47d89d8..93b8cda 100644 --- a/shaders/dimensions/composite1.fsh +++ b/shaders/dimensions/composite1.fsh @@ -871,8 +871,8 @@ uniform float wetness; vec2 driprate = vec2(0.0,frameTimeCounter)*0.05; - vec2 UV = mix(worldPos.xz, worldPos.xy*vec2(2.0, 0.5)+driprate, abs(flatNormals.z)); - UV = mix(UV, worldPos.zy*vec2(2.0, 0.5)+driprate, abs(flatNormals.x)); + vec2 UV = mix(worldPos.xz, worldPos.xy*vec2(2.0, 0.5)+driprate, pow(abs(flatNormals.z),2)); + UV = mix(UV, worldPos.zy*vec2(2.0, 0.5)+driprate, pow(abs(flatNormals.x),2)); #ifdef SHADER_GRASS if(isShaderGrass) UV = worldPos.xz; @@ -984,10 +984,14 @@ float encodeVec2(float x,float y){ return encodeVec2(vec2(x,y)); } +vec2 signNotZero(vec2 v) { + return step(vec2(0.0), v) * 2.0 - 1.0; +} + vec2 encodeNormal(vec3 n){ n.xy = n.xy / dot(abs(n), vec3(1.0)); - n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * sign(n.xy) : n.xy; - vec2 encn = clamp(n.xy * 0.5 + 0.5,-1.0,1.0); + n.xy = n.z <= 0.0 ? (1.0 - abs(n.yx)) * signNotZero(n.xy) : n.xy; + vec2 encn = clamp(n.xy * 0.5 + 0.5,0.0,1.0); return encn; } diff --git a/shaders/dimensions/composite2.fsh b/shaders/dimensions/composite2.fsh index 85d5653..3a30ac2 100644 --- a/shaders/dimensions/composite2.fsh +++ b/shaders/dimensions/composite2.fsh @@ -490,7 +490,7 @@ void main() { vec2 lightmap = dataUnpacked1.yz; vec4 stuff = texelFetch(colortex8, ivec2(gl_FragCoord.xy), 0); - vec3 normal = decode(stuff.xy); + vec3 normal = normalize(decode(stuff.xy)); vec2 speculars = stuff.zw; float roughness = speculars.r; @@ -505,6 +505,8 @@ void main() { // get reflected vector mat3 basis = CoordBase(normal); vec3 viewDir = -NplayerPos*basis; + viewDir.z = abs(viewDir.z); + float VdotN = dot(-normalize(viewDir), vec3(0.0,0.0,1.0)); float shlickFresnel = shlickFresnelRoughness(VdotN, roughness); diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index 9df605b..d41db35 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - A Bliss Edit prefix.SHADER_VERSION_LABEL = V - value.SHADER_VERSION_LABEL.482 = 8.3.1 + value.SHADER_VERSION_LABEL.482 = 8.3.2 iris_extension.keybind.key0.name=Flashlight diff --git a/shaders/lang/zh_cn.lang b/shaders/lang/zh_cn.lang index f584d65..627f087 100644 --- a/shaders/lang/zh_cn.lang +++ b/shaders/lang/zh_cn.lang @@ -1,6 +1,6 @@ option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - Bliss 编辑版 prefix.SHADER_VERSION_LABEL = 版本 - value.SHADER_VERSION_LABEL.482 = 8.3.1 + value.SHADER_VERSION_LABEL.482 = 8.3.2 # 如果你是来翻译的,这不是玩笑,这些选项的功能正如其名 profile.POTATO=§4土豆 (极低配置)