Skip to content
Snippets Groups Projects
DiffuseMaterial.h 733 B
Newer Older
Postea's avatar
Postea committed
#pragma once

#include "../sampling/Sampler.h"
Postea's avatar
Postea committed
#include "Material.h"
#include "texture/Constant.h"

Postea's avatar
Postea committed
namespace material {
class DiffuseMaterial : public Material {
public:
    DiffuseMaterial(const std::shared_ptr<util::Sampler>& albedo_texture, const std::shared_ptr<util::Sampler>& emission_texture);
    DiffuseMaterial(const std::shared_ptr<util::Sampler>& albedo);
    DiffuseMaterial(const util::Vec3& color);
    bool scatter();

    util::Vec3 albedo(float texel_x, float texel_y);
    util::Vec3 emission(float texel_x, float texel_y);
    util::Vec3 scattered_d(const util::Vec3& d, const util::Vec3& n);
Postea's avatar
Postea committed

    std::shared_ptr<util::Sampler> emission_texture;
    std::shared_ptr<util::Sampler> albedo_texture;
Postea's avatar
Postea committed
}