Newer
Older
#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