GLSL et textures

GLSL et textures - C++ - Programmation

Marsh Posté le 16-08-2010 à 15:12:47    

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 :
 

Code :
  1. uniform sampler2D texIndex;
  2. void main(void)
  3. {
  4. vec4 texColor = texture2D(texIndex, gl_TexCoord[0].st);


 
Je commence par appliquer un premier traitement qui modifie simplement la couleur du pixel :
 

Code :
  1. texColor = vec4(...); // Plus compliqué que ça bien sur...


 
Ensuite je dois appliquer un traitement qui déforme la texture selon une sinusoide. Je dois donc faire un truc du genre :
 

Code :
  1. vec2 newTexCoord = gl_TexCoord[0].st;
  2. newTexCoord .s = sin( ... );
  3. texColor = texture2D(texIndex, newTexCoord.st);
  4. }


 
Le problème est que si je fais ça je perds la modification de couleur que j'ai effectué juste avant!
Ma question est donc, comment accéder non pas à la texture initiale, via [I]texture2D(texIndex, distTexCoord.st)[/I], 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. ;)

Reply

Marsh Posté le 16-08-2010 à 15:12:47   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed