// Description: Texture class
// Detail: An abstract class for textures
#ifndef PASTELGFX_TEXTURE_H
#define PASTELGFX_TEXTURE_H
#include "pastel/sys/vector.h"
#include "pastel/math/matrix/matrix.h"
#include <string>
namespace Pastel
{
    template <typename Type, integer N = 2>
    class Texture
    {
    public:
        using Element = Type;
        virtual ~Texture() {}
        virtual Type operator()(
            const Vector<real, N>& p,
            const Matrix<real>& m) const = 0;
        virtual std::string name() const = 0;
        virtual std::string fullName() const
        {
            return name();
        }
    };
}
#endif