diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/color.cpp | 8 | ||||
| -rw-r--r-- | src/main.cpp | 12 | ||||
| -rw-r--r-- | src/vec3.cpp | 24 |
3 files changed, 25 insertions, 19 deletions
diff --git a/src/color.cpp b/src/color.cpp index 565516f..c1036e0 100644 --- a/src/color.cpp +++ b/src/color.cpp @@ -6,10 +6,10 @@ void write_color(std::ostream& out, const color& pixel_color, uint32_t samples_p auto g = pixel_color.y; auto b = pixel_color.z; - auto scale = 1.0 / samples_per_pixel; - r = sqrt(r * scale); - g = sqrt(g * scale); - b = sqrt(b * scale); + // auto scale = 1.0 / samples_per_pixel; + // r = sqrt(r * scale); + // g = sqrt(g * scale); + // b = sqrt(b * scale); out << static_cast<uint32_t>(256.0 * clamp(r, 0.0, 0.999)) << ' ' << static_cast<uint32_t>(256.0 * clamp(g, 0.0, 0.999)) << ' ' diff --git a/src/main.cpp b/src/main.cpp index fd52ef0..97624ea 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -81,20 +81,26 @@ int main() { vkrenderer renderer {}; // Image dimensions - const double aspect_ratio = 16.0 / 9.0; + const float aspect_ratio = 16.0 / 9.0; const size_t width = 1920; const size_t height = width / aspect_ratio; const uint32_t samples_per_pixel = 1; const uint32_t max_depth = 100; - const vec3 camera_position{ 13.0, 2.0, 3.0 }; - const vec3 camera_target{ 0.0, 0.0, 0.0 }; + // const vec3 camera_position{ 13.0, 2.0, 3.0 }; + const vec3 camera_position{ 0.0, 0.0, 0.0 }; + const vec3 camera_target{ 0.0, 0.0, 1.0 }; const double aperture = 0.1; const double distance_to_focus = 10; camera camera { camera_position, camera_target, 20.0, aspect_ratio, aperture, distance_to_focus }; struct input_data inputs = { .sky_color = sky_color, .ground_color = ground_color, + .camera_pos = camera_position, + .viewport_width = 2.f * aspect_ratio, + .viewport_height = 2.f, + .proj_plane_distance = 1.f, + .sphere_position = { 0.f, 0.f, -1.f }, }; // World hittable objects diff --git a/src/vec3.cpp b/src/vec3.cpp index 94b3432..b1e73f8 100644 --- a/src/vec3.cpp +++ b/src/vec3.cpp @@ -3,7 +3,7 @@ vec3::vec3(): x(0.0), y(0.0), z(0.0) {} -vec3::vec3(double x, double y, double z): x(x), y(y), z(z) {} +vec3::vec3(float x, float y, float z): x(x), y(y), z(z) {} vec3 vec3::operator-() const { return vec3 { @@ -21,7 +21,7 @@ vec3& vec3::operator+=(vec3 vec) { return *this; } -vec3& vec3::operator*=(double scale) { +vec3& vec3::operator*=(float scale) { x *= scale; y *= scale; z *= scale; @@ -29,7 +29,7 @@ vec3& vec3::operator*=(double scale) { return *this; } -vec3& vec3::operator/=(double numerator) { +vec3& vec3::operator/=(float numerator) { x /= numerator; y /= numerator; z /= numerator; @@ -37,15 +37,15 @@ vec3& vec3::operator/=(double numerator) { return *this; } -double vec3::length() const { +float vec3::length() const { return sqrt(length_sq()); } -double vec3::length_sq() const { +float vec3::length_sq() const { return x * x + y * y + z * z; } -double vec3::dot(const vec3& vec) const { +float vec3::dot(const vec3& vec) const { return x * vec.x + y * vec.y + z * vec.z; } @@ -71,11 +71,11 @@ vec3 vec3::random() { return vec3 { randd(), randd(), randd() }; } -vec3 vec3::random(double min, double max) { +vec3 vec3::random(float min, float max) { return vec3 { randd(min, max), randd(min, max), randd(min, max) }; } -vec3 lerp(vec3 u, vec3 v, double t) { +vec3 lerp(vec3 u, vec3 v, float t) { return (1.0 - t) * u + t * v; } @@ -91,7 +91,7 @@ vec3 operator*(vec3 u, vec3 v) { return vec3(u.x * v.x, u.y * v.y, u.z * v.z); } -vec3 operator*(vec3 u, double scale) { +vec3 operator*(vec3 u, float scale) { return vec3( u.x * scale, u.y * scale, @@ -99,11 +99,11 @@ vec3 operator*(vec3 u, double scale) { ); } -vec3 operator*(double scale, vec3 u) { +vec3 operator*(float scale, vec3 u) { return u * scale; } -vec3 operator/(vec3 u, double scale) { +vec3 operator/(vec3 u, float scale) { return (1.0 / scale) * u; } @@ -111,7 +111,7 @@ vec3 reflect(vec3 v, vec3 n) { return v - 2 * v.dot(n) * n; } -vec3 refract(const vec3& uv, const vec3& n, double etai_over_etat) { +vec3 refract(const vec3& uv, const vec3& n, float etai_over_etat) { auto cos_theta = fmin(n.dot(-uv), 1.0); vec3 r_out_perp = etai_over_etat * (uv + cos_theta*n); vec3 r_out_parallel = -sqrt(fabs(1.0 - r_out_perp.length_sq())) * n; |
