From a97b38299d5f8297d15077160df5439d274bd571 Mon Sep 17 00:00:00 2001 From: Keuin Date: Tue, 12 Apr 2022 11:01:32 +0800 Subject: Make object::hit provides hit time t. Visualize normal vector at hit point. Add pixel::from_normalized(const vec3d&) for visualizing normal vector. --- bitmap.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'bitmap.h') diff --git a/bitmap.h b/bitmap.h index 31b9053..09f3711 100644 --- a/bitmap.h +++ b/bitmap.h @@ -31,10 +31,15 @@ struct pixel { * Create a pixel with given depth, from normalized color values. * For example: for 8bit pixel, with (1, 0.5, 0.25), we get: (255, 127, 63). */ - static pixel from_normalized(double r, double g, double b) { + static inline pixel from_normalized(double r, double g, double b) { const auto mod = (1ULL << (sizeof(T) * 8U)) - 1ULL; return pixel{.r = (T) (mod * r), .g = (T) (mod * g), .b = (T) (mod * b)}; } + + // v3d must be a normalized vector + static inline pixel from_normalized(const vec3d &v3d) { + return from_normalized(v3d.x / 2.0 + 0.5, v3d.y / 2.0 + 0.5, v3d.z / 2.0 + 0.5); + } }; // Mix two colors a and b. Returns a*u + b*v -- cgit v1.2.3