p
u
b
l
i
c
i
t
é
publicité
+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Responsable 2D/3D/Jeux


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

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

    Informations forums :
    Inscription : mai 2008
    Messages : 18 766
    Points : 109 580
    Points
    109 580
    Billets dans le blog
    3

    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
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

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

    Informations forums :
    Inscription : mai 2002
    Messages : 353
    Points : 378
    Points
    378

    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
    18 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 18 766
    Points : 109 580
    Points
    109 580
    Billets dans le blog
    3

    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
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

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

    Informations forums :
    Inscription : mai 2002
    Messages : 353
    Points : 378
    Points
    378

    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