diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2017-09-12 14:11:01 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2017-09-12 20:29:42 -0700 |
commit | cf586253932e04f3c5a2be2c3d6d3ff5b1301ce0 (patch) | |
tree | c02dde6f9b92216012012d1492e1f0c81c316bae /src/modules/ray | |
parent | adb76b79d39a185be4659193baff0cb1fe043506 (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.c | 2 | ||||
-rw-r--r-- | src/modules/ray/ray_camera.h | 2 |
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; } |