Add gamma correction and fix rounding errors

This commit is contained in:
Jean-Michel Gorius 2022-11-11 09:44:01 +01:00
parent 0f5b6a756c
commit 204180b1a7
2 changed files with 5 additions and 4 deletions

View File

@ -1,6 +1,7 @@
#include "color.h" #include "color.h"
#include "utils.h" #include "utils.h"
#include <math.h>
#include <stdio.h> #include <stdio.h>
Color color_add(Color c1, Color c2) { Color color_add(Color c1, Color c2) {
@ -21,9 +22,9 @@ Color color_lerp(Color c1, Color c2, double t) {
void color_write(FILE *out, Color c, int samples_per_pixel) { void color_write(FILE *out, Color c, int samples_per_pixel) {
double scale = 1.0 / samples_per_pixel; double scale = 1.0 / samples_per_pixel;
double r = c.r * scale; double r = sqrt(c.r * scale);
double g = c.g * scale; double g = sqrt(c.g * scale);
double b = c.b * scale; double b = sqrt(c.b * scale);
int ir = (int)(256 * clamp(r, 0.0, 0.999)); int ir = (int)(256 * clamp(r, 0.0, 0.999));
int ig = (int)(256 * clamp(g, 0.0, 0.999)); int ig = (int)(256 * clamp(g, 0.0, 0.999));

2
main.c
View File

@ -16,7 +16,7 @@ Color ray_color(Ray r, Hittable world, int depth) {
return (Color){0, 0, 0}; return (Color){0, 0, 0};
HitRecord record; HitRecord record;
if (hittable_hit(&world, r, 0, DBL_MAX, &record)) { if (hittable_hit(&world, r, 0.001, DBL_MAX, &record)) {
Point3 target = point3_add( Point3 target = point3_add(
record.p, vec3_add(record.normal, vec3_random_in_unit_sphere())); record.p, vec3_add(record.normal, vec3_random_in_unit_sphere()));
return color_mul(0.5, return color_mul(0.5,