diff --git a/RayTracer/material/BackgroundMaterial.cpp b/RayTracer/material/BackgroundMaterial.cpp
index fa967d03a476559d7b53ec417d50193f6c9922fc..e80bf3629b16e751ea8bb3e7d66d47c081a6cb7c 100644
--- a/RayTracer/material/BackgroundMaterial.cpp
+++ b/RayTracer/material/BackgroundMaterial.cpp
@@ -10,11 +10,12 @@ BackgroundMaterial::BackgroundMaterial(
 BackgroundMaterial::BackgroundMaterial(const util::Vec3& albedo)
     : texture(std::make_shared<Constant>(albedo)) {
 }
-util::Vec3 BackgroundMaterial::albedo(float texel_x, float texel_y) const {
+util::Vec3 BackgroundMaterial::albedo(const std::pair<float, float>& uv) const {
 	return util::Vec3(1, 1, 1);
 }
-util::Vec3 BackgroundMaterial::emission(float texel_x, float texel_y) const {
-	return texture->color(texel_x, texel_y);
+util::Vec3 BackgroundMaterial::emission(
+    const std::pair<float, float>& uv) const {
+	return texture->color(uv.first, uv.second);
 }
 util::Vec3 BackgroundMaterial::scattered_d(const util::Vec3& d,
                                            const util::Vec3& n) const {
diff --git a/RayTracer/material/BackgroundMaterial.h b/RayTracer/material/BackgroundMaterial.h
index c6594c468587c15e08b32527375e58aa393dc3b4..61e17d261c6d68deccb1946a33da6e88c9abe275 100644
--- a/RayTracer/material/BackgroundMaterial.h
+++ b/RayTracer/material/BackgroundMaterial.h
@@ -8,8 +8,8 @@ class BackgroundMaterial : public Material {
 	BackgroundMaterial(const std::shared_ptr<util::Sampler>& texture);
 	BackgroundMaterial(const util::Vec3& albedo);
 
-	util::Vec3 albedo(float texel_x, float texel_y) const override;
-	util::Vec3 emission(float texel_x, float texel_y) const override;
+	util::Vec3 albedo(const std::pair<float, float>& uv) const override;
+	util::Vec3 emission(const std::pair<float, float>& uv) const override;
 	util::Vec3 scattered_d(const util::Vec3& d,
 	                       const util::Vec3& n) const override;
 	bool scatter(const util::Vec3& d, const util::Vec3& n) const override;
diff --git a/RayTracer/material/DiffuseMaterial.cpp b/RayTracer/material/DiffuseMaterial.cpp
index ce46f4be1c73f60b046317599a0b78ee3e9a82ec..e24430cd3012d6d1c0d4b13cd76eaeec311555c0 100644
--- a/RayTracer/material/DiffuseMaterial.cpp
+++ b/RayTracer/material/DiffuseMaterial.cpp
@@ -25,11 +25,11 @@ DiffuseMaterial::DiffuseMaterial(const util::Vec3& color)
       emission_texture(
           std::make_shared<Constant>(Constant(util::Vec3(0, 0, 0)))) {
 }
-util::Vec3 DiffuseMaterial::albedo(float texel_x, float texel_y) const {
-	return albedo_texture->color(texel_x, texel_y);
+util::Vec3 DiffuseMaterial::albedo(const std::pair<float, float>& uv) const {
+	return albedo_texture->color(uv.first, uv.second);
 }
-util::Vec3 DiffuseMaterial::emission(float texel_x, float texel_y) const {
-	return emission_texture->color(texel_x, texel_y);
+util::Vec3 DiffuseMaterial::emission(const std::pair<float, float>& uv) const {
+	return emission_texture->color(uv.first, uv.second);
 }
 util::Vec3 DiffuseMaterial::scattered_d(const util::Vec3& d,
                                         const util::Vec3& n) const {
diff --git a/RayTracer/material/DiffuseMaterial.h b/RayTracer/material/DiffuseMaterial.h
index fe4b5a12a96fb4d3d505a6aa9d2434e8cc815a6d..dcda0b872bb8bea33b0ee85f2e69a25e9b5e6c91 100644
--- a/RayTracer/material/DiffuseMaterial.h
+++ b/RayTracer/material/DiffuseMaterial.h
@@ -10,8 +10,8 @@ class DiffuseMaterial : public Material {
 	DiffuseMaterial(const std::shared_ptr<util::Sampler>& albedo);
 	DiffuseMaterial(const util::Vec3& color);
 
-	util::Vec3 albedo(float texel_x, float texel_y) const override;
-	util::Vec3 emission(float texel_x, float texel_y) const override;
+	util::Vec3 albedo(const std::pair<float, float>& uv) const override;
+	util::Vec3 emission(const std::pair<float, float>& uv) const override;
 	util::Vec3 scattered_d(const util::Vec3& d,
 	                       const util::Vec3& n) const override;
 	bool scatter(const util::Vec3& d, const util::Vec3& n) const override;
diff --git a/RayTracer/material/ReflectiveMaterial.cpp b/RayTracer/material/ReflectiveMaterial.cpp
index d32cb33e07e50aeaf396855a90e7c338ac7d0c09..08754c9eff0d410aff934145f523e69b6b04c1fe 100644
--- a/RayTracer/material/ReflectiveMaterial.cpp
+++ b/RayTracer/material/ReflectiveMaterial.cpp
@@ -27,11 +27,12 @@ ReflectiveMaterial::ReflectiveMaterial(const util::Vec3& color, float clearness)
           std::make_shared<Constant>(Constant(util::Vec3(0, 0, 0)))),
       clearness(clearness) {
 }
-util::Vec3 ReflectiveMaterial::albedo(float texel_x, float texel_y) const {
-	return albedo_texture->color(texel_x, texel_y);
+util::Vec3 ReflectiveMaterial::albedo(const std::pair<float, float>& uv) const {
+	return albedo_texture->color(uv.first, uv.second);
 }
-util::Vec3 ReflectiveMaterial::emission(float texel_x, float texel_y) const {
-	return emission_texture->color(texel_x, texel_y);
+util::Vec3 ReflectiveMaterial::emission(
+    const std::pair<float, float>& uv) const {
+	return emission_texture->color(uv.first, uv.second);
 }
 util::Vec3 ReflectiveMaterial::scattered_d(const util::Vec3& d,
                                            const util::Vec3& n) const {
diff --git a/RayTracer/material/ReflectiveMaterial.h b/RayTracer/material/ReflectiveMaterial.h
index 8c005e5f58201484e4bd15e0989f65a1785416ac..69c6dcc4e0ddaf2185976ebef0a0ccffcc3795a0 100644
--- a/RayTracer/material/ReflectiveMaterial.h
+++ b/RayTracer/material/ReflectiveMaterial.h
@@ -12,8 +12,8 @@ class ReflectiveMaterial : public Material {
 	                   float clearness);
 	ReflectiveMaterial(const util::Vec3& color, float clearness);
 
-	util::Vec3 albedo(float texel_x, float texel_y) const override;
-	util::Vec3 emission(float texel_x, float texel_y) const override;
+	util::Vec3 albedo(const std::pair<float, float>& uv) const override;
+	util::Vec3 emission(const std::pair<float, float>& uv) const override;
 	util::Vec3 scattered_d(const util::Vec3& d,
 	                       const util::Vec3& n) const override;
 	bool scatter(const util::Vec3& d, const util::Vec3& n) const override;