Skip to content
Snippets Groups Projects
Commit 07504f40 authored by Yoel's avatar Yoel
Browse files

New class SurfacePoint

parent 70efd9cb
No related branches found
No related tags found
No related merge requests found
#include "SurfacePoint.h"
#include <limits>
#include "../camera/Ray.h"
namespace util {
SurfacePoint::SurfacePoint(const util::Vec3& point, const util::Vec3& n,
const std::shared_ptr<material::Material>& material)
: x(point), n(n), material(material) {
}
cam::Ray SurfacePoint::scattered_ray(const cam::Ray& inc_ray) const {
return cam::Ray(x, material->scattered_d(inc_ray.d, n),
std::numeric_limits<float>::epsilon(), inc_ray.tmax, true);
}
util::Vec3 SurfacePoint::albedo() const {
return material->albedo(0, 0);
}
util::Vec3 SurfacePoint::emission() const {
return material->emission(0, 0);
}
bool SurfacePoint::scatter() const {
return material->scatter();
}
util::Vec3 SurfacePoint::point() const {
return x;
}
util::Vec3 SurfacePoint::normal() const {
return n;
}
} // namespace util
\ No newline at end of file
#pragma once
#include "../camera/Ray.h"
#include "../material/Material.h"
namespace util {
class SurfacePoint {
public:
SurfacePoint(const util::Vec3& point, const util::Vec3& n,
const std::shared_ptr<material::Material>& material);
cam::Ray scattered_ray(const cam::Ray& inc_ray) const;
util::Vec3 albedo() const; // TODO TexelPos
util::Vec3 emission() const; // TODO TexelPos
bool scatter() const;
util::Vec3 point() const;
util::Vec3 normal() const;
// Attributes
// TODO TexelPos
std::shared_ptr<material::Material> material;
private:
util::Vec3 x, n;
};
} // namespace util
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment