From 76f02ac5c5051a5bbefb1d9a9c05d31fbc4c5542 Mon Sep 17 00:00:00 2001 From: any Date: Sun, 26 Jul 2026 19:38:52 +0200 Subject: [PATCH] szene mit vier roten kugeln aufgebaut. der renderer unterstuetzt jetzt bis zu 100 objekte --- Collision.c | 6 +++--- examples.c | 17 +++++++++++++---- raytrace.c | 38 ++++++++++++++++++++++++++++---------- raytrace.h | 2 +- test.png | Bin 256844 -> 267553 bytes 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/Collision.c b/Collision.c index 6f4666f..d3df9d5 100644 --- a/Collision.c +++ b/Collision.c @@ -4,9 +4,9 @@ vec3 collisionPointSphere(ray *lightray, sphere *object) { vec3 collisionPoint; - collisionPoint.x = -1; - collisionPoint.y = -1; - collisionPoint.z = -1; + collisionPoint.x = -10000000; + collisionPoint.y = -10000000; + collisionPoint.z = -10000000; double a = lightray->direction.x * lightray->direction.x + lightray->direction.y * lightray->direction.y + lightray->direction.z * lightray->direction.z; double b = 2 * ((lightray->direction.x * (lightray->origin.x - object->origin.x)) + (lightray->direction.y * (lightray->origin.y - object->origin.y)) + (lightray->direction.z * (lightray->origin.z - object->origin.z))); double c = (lightray->origin.x * lightray->origin.x + object->origin.x * object->origin.x - 2 * lightray->origin.x * object->origin.x) diff --git a/examples.c b/examples.c index f4b7d9c..2a1696f 100644 --- a/examples.c +++ b/examples.c @@ -36,8 +36,16 @@ void exampleSphere( int width, int height, int channels, unsigned char *image) { cam1.width = 1.920; cam1.height = 1.080; vec3 sphereOrigin = (vec3){0,0,5}; - double sphereRadius = 2.0; - sphere obj = (sphere){sphereOrigin, sphereRadius}; + double sphereRadius = 1.0; + sphere obj1 = (sphere){sphereOrigin, sphereRadius}; + sphere **objectList = (sphere **) calloc(4+1, sizeof(sphere*));; + objectList[0] = &obj1; + sphere obj2 = (sphere){vec3Add(sphereOrigin, (vec3){3,0,0}), sphereRadius}; + objectList[1] = &obj2; + sphere obj3 = (sphere){vec3Add(sphereOrigin, (vec3){-3,0,0}), sphereRadius}; + objectList[2] = &obj3; + sphere obj4 = (sphere){vec3Add(sphereOrigin, (vec3){1,1,3}), sphereRadius}; + objectList[3] = &obj4; vec3 worldUp = (vec3){0, 1, 0}; vec3 screenX = vec3Cross(worldUp, cam1.direction); @@ -45,7 +53,7 @@ void exampleSphere( int width, int height, int channels, unsigned char *image) { vec3 screenMiddlePoint = vec3Add(cam1.origin, vec3Scale(cam1.direction, cam1.screenDistance)); vec3 screenTopLeft = vec3Add( vec3Add(screenMiddlePoint, - vec3Scale(screenY, -cam1.height/2.0)), + vec3Scale(screenY, -cam1.height/2.0)),///////////////////////////////////////////////////////////////////////////////////////////////////////////////aendern minus weg vec3Scale(screenX, -cam1.width/2.0) ); double pixelStepX = cam1.width / cam1.resolutionX; @@ -71,7 +79,7 @@ void exampleSphere( int width, int height, int channels, unsigned char *image) { lightRay->direction = vec3Normalize(vec3Subtract(*pixelOrigin, cam1.origin)); - pixelColor = raytraceSphere(&obj, lightRay); + pixelColor = raytraceSphere(objectList, lightRay); free(pixelOrigin); free(lightRay); @@ -82,4 +90,5 @@ void exampleSphere( int width, int height, int channels, unsigned char *image) { image[step+3] = 255; } } + free(objectList); } diff --git a/raytrace.c b/raytrace.c index c54c0fe..411dd87 100644 --- a/raytrace.c +++ b/raytrace.c @@ -1,18 +1,36 @@ +#include #include "structs.h" #include "collision.h" #include "vectorOp.h" +#define MAXSPHERES 100 -RGBA raytraceSphere(sphere *obj, ray *lightray) { - RGBA pixel; - pixel.r = 0; - pixel.g = 0; - pixel.b = 0; - pixel.a = 1; +RGBA raytraceSphere(sphere **objectList, ray *lightray) { + RGBA pixel = (RGBA){0,0,0,1}; + const int lightBounces = 1; + sphere **spheresHitList = (sphere **)calloc( (lightBounces + 1),sizeof(sphere*) ); - vec3 collisionPoint = collisionPointSphere(lightray, obj); - if (collisionPoint.x == -1) {return pixel;} - vec3 sphereNormal = vec3Normalize(vec3Subtract(collisionPoint, obj->origin)); - pixel.r = -vec3Product(sphereNormal, lightray->direction); + sphere *nearestSphere = nullptr; + vec3 nearestCollisionPoint = {10000,10000,10000}; + for (int i = 0; i < 100 && objectList[i] != nullptr; i++) { + vec3 collisionPoint = collisionPointSphere(lightray, objectList[i]); + if (collisionPoint.x == -10000000) { + + } + else{ + if (vec3Length(collisionPoint)< vec3Length(nearestCollisionPoint)) { + nearestCollisionPoint = collisionPoint; + nearestSphere = objectList[i]; + } + + } + } + if (nearestSphere != nullptr) { + vec3 sphereNormal = vec3Normalize(vec3Subtract(nearestCollisionPoint, nearestSphere->origin)); + pixel.r = -vec3Product(sphereNormal, lightray->direction); + } + + + free(spheresHitList); return pixel; } \ No newline at end of file diff --git a/raytrace.h b/raytrace.h index 471bef8..cd49199 100644 --- a/raytrace.h +++ b/raytrace.h @@ -1,4 +1,4 @@ #pragma once #include "structs.h" -RGBA raytraceSphere(sphere *, ray *); +RGBA raytraceSphere(sphere **, ray *); diff --git a/test.png b/test.png index 199c8e93bf498636c26e65171137eddeffd89b5c..8d55da72638112e84113809679ced958072e15da 100644 GIT binary patch literal 267553 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