From f0da916a22311112de892fb78f7569ffe2232cef Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Sat, 30 Jul 2022 17:11:44 -0700 Subject: [PATCH] Use stub Vec3 / Color to implement gradient image. --- zigrtiow/src/color.zig | 10 ++++++++++ zigrtiow/src/main.zig | 15 ++++++--------- zigrtiow/src/vec.zig | 19 +++++++++++++++++++ 3 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 zigrtiow/src/color.zig create mode 100644 zigrtiow/src/vec.zig diff --git a/zigrtiow/src/color.zig b/zigrtiow/src/color.zig new file mode 100644 index 0000000..717c23d --- /dev/null +++ b/zigrtiow/src/color.zig @@ -0,0 +1,10 @@ +const std = @import("std"); +const Color = @import("./vec.zig").Color; + +pub fn write_color(c: Color) anyerror!void { + var ir = @floatToInt(u8, 255.999 * c.x()); + var ig = @floatToInt(u8, 255.999 * c.y()); + var ib = @floatToInt(u8, 255.999 * c.z()); + const stdout = std.io.getStdOut(); + try stdout.writer().print("{d} {d} {d}\n", .{ ir, ig, ib }); +} diff --git a/zigrtiow/src/main.zig b/zigrtiow/src/main.zig index 14c18c4..b5e5ad6 100644 --- a/zigrtiow/src/main.zig +++ b/zigrtiow/src/main.zig @@ -1,5 +1,9 @@ const std = @import("std"); const info = std.log.info; +const vec = @import("./vec.zig"); +const Vec3 = vec.Vec3; +const Color = vec.Color; +const write_color = @import("./color.zig").write_color; pub fn main() anyerror!void { const image_width: isize = 256; @@ -16,15 +20,8 @@ pub fn main() anyerror!void { var i: isize = 0; while (i < image_width) : (i += 1) { - var r = @intToFloat(f32, i) / @intToFloat(f32, image_width - 1); - var g = @intToFloat(f32, j) / @intToFloat(f32, image_height - 1); - var b: f32 = 0.25; - - var ir = @floatToInt(u8, 255.999 * r); - var ig = @floatToInt(u8, 255.999 * g); - var ib = @floatToInt(u8, 255.999 * b); - - try stdout.writer().print("{d} {d} {d}\n", .{ ir, ig, ib }); + const pixel_color = Color.init(@intToFloat(f32, i) / @intToFloat(f32, image_width - 1), @intToFloat(f32, j) / @intToFloat(f32, image_height - 1), 0.25); + try write_color(pixel_color); } } } diff --git a/zigrtiow/src/vec.zig b/zigrtiow/src/vec.zig new file mode 100644 index 0000000..30c4858 --- /dev/null +++ b/zigrtiow/src/vec.zig @@ -0,0 +1,19 @@ +pub const Vec3 = struct { + v: @Vector(3, f32), + pub fn init(v0: f32, v1: f32, v2: f32) Vec3 { + return Vec3{ + .v = .{ v0, v1, v2 }, + }; + } + pub fn x(vec: Vec3) f32 { + return vec.v[0]; + } + pub fn y(vec: Vec3) f32 { + return vec.v[1]; + } + pub fn z(vec: Vec3) f32 { + return vec.v[2]; + } +}; +pub const Color = Vec3; +pub const Point3 = Vec3;