diff --git a/RayTracer/tools/SurfacePoint.cpp b/RayTracer/tools/SurfacePoint.cpp
index e740eb84afe476aed87d790af912fec1c9694a4a..d84127541348cdd08b9cf3619e0a937a53ec4248 100644
--- a/RayTracer/tools/SurfacePoint.cpp
+++ b/RayTracer/tools/SurfacePoint.cpp
@@ -6,18 +6,19 @@
 
 namespace util {
 SurfacePoint::SurfacePoint(const util::Vec3& point, const util::Vec3& n,
+                           const std::pair<float, float>& uv,
                            const std::shared_ptr<material::Material>& material)
-    : x(point), n(n), material(material) {
+    : x(point), n(n), uv(uv), material(material) {
 }
 cam::Ray SurfacePoint::scattered_ray(const cam::Ray& inc_ray) const {
 	return cam::Ray(x, material->scattered_d(inc_ray.d, n), cam::epsilon,
 	                inc_ray.tmax, true);
 }
 util::Vec3 SurfacePoint::albedo() const {
-	return material->albedo(0, 0);
+	return material->albedo(uv);
 }
 util::Vec3 SurfacePoint::emission() const {
-	return material->emission(0, 0);
+	return material->emission(uv);
 }
 bool SurfacePoint::scatter(const util::Vec3& d, const util::Vec3& n) const {
 	return material->scatter(d, n);
@@ -28,6 +29,9 @@ util::Vec3 SurfacePoint::point() const {
 util::Vec3 SurfacePoint::normal() const {
 	return n;
 }
+std::pair<float, float> SurfacePoint::texel() const {
+	return uv;
+}
 float SurfacePoint::calculateLightMultiplier(const util::Vec3& d_in,
                                              const util::Vec3& d_out,
                                              const util::Vec3& n) const {
diff --git a/RayTracer/tools/SurfacePoint.h b/RayTracer/tools/SurfacePoint.h
index 5c3cbeea2e71f9135d191282b340cd357e0b14bd..fc666e0bac6e59da4233010514c630592247aa57 100644
--- a/RayTracer/tools/SurfacePoint.h
+++ b/RayTracer/tools/SurfacePoint.h
@@ -7,23 +7,25 @@ namespace util {
 class SurfacePoint {
    public:
 	SurfacePoint(const util::Vec3& point, const util::Vec3& n,
+	             const std::pair<float, float>& uv,
 	             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
+	util::Vec3 albedo() const;
+	util::Vec3 emission() const;
 	bool scatter(const util::Vec3& d, const util::Vec3& n) const;
 	util::Vec3 point() const;
 	util::Vec3 normal() const;
+	std::pair<float, float> texel() const;
 	float calculateLightMultiplier(const util::Vec3& d_in,
 	                               const util::Vec3& d_out,
 	                               const util::Vec3& n) const;
 	// Attributes
-	// TODO TexelPos
 	std::shared_ptr<material::Material> material;
 
    private:
 	util::Vec3 x, n;
+	std::pair<float, float> uv;
 };
 
 }  // namespace util