diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/camera.hpp | 5 | ||||
| -rw-r--r-- | include/dielectric.hpp | 18 | ||||
| -rw-r--r-- | include/rt.hpp | 1 | ||||
| -rw-r--r-- | include/vec3.hpp | 2 |
4 files changed, 23 insertions, 3 deletions
diff --git a/include/camera.hpp b/include/camera.hpp index 82f7155..0b3d20e 100644 --- a/include/camera.hpp +++ b/include/camera.hpp @@ -1,16 +1,15 @@ #ifndef __CAMERA_HPP_ #define __CAMERA_HPP_ -#include "rt.hpp" +#include "ray.hpp" class camera { public: - camera(point3 position, double aspect_ratio, double focal_length); + camera(point3 position, point3 target, double v_fov, double aspect_ratio); ray get_ray(double u, double v) const; point3 position; - double focal_length; vec3 horizontal; vec3 vertical; diff --git a/include/dielectric.hpp b/include/dielectric.hpp new file mode 100644 index 0000000..91f1541 --- /dev/null +++ b/include/dielectric.hpp @@ -0,0 +1,18 @@ +#ifndef __DIELECTRIC_HPP_ +#define __DIELECTRIC_HPP_ + +#include "material.hpp" + +class dielectric : public material { + public: + dielectric(double index_of_refraction); + + virtual bool scatter(const ray& r, const struct hit_info& info, color& attenuation, ray& scattered) const; + + double ior; + + private: + static double reflectance(double cosine, double ref_idx); +}; + +#endif // !__DIELECTRIC_HPP_ diff --git a/include/rt.hpp b/include/rt.hpp index 2cf3ce2..1294232 100644 --- a/include/rt.hpp +++ b/include/rt.hpp @@ -34,5 +34,6 @@ inline double clamp(double x, double min, double max) { #include "material.hpp" #include "lambertian.hpp" #include "metal.hpp" +#include "dielectric.hpp" #endif // !__RT_HPP_ diff --git a/include/vec3.hpp b/include/vec3.hpp index 317f99b..7d38472 100644 --- a/include/vec3.hpp +++ b/include/vec3.hpp @@ -53,6 +53,8 @@ vec3 operator/(vec3 u, double scale); vec3 reflect(vec3 v, vec3 n); +vec3 refract(const vec3& uv, const vec3& n, double etai_over_etat); + std::ostream& operator<<(std::ostream& out, vec3 vec); vec3 random_in_unit_sphere(); |
