J'essaie d'effectuer une opération de flou dans le fragment shader en attachant une texture (myTexture) à mon objet framebuffer. Il fonctionne avec ce code:Opération de flou dans le fragment shader avec des valeurs à virgule flottante
vec3 blur(float depth){
float dx = 1.0f/800;
float dy = 1.0f/800;
vec3 sum = vec3(0,0,0);
int dep=depth*10;
for(int i=-dep;i<dep;i++)
for(int j=-dep;j<dep;j++)
sum += texture(myTexture, otex + vec2(i * dx, j * dy)).xyz;
return sum/40;
}
Mais si je le modifier au code ci-dessous, il ne fonctionne pas (l'écran devient blanc pour une raison quelconque, peut-être la lecture de ma texture de profondeur, mais je ne sais pas pourquoi)
vec3 blur(float depth){
float dx = 1.0f/800;
float dy = 1.0f/800;
vec3 sum = vec3(0,0,0);
float dep=depth*10;
for(float i=dep;i<dep;i+=0.2f)
for(float j=dep;j<dep;j+=0.2f)
sum += texture(myTexture, otex + vec2(i * dx, j * dy)).xyz;
return sum/40;
}
la raison pour laquelle je suis en train de le faire parce que je veux brouiller en fonction de la valeur de la profondeur de l'objet. Si l'objet est loin, flouter plus. Si c'est proche, flou moins. Si j'utilise le premier code, j'obtiens un flou étagé, c'est-à-dire si la profondeur est 0.3 flou trois fois, si la profondeur est 0.2 flou deux fois ....... Je veux utiliser les valeurs en virgule flottante pour obtenir un transition en douceur entre les valeurs de flou au lieu des valeurs étagées
Qu'est-ce que je fais mal? En outre, existe-t-il un autre moyen d'obtenir une transition en douceur entre les valeurs de flou.
Merci.