IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

couper texture (shader)


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Par défaut couper texture (shader)
    Bonjour, j'aimerais couper une texture de sorte à avoir la partie droite de la texture. Mon buffer est composé de vec2 à droite les txCoords et à gauche vertPos pour couper la texture je dois modifier certains des vec2 de mes txCoords

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       var quadVert = 
    	[
                -1.0, 1.0,           0.0, 0.0, //celle là x + 0.5 par ex
    	    -1.0, -1.0,          0.0, 1.0, //celle là x + 0.5 par ex
    	     1.0, -1.0,          1.0, 1.0,
    	     1.0, -1.0,          1.0, 1.0, 
    	     1.0, 1.0,           1.0, 0.0, 
    	     -1.0, 1.0,          0.0, 0.0, //celle là x + 0.5 par ex
    	];
    ça donnerait ça
    _____________
    |XXXX|OOOO|
    |XXXX|OOOO|
    |XXXX|OOOO|

    donc je me demande s'il faut que je passe les txCoords comme un mat4 en tant qu'uniforme sachant que ça texture un simple rectangle 2D ou s'il existe une technique pour apliquer des vec2 qu'à certaines vertices. sachant que mon shader texture également des rectangle avec des textures complètes. merci d'avance.

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Salut!

    Pour obtenir le résultat que tu souhaites, le plus aisé, je pense, est de découper ton quad en 2 :
    Pour l'instant tu as ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     _____
    |\    |
    | \   |
    |  \  |
    |   \ |
    |____\|
    Et il te faut ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     _____ _____
    |\    |\    |
    | \   | \   |
    |  \  |  \  |
    |   \ |   \ |
    |____\|____\|
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Par défaut
    ce que je voudrais c'est n'utiliser qu'un seul buffeur pour toutes mes texture et passer par un uniform pour chacunes des textures

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Alors tu peux passer une variable uniform disant si la texture est coupée ou non, et effectuer la découpe dans le fragment shader.
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    in vec2 texCoord;
     
    uniform int cutTexture;
    uinform sampler2D diffuse;
     
    out vec4 fragColour;
     
    void main()
    {
      fragColour = texture( diffuse, texCoord );
     
      if ( cutTexture != 0 && texCoord.x > 0.5 )
      {
        fragColour = vec4( 0.0, 0.0, 0.0, 1.0 );
      }
    }
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Par défaut
    je me suis mal exprimé je voudrais que la texture soit coupée mais remplisse tout le rectangle

  6. #6
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 034
    Billets dans le blog
    12
    Par défaut
    Ben tu multiplies les coordonnées de texture, du coup (par 2, si tu ne veux voir que la moitié de la texture sur ton quad)
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. volume texture et vertex shader
    Par J&B dans le forum DirectX
    Réponses: 1
    Dernier message: 30/05/2006, 19h11
  2. Réponses: 10
    Dernier message: 13/04/2006, 15h54
  3. Réponses: 1
    Dernier message: 06/04/2006, 17h04
  4. Texture + LookUp Table + Shader + extensions
    Par exxos dans le forum OpenGL
    Réponses: 7
    Dernier message: 01/09/2005, 17h14
  5. Shader distortion texture
    Par Dranor dans le forum DirectX
    Réponses: 13
    Dernier message: 28/07/2004, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo