From 8218d5a94295ca1dd1d280adc049426be4ff4063 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Mon, 23 Mar 2026 15:39:05 +0100 Subject: [PATCH] =?UTF-8?q?fix(client):=20remove=20ALPHA=20output=20from?= =?UTF-8?q?=20toon=20shaders=20=E2=80=94=20fixes=20depth=20sorting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Writing ALPHA caused Godot to treat all meshes as transparent, breaking per-pixel depth testing. Hair clipped through the head, clothing through the body — all caused by object-level depth sorting instead of z-buffer. Removing ALPHA makes everything opaque with correct depth behavior. Co-Authored-By: Claude Opus 4.6 --- client/assets/characters/shaders/toon.gdshader | 1 - client/assets/characters/shaders/toon_masked.gdshader | 1 - 2 files changed, 2 deletions(-) diff --git a/client/assets/characters/shaders/toon.gdshader b/client/assets/characters/shaders/toon.gdshader index 874a0cc0c..955e00cca 100644 --- a/client/assets/characters/shaders/toon.gdshader +++ b/client/assets/characters/shaders/toon.gdshader @@ -12,5 +12,4 @@ void fragment() { float toon = step(shadow_threshold, ndl); vec3 color = mix(shadow_color.rgb, base_color.rgb, toon); ALBEDO = color; - ALPHA = base_color.a; } diff --git a/client/assets/characters/shaders/toon_masked.gdshader b/client/assets/characters/shaders/toon_masked.gdshader index 9a9865c21..5dfa82100 100644 --- a/client/assets/characters/shaders/toon_masked.gdshader +++ b/client/assets/characters/shaders/toon_masked.gdshader @@ -28,5 +28,4 @@ void fragment() { vec3 color = base * mix(1.0 - shadow_strength, 1.0, toon); ALBEDO = color; - ALPHA = original.a * tint_color.a; }