Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 4 sur 4
  1. #1
    Responsable 2D/3D/Jeux

    Avatar de LittleWhite
    Homme Profil pro Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 139
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 16 139
    Points : 76 073
    Points
    76 073

    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
    351
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : mai 2002
    Messages : 351
    Points : 338
    Points
    338

    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 :
    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 :
    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 :
    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 Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    16 139
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Laurent
    Localisation : France

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

    Informations forums :
    Inscription : mai 2008
    Messages : 16 139
    Points : 76 073
    Points
    76 073

    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 :
    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 :
    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
    351
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : mai 2002
    Messages : 351
    Points : 338
    Points
    338

    Par défaut

    ok merci je vais tester

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •