From b916035ed173263e496455981046e6d8a5ca07d2 Mon Sep 17 00:00:00 2001 From: James Lambert Date: Wed, 16 Nov 2022 21:39:05 -0700 Subject: [PATCH] Fix farplane bug --- README.md | 1 + src/scene/render_plan.c | 2 ++ src/scene/render_plan.h | 3 +++ src/scene/scene.c | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c5aef4..e184ba4 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ Where `/home/james/Blender/blender-2.93.1-linux-x64` is the folder where Blender ## Current TODO list +- [ ] Passing into a cieling portal can sometimes mess with the player rotation - [ ] render callback only once - [ ] check for null allocations in render process - [ ] stop looping sounds betwen levels diff --git a/src/scene/render_plan.c b/src/scene/render_plan.c index 15d73f1..c195d0a 100644 --- a/src/scene/render_plan.c +++ b/src/scene/render_plan.c @@ -225,6 +225,8 @@ int renderPlanPortal(struct RenderPlan* renderPlan, struct Scene* scene, struct transformConcat(exitPortal, &otherInverse, &portalCombined); next->camera = current->camera; + next->camera.farPlane = DEFAULT_FAR_PLANE * SCENE_SCALE; + next->camera.nearPlane = DEFAULT_NEAR_PLANE * SCENE_SCALE; next->aspectRatio = current->aspectRatio; transformConcat(&portalCombined, ¤t->camera.transform, &next->camera.transform); diff --git a/src/scene/render_plan.h b/src/scene/render_plan.h index 41c7855..127b5bd 100644 --- a/src/scene/render_plan.h +++ b/src/scene/render_plan.h @@ -4,6 +4,9 @@ #include "./scene.h" #include "../graphics/screen_clipper.h" +#define DEFAULT_FAR_PLANE 30.0f +#define DEFAULT_NEAR_PLANE 0.125f + #define MAX_PORTAL_STEPS 6 struct RenderProps { diff --git a/src/scene/scene.c b/src/scene/scene.c index 3fd8cd2..e438927 100644 --- a/src/scene/scene.c +++ b/src/scene/scene.c @@ -41,7 +41,7 @@ void sceneUpdateListeners(struct Scene* scene); void sceneInit(struct Scene* scene) { signalsInit(1); - cameraInit(&scene->camera, 70.0f, 0.125f * SCENE_SCALE, 30.0f * SCENE_SCALE); + cameraInit(&scene->camera, 70.0f, DEFAULT_NEAR_PLANE * SCENE_SCALE, DEFAULT_FAR_PLANE * SCENE_SCALE); struct Location* startLocation = levelGetLocation(gCurrentLevel->startLocation); struct Location combinedLocation;