34 lines
1.3 KiB
Text
34 lines
1.3 KiB
Text
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.
|
|
//}
|