this repo has no description

small optimisation

+5 -3
+5 -3
src/tracer.zig
··· 43 43 } 44 44 45 45 pub fn trace(ctx: Context) void { 46 + const spp = zm.f32x4s(@as(f32, @floatFromInt(ctx.cam.samples_per_pixel))); 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 - ctx.cam.setPixel(i, j, vecToRgba(col, ctx.cam.samples_per_pixel)) catch break; 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 - inline fn vecToRgba(v: zm.Vec, samples_per_pixel: usize) zigimg.color.Rgba32 { 69 - var rgba = zm.sqrt(v / zm.f32x4s(@as(f32, @floatFromInt(samples_per_pixel)))); // linear to gamma 70 + inline fn vecToRgba(v: zm.Vec, samples_per_pixel: zm.Vec) zigimg.color.Rgba32 { 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