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

Développement 2D, 3D et Jeux Discussion :

Construire un monde avec les fonctions de distance en GLSL (Raymarching)


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut Construire un monde avec les fonctions de distance en GLSL (Raymarching)
    Un article d'Alexandre Mutel a été publiée la semaine dernière sur la technique de Raymarching et des DistanceFields.

    Cette semaine, l'équipe de la rubrique 2D/3D/Jeux vous propose une autre explication, accompagnée de plus de code (GLSL) de cette technique de rendu, facilement implémentable dans les shaders.

    Amusez-vous bien avec cette technique et n'hésitez pas à nous montrer vos expérimentations et résultats.

    Bonne lecture

    Voir aussi

    http://jeux.developpez.com/index/red...andre-Laurent/
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Hello,

    j'ai voulu faire joujou avec ton code sur shadertoy (site qui permet de tester en ligne).

    J'ai vu deux quoquilles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    vec3 n = vec3(d.x-distance_to_obj(p-e.xyy).x,
                      d.x-distance_to_obj(p-e.yxy).x,
                      d.x-distance_to_obj(p-e.yyx).x));
        N = normalize(n)

    a remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    vec3 n = vec3(d.x-distance_to_obj(p-e.xyy).x,
                      d.x-distance_to_obj(p-e.yxy).x,
                      d.x-distance_to_obj(p-e.yyx).x);
        N = normalize(n);

    ainsi que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // y est utilisé pour gérer les matériaux
        if (d.y==0)
    par
    // y est utilisé pour gérer les matériaux
    if (d.y==0.0)



    Par contre je sais pas par quoi remplacer ta première ligne vec2 q = ???

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Pour le ';' manquant, c'est corrigé. Pour la seconde, c'est une limitation de WebGL (enfin, c'est la norme, qui n'accepte pas les entier en constant).

    Pour la dernière question, je n'ai pas compris que quoi vous parliez
    Si c'est pour avoir les coordonnées de l'écran (souvent le cas), vous pouvez dans un shadertoy faire :
    Code glsl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    float aspect = screenResolution.x/screenResolution.y;
    	vec3 nearPlanePosition = vec3((gl_FragCoord.x - 0.5 * screenResolution.x) / screenResolution.x* 2.0  * aspect,
    							      (gl_FragCoord.y - 0.5 * screenResolution.y) / screenResolution.y * 2.0,
    							       0.0);
        // nearPlanePosition = (rotationMat * vec4(nearPlanePosition, 1)).xyz;
     
    	vec3 dir = normalize(nearPlanePosition - cameraPosition);
    Qui permet de retrouver les coordonnées en ayant juste la largeur et hauteur de la fenêtre.
    Dans ce cas présent, ce sera juste :
    Code glsl : Sélectionner tout - Visualiser dans une fenêtre à part
    vec2 q = vec2(gl_FragCoord.x/width,gl_FragCoord.y/height);
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    ok merci je vais tester

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/02/2011, 14h20
  2. problème avec les fonctions MidStr et LeftStr
    Par timsah dans le forum C++Builder
    Réponses: 1
    Dernier message: 07/02/2006, 10h07
  3. Réponses: 2
    Dernier message: 10/05/2005, 10h58
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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