diff --git a/0.png b/0.png
index b37725891bf25d3c0fbdde2c98aa8edd4be1acbb..0ac888ac5fd8aea0c0b896f0c09a7cda4f02d8c3 100644
Binary files a/0.png and b/0.png differ
diff --git a/1.png b/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3484d2131798efa4f062cd1761cea3d899d51728
Binary files /dev/null and b/1.png differ
diff --git a/main b/main
new file mode 100644
index 0000000000000000000000000000000000000000..d1569d395ae0026a97300d382cda0dcc592ae451
Binary files /dev/null and b/main differ
diff --git a/scene.cpp b/scene.cpp
index f87bfbf1f35d11aef06af5513595debb54adbfed..cbe90ccc789a678105a03fd0928e50c78cc58102 100644
--- a/scene.cpp
+++ b/scene.cpp
@@ -1,5 +1,6 @@
 #include "scene.h"
 #include <png.h>
+#include <math.h> //fmin
 
 
 
@@ -135,11 +136,13 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 									}
 						}
 
+						float intensity = 60/dist(reflected.origin(), source_.origin()); //pour atténuer la lumière selon la distance
+
 						if (shadow)
 						{
-							row[3*(nb_pixel_row-1-j)] = 50;
-							row[3*(nb_pixel_row-1-j) + 1] = 50;
-							row[3*(nb_pixel_row-1-j) + 2] = 50;
+							row[3*(nb_pixel_row-1-j)] = fmin(50, 50*intensity);
+							row[3*(nb_pixel_row-1-j) + 1] = fmin(50, 50*intensity);
+							row[3*(nb_pixel_row-1-j) + 2] = fmin(50, 50*intensity);
 						}
 
 						else
@@ -149,16 +152,16 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 
 							if (  dist(reflect_to_source.origin() , shapes_[k]->reflect(source_to_reflect).origin()) > 0.5  ) //self_shadow
 							{
-								row[3*(nb_pixel_row-1-j)] = shapes_[k]->matter().r() / 2;
-								row[3*(nb_pixel_row-1-j) + 1] = shapes_[k]->matter().g() / 2;
-								row[3*(nb_pixel_row-1-j) + 2] = shapes_[k]->matter().b() / 2;
+								row[3*(nb_pixel_row-1-j)] = fmin(shapes_[k]->matter().r()/2 * intensity, shapes_[k]->matter().r()/2);
+								row[3*(nb_pixel_row-1-j) + 1] = fmin(shapes_[k]->matter().g()/2 * intensity, shapes_[k]->matter().g()/2);
+								row[3*(nb_pixel_row-1-j) + 2] = fmin(shapes_[k]->matter().b()/2 * intensity, shapes_[k]->matter().b()/2);
 							}
 
-							else
+							else //il faut rajouter la réflexion
 							{
-								row[3*(nb_pixel_row-1-j)] = shapes_[k]->matter().r();
-								row[3*(nb_pixel_row-1-j) + 1] = shapes_[k]->matter().g();
-								row[3*(nb_pixel_row-1-j) + 2] = shapes_[k]->matter().b();
+								row[3*(nb_pixel_row-1-j)] = fmin(shapes_[k]->matter().r() * intensity, 255.);
+								row[3*(nb_pixel_row-1-j) + 1] = fmin(shapes_[k]->matter().g() * intensity, 255.);
+								row[3*(nb_pixel_row-1-j) + 2] = fmin(shapes_[k]->matter().b() * intensity, 255.);
 							}
 						}
 					}