Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - thoced

Pages: [1]
1
Tout d'abord, je vous souhaite à toutes et à tous, une merveilleuse nouvelle année 2015 !!!

Voici donc mon nouveau problème, je précise tout de même que je programme avec la JSFML (Binding JAVA)

J'ai créé un objet implémentant les interfaces Drawable et Transformable

Dans cet objet je crée un VertexArray contenant des Vertex formant des PrimitiveType.QUADS afin au final de générer une map contenant un ensemble de Tiles.

Jusque ici pas de problème.

Lorsque je dessine mon objet Map (Drawable) comme ceci :

window.clear(new Color(32,32,48));
window.draw(map);  // map étant mon objet drawable
window.display();
 

L'ensemble de ma map en TileSet ( 256 * 256) s'affiche correctement et lorsque je modifie la vue, je peux facilement effectuer des translations, Scale et Rotation...

J'ai besoin ensuite d'afficher ma scène non pas directement dans le RenderWindow mais dans un RenderTexture afin d'y effectuer quelques modifications par pixel shader.

Pour ce faire je procède ainsi :

RenderStates rstates = new RenderStates(Camera.View.getTransform());
// View étant l'objet obtenu depuis le RenderWindow permettant d'effectuer translation, rotation, ...

map.draw(renderText, rState);  // renderText étant la RenderTexture et rState étant le RenderStates

 

Dans le code de ma méthode Draw :

public void draw(RenderTarget renderTarget,RenderStates states)
        {
                RenderStates newStates = new RenderStates(
                        Transform.combine(states.transform, this.getTransform()));

                renderTarget.draw(listVertex,newStates);
        }
 

Le problème c'est que lorsque je procède ainsi, ma map en TileSet ne s'affiche qu'en partie (elle ne dépasse pas  la taille donnée au RenderTexture. (ici la taille de ma fenêtre 1024 * 768)

Je pensais que la multiplication des matrices de transformation de ma vue avec la matrice de transformation locale de ma map (qui est une matrice Transform.IDENTITY) allait résoudre le problème, ... mais non.

Pouvez-vous m'aider ?

Merci d'avance

THOCED


2
Graphique / lumiere et multitexturing
« le: Décembre 30, 2014, 03:57:30 pm »
Bonjour à toutes et à tous.

Je tente d appliquer par shader une texture comprenant un dégradé de lumiere afin de simuler dans ma scene principale un effet de lampe de poche.

Je passe donc a mon shader la texture de ma scene dessiner dans un rendertexture.

Comment dans le fragment shader pourrais je ensuite obtenir les bonnes coordonnées de la texture de ma scene afin de récupérer le bon pixel a melanger avec celui de la texture de la lampe ?

Est il possible d'utiliser le multitexturing et donc inscrire dans les vertex de mon sprite, 2 niveaux de coordonnées de textures ?

Merci d avance




3
Bonjour à toutes et à tous,

j'aurai besoin d'appliquer un pixel shader sur un convexshape lors de son affichage dans une rendertexture.

le but étant d'effectuer une dégradé sur un shadow texture.

Jusqu'a présent, j'ai créé un shadow map à l'aide de convershapes dans un rendertexture.

ces ombres sont réalisés à l'aide des côtés de mes formes et projetés en fonction de la position d'une lumière.

J'affiche ma scene principale également dans une deuxieme rendertexture.

et lors de l'affichage final dans le renderwindow, j'applique par pixel shader mon shadow map avec un dégradé en fonction de la distance avec la lumière.

Cela marche bien mais voulant par la suite utiliser plusieurs sources de lumières, j'aurai besoin d'effectuer les calculs en fonction de la lumière qui a généré l'ombre.

Pour ce faire, j'aurai aimé pouvoir précalculer mon shadow map déja dégradé à l'avance lors de sa création.

Lorsque je tente d'appliquer un shader lors de l'affichage du convexshape, celui-ci ne me rend pas l'image de l'ombre, je n'ai aucune erreur affiché mais aucun résultat non plus.

voici le bout de code.

Citer
/
/
cs -> étant un convershape
state -> contenant mon shader

_shader->setParameter("texture",sf::Shader::CurrentTexture);
_shader->setParameter("poslight",sf::vector2f(10,10));
_stencil->draw(cs,state);


ma question est donc la suivante, est-il possible d'appliquer un pixel shader directement lors de le l'affichage
du convexshape dans un rendertexture ? est-il logique de procéder ainsi ?

merci d'avance

4
Graphique / Texture non trouvé dans le shader (SFML 2.0)
« le: Juillet 29, 2012, 11:08:33 am »
Bonjour à tous,

je dois utiliser deux textures dans un shader, j'ai donc créé deux sampler2d nommés tex et tex2.

voici le code fragment :


uniform sampler2D tex;

uniform sampler2D tex2;

void main()
{
   

      vec4 texel = texture2D(tex,gl_TexCoord[0].st);

      vec4 mtexel = texture2D(tex2,gl_TexCoord[0].st);

        if(texel.rgb == vec3(0,0,0))
                texel.rgba = vec4(0.5,0.5,0.5,0.1);


    gl_FragColor =   texel;


}

dans mon appel voici ce que je fais:

                sf::RenderStates rs;
                rs.shader = _shader;
                _shader->setParameter("tex",sf::Shader::CurrentTexture);
                _shader->setParameter("tex2",_stencil.getTexture());
                app->draw(sp,rs);

lorsque je ne passe qu'une texture "tex", cela ne pose aucun probleme par contre lorsque je tente de passer les deux textures, lors de l'éxécution j'obtiens le message suivant affiché sur la console ::

Citer
Texture  "tex2" not found in shader

Quelqu'un a t il une explication à mon probleme ?

merci d'avance

5
Bonjour à tous,

je suis nouveau sur ce forum et débutant en SFML 2.0


Voici ma question.

J'essaye d'appliquer par Shader une texture de type shadow map. Je m'explique

Je crée une texture avec mes ombres portées, ensuite en post effet, je désire appliquer cette texture par
pixel shader.

Je bloque sur la méthode. Comment appliquer mon pixel shader sur l'ensemble du rendering, juste avant d'effecter la méthode display() de l'objet RenderWindow ?.

Je pensais effectuer ceci :

_shader->setParameter("tex",sf::Shader::CurrentTexture);
 
où tex contiendrait donc mon image final et ensuite effectuer ceci :

sf::RenderState rs;
rs.Shader = _shader;
sf::Sprite sp;
sp.setTexture(shadow->getShadow()->getTexture());
_app->Draw(sp,rs);

  où shadow->getShadow()->getTexture() me retourne un objet de type RenderTexture contenant ma shadow texture

Est ce bien la bonne solution ?




Merci d'avance pour vos réponses

Pages: [1]
anything