summaryrefslogtreecommitdiff
path: root/src/modules/ray
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2017-09-12 14:11:01 -0700
committerVito Caputo <vcaputo@pengaru.com>2017-09-12 20:29:42 -0700
commitcf586253932e04f3c5a2be2c3d6d3ff5b1301ce0 (patch)
treec02dde6f9b92216012012d1492e1f0c81c316bae /src/modules/ray
parentadb76b79d39a185be4659193baff0cb1fe043506 (diff)
ray: don't assume x_alpha is 0 at begin or y_step
Currently fragments always start at the left edge of the frame, but when switching to a tiling fragmenter this is no longer true and causes visible errors.
Diffstat (limited to 'src/modules/ray')
-rw-r--r--src/modules/ray/ray_camera.c2
-rw-r--r--src/modules/ray/ray_camera.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/modules/ray/ray_camera.c b/src/modules/ray/ray_camera.c
index 8a06aa3..e7792f2 100644
--- a/src/modules/ray/ray_camera.c
+++ b/src/modules/ray/ray_camera.c
@@ -81,5 +81,5 @@ void ray_camera_frame_begin(ray_camera_t *camera, fb_fragment_t *fragment, ray_r
frame->cur_e = ray_3f_lerp(&frame->ne, &frame->se, frame->y_alpha);
ray->origin = camera->position;
- ray->direction = ray_3f_normalize(&frame->cur_w);
+ ray->direction = ray_3f_nlerp(&frame->cur_w, &frame->cur_e, frame->x_alpha);
}
diff --git a/src/modules/ray/ray_camera.h b/src/modules/ray/ray_camera.h
index b0c874a..191d614 100644
--- a/src/modules/ray/ray_camera.h
+++ b/src/modules/ray/ray_camera.h
@@ -69,7 +69,7 @@ static inline int ray_camera_frame_y_step(ray_camera_frame_t *frame)
frame->y_alpha += frame->y_delta;
frame->cur_w = ray_3f_lerp(&frame->nw, &frame->sw, frame->y_alpha);
frame->cur_e = ray_3f_lerp(&frame->ne, &frame->se, frame->y_alpha);
- frame->ray->direction = ray_3f_normalize(&frame->cur_w);
+ frame->ray->direction = ray_3f_nlerp(&frame->cur_w, &frame->cur_e, frame->x_alpha);
return 1;
}
© All Rights Reserved