tangled
alpha
login
or
join now
altagos.dev
/
rayray
0
fork
atom
this repo has no description
0
fork
atom
overview
issues
pulls
pipelines
small optimisation
altagos.dev
2 years ago
c04c0c33
f02525c4
+5
-3
1 changed file
expand all
collapse all
unified
split
src
tracer.zig
+5
-3
src/tracer.zig
···
43
43
}
44
44
45
45
pub fn trace(ctx: Context) void {
46
46
+
const spp = zm.f32x4s(@as(f32, @floatFromInt(ctx.cam.samples_per_pixel)));
47
47
+
46
48
var height_iter = ctx.height.iter();
47
49
while (height_iter.nextInc()) |j| {
48
50
if (j >= ctx.cam.image_height) break;
···
56
58
col += rayColor(&ray, ctx.world, ctx.cam.max_depth);
57
59
}
58
60
59
59
-
ctx.cam.setPixel(i, j, vecToRgba(col, ctx.cam.samples_per_pixel)) catch break;
61
61
+
ctx.cam.setPixel(i, j, vecToRgba(col, spp)) catch break;
60
62
}
61
63
}
62
64
}
···
65
67
const nearly_one = zm.f32x4s(0.999);
66
68
const v256 = zm.f32x4s(256);
67
69
68
68
-
inline fn vecToRgba(v: zm.Vec, samples_per_pixel: usize) zigimg.color.Rgba32 {
69
69
-
var rgba = zm.sqrt(v / zm.f32x4s(@as(f32, @floatFromInt(samples_per_pixel)))); // linear to gamma
70
70
+
inline fn vecToRgba(v: zm.Vec, samples_per_pixel: zm.Vec) zigimg.color.Rgba32 {
71
71
+
var rgba = zm.sqrt(v / samples_per_pixel); // linear to gamma
70
72
rgba = zm.clampFast(rgba, zero, nearly_one);
71
73
rgba = rgba * v256;
72
74