Euphoria
|
raytracer.cc
Go to the documentation of this file.
482 const auto u = (static_cast<float>(x) + rand.get_next_float01()) / static_cast<float>(img.width);
483 const auto v = (static_cast<float>(y) + rand.get_next_float01()) / static_cast<float>(img.height);
Definition: raytracer.cc:16
std::shared_ptr< Material > create_metal_material(const Rgb &albedo, float fuzz)
Definition: raytracer.cc:342
std::shared_ptr< Object > create_sphere(const Sphere &sphere, const vec3f &position, std::shared_ptr< raytracer::Material > material)
Definition: raytracer.cc:81
float calc_fresnel_factor(float cosine, float ref_idx)
Definition: raytracer.cc:248
void raytrace(Image *aimage, const raytracer::Scene &scene, int number_of_samples)
Definition: raytracer.cc:466
Rgb correct_color_using_gamma2(const Rgb &color)
Definition: raytracer.cc:460
std::shared_ptr< Material > create_dielectric_material(const Rgb &albedo, float refractive_index)
Definition: raytracer.cc:357
std::shared_ptr< Material > create_diffuse_material(const Rgb &albedo)
Definition: raytracer.cc:329
vec3f get_random_vec3_in_unit_sphere(Random *random)
Definition: raytracer.cc:136
vec3f get_reflected(const vec3f &v, const unit3f &normal)
Definition: raytracer.cc:171
std::optional< vec3f > get_refracted(const unit3f &uv, const unit3f &normal, float ni)
Definition: raytracer.cc:228
Rgb get_color(const Scene &scene, const UnitRay3f &ray, Random *random, int depth)
Definition: raytracer.cc:372
std::optional< float > get_intersection(const UnitRay3f &ray, const CollisionMesh &mesh)
Definition: collisionmesh.cc:39
@ black
Definition: angle.h:14
Definition: ray.h:9
static UnitRay3f from_to(const vec3f &from, const vec3f &to)
Definition: ray.cc:17
Definition: image.h:29
Definition: sphere.h:6
Definition: raytracer.cc:426
UnitRay3f get_ray(float u, float v) const
Definition: raytracer.cc:452
static Camera create(const Angle &vfov, float aspect)
Definition: raytracer.cc:432
Definition: raytracer.h:51
Collision(float aray_distance, const vec3f &aposition, const unit3f &anormal, std::shared_ptr< raytracer::Material > amaterial)
Definition: raytracer.cc:18
DielectricMaterial(const Rgb &aalbedo, float arefractive_index)
Definition: raytracer.cc:264
std::optional< ScatterResult > get_scattered(const UnitRay3f &ray, const Collision &hit, Random *random) override
Definition: raytracer.cc:275
float refractive_index
Definition: raytracer.cc:261
std::optional< ScatterResult > get_scattered(const UnitRay3f &, const Collision &hit, Random *random) override
Definition: raytracer.cc:153
DiffuseMaterial(const Rgb &aalbedo)
Definition: raytracer.cc:146
Definition: raytracer.h:31
std::optional< ScatterResult > get_scattered(const UnitRay3f &ray, const Collision &hit, Random *random) override
Definition: raytracer.cc:193
MetalMaterial(const Rgb &aalbedo, float afuzz)
Definition: raytracer.cc:182
Definition: raytracer.h:68
Definition: raytracer.h:24
Definition: raytracer.h:112
std::vector< std::shared_ptr< Object > > objects
Definition: raytracer.h:113
std::optional< Collision > get_collision(const UnitRay3f &ray, const Range< float > &range) const
Definition: raytracer.cc:97
Definition: raytracer.cc:33
SphereObject(const core::Sphere &asphere, const vec3f &aposition, std::shared_ptr< raytracer::Material > amaterial)
Definition: raytracer.cc:39
std::shared_ptr< raytracer::Material > material
Definition: raytracer.cc:36
std::optional< Collision > get_collision(const UnitRay3f &ray, const Range< float > &range) const override
Definition: raytracer.cc:51
Definition: vec3.h:102