Add camera aperture / depth-of-field

This commit is contained in:
2025-09-23 15:36:08 +01:00
parent 9e3bc4176b
commit cc7ff471f1
4 changed files with 26 additions and 9 deletions

View File

@@ -94,9 +94,19 @@ static int render_thread(void *arg)
vec3_scale(camera->y_step, jitter.y));
const vec3_t jittered_pix = vec3_add(pix, offset);
vec3_t source = camera->pos;
if (camera->aperture != 0.0) {
const vec3_t pos
= vec3_scale(rng_xy(&slice->rng), camera->aperture);
const vec3_t offset = vec3_add(
vec3_scale(camera->u_hat, pos.x),
vec3_scale(camera->v_hat, pos.y));
source = vec3_add(source, offset);
}
const ray_t ray = {
.orig = camera->pos,
.dir = vec3_unit(vec3_sub(jittered_pix, camera->pos)),
.orig = source,
.dir = vec3_unit(vec3_sub(jittered_pix, source)),
};
const vec3_t sample = trace(ray, slice->scene, &slice->rng);