diff --git a/include/neural-graphics-primitives/common_device.cuh b/include/neural-graphics-primitives/common_device.cuh
index 9a33d7eae5f11d8caebd9651cc1458f88d76c95c..a5d3c29e103691d711b87167a7dd7ade71ecf923 100644
--- a/include/neural-graphics-primitives/common_device.cuh
+++ b/include/neural-graphics-primitives/common_device.cuh
@@ -303,15 +303,14 @@ inline NGP_HOST_DEVICE Ray pixel_to_ray(
 	dir = camera_matrix.block<3, 3>(0, 0) * dir;
 
 	Eigen::Vector3f origin = camera_matrix.block<3, 3>(0, 0) * head_pos + camera_matrix.col(3);
-	if (aperture_size == 0.0f) {
-		origin += dir * near_distance;
-		return {origin, dir};
+	
+	if (aperture_size > 0.0f) {
+		Eigen::Vector3f lookat = origin + dir * focus_z;
+		Eigen::Vector2f blur = aperture_size * square2disk_shirley(ld_random_val_2d(spp, (uint32_t)pixel.x() * 19349663 + (uint32_t)pixel.y() * 96925573) * 2.0f - Eigen::Vector2f::Ones());
+		origin += camera_matrix.block<3, 2>(0, 0) * blur;
+		dir = (lookat - origin) / focus_z;
 	}
-
-	Eigen::Vector3f lookat = origin + dir * focus_z;
-	Eigen::Vector2f blur = aperture_size * square2disk_shirley(ld_random_val_2d(spp, (uint32_t)pixel.x() * 19349663 + (uint32_t)pixel.y() * 96925573) * 2.0f - Eigen::Vector2f::Ones());
-	origin += camera_matrix.block<3, 2>(0, 0) * blur;
-	dir = (lookat - origin) / focus_z;
+	
 	origin += dir * near_distance;
 
 	return {origin, dir};