From 2ebc5f03bb807551df49f01cda5bf885e4712aab Mon Sep 17 00:00:00 2001 From: any Date: Thu, 30 Jul 2026 18:12:19 +0200 Subject: [PATCH] weirdes farb artefakte auf den kugeln wenn ein licht zu nah dran ist --- 1GoodResult.png | Bin 0 -> 756411 bytes Collision.c | 5 +++++ examples.c | 11 ++++++++--- helper.c | 10 ++++++++++ helper.h | 2 ++ raytrace.c | 7 ++++++- test.png | Bin 756411 -> 1082397 bytes 7 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 1GoodResult.png diff --git a/1GoodResult.png b/1GoodResult.png new file mode 100644 index 0000000000000000000000000000000000000000..4d38794ae143f05b497de6bdec707aa11ee53915 GIT binary patch literal 756411 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