Bonjour,
Petite question sur les shaders et le langage GLSL. :) (je suis débutant)
Je veux créer un fragment shader qui modifie une texture en lui appliquant plusieurs traitements successifs. En gros un traitement qui modifie la couleur des pixels, et un autre qui "déforme" la texture en affectant à des pixels la valeur de pixels voisins.
Je récupère sans problème un pixel de ma texture de la façon suivante :
Je commence par appliquer un premier traitement qui modifie simplement la couleur du pixel :Code:
1
2
3
4 uniform sampler2D texIndex; void main(void) { vec4 texColor = texture2D(texIndex, gl_TexCoord[0].st);
Ensuite je dois appliquer un traitement qui déforme la texture selon une sinusoide. Je dois donc faire un truc du genre :Code:texColor = vec4(...); // Plus compliqué que ça bien sur...
Le problème est que si je fais ça je perds la modification de couleur que j'ai effectué juste avant!Code:
1
2
3
4 vec2 newTexCoord = gl_TexCoord[0].st; newTexCoord .s = sin( ... ); texColor = texture2D(texIndex, newTexCoord .st); }
Ma question est donc, comment accéder non pas à la texture initiale, via texture2D(texIndex, distTexCoord.st), mais à la texture déjà modifiée précédemment?
J'espère avoir été clair, je pense qu'il s'agit d'un problème basique mais je débute en glsl et la documentation est difficile à trouver.
Merci d'avance. ;)