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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.![]()
Partager