Add gamma correction and fix rounding errors
This commit is contained in:
parent
0f5b6a756c
commit
204180b1a7
7
color.c
7
color.c
@ -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
2
main.c
@ -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,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user