shader_type canvas_item;
render_mode blend_disabled;

// On definit un uniform, donc quelque chose que le shader a en input
// ici hint_screen_texture signifie qu'on recupere la texture de l'ecran
// repeat_disable qu'on souhaite pas que la texture soit infinie et se repete
// filter_nearest qu'on veut pas d'interpolation bizzare
uniform sampler2D screen_tex : hint_screen_texture, repeat_disable, filter_nearest;
uniform vec3 new_green_color : source_color;

void fragment() {
	// Called for every pixel the material is visible on.
	vec3 screen_color = texture(screen_tex, SCREEN_UV).rgb;
	// Le produit scalaire (dot) est tres utile pour avoir une sorte de distance entre deux vecteurs
	// On veut savoir si le pixel derriere est vert, 
	// donc on compare ca au vecteur vert rgb normalize (vec3(0, 1, 0)) 
	bool is_green = dot(normalize(screen_color), vec3(0, 1, 0)) > 0.69;
	if (is_green){
		// Moyenne ponderee, pour eviter d'avoir que du rouge (trop flat)
		COLOR.rgb = (3.0*new_green_color + screen_color)/4.0;
	}
	else{
		COLOR.rgb = screen_color;
	}
	// TODO
	// Ajoute du bruit, je veux que les feuilles aient du bruit
	// Ajoute une sorte de cadre, je veux bien voir les bordures de l'effet
	
}

//void light() {
//	// Called for every pixel for every light affecting the CanvasItem.
//	// Uncomment to replace the default light processing function with this one.
//}
