2 points par GN⁺ 2025-01-05 | 1 commentaires | Partager sur WhatsApp
  • Introduction

    • Le rendu de contours dans les jeux vidéo est souvent utilisé pour des raisons esthétiques ou pour soutenir le gameplay. Par exemple, Sable s'en sert pour créer un style de bande dessinée, tandis que The Last of Us l'utilise pour mettre en évidence les ennemis.
  • Effet rim

    • Technique

      • L'effet de Fresnel permet de rendre un contour sur les bords d'un objet, avec une intensité plus forte au niveau de ces bords.
    • Implémentation

      • Le contour est rendu à l'aide d'un shader personnalisé implémentant l'effet de Fresnel. Cette approche convient bien aux objets aux formes douces comme les sphères ou les capsules, mais moins à ceux aux formes anguleuses comme les cubes.
  • Extrusion de sommets

    • Technique

      • Le contour est formé en utilisant une copie de l'objet d'origine. Les sommets de la copie sont extrudés pour la rendre plus grande que l'original.
    • Direction d'extrusion

      • En choisissant la direction de déplacement des sommets, on ajuste la taille de l'objet. Le contour est créé en déplaçant les sommets dans l'espace objet.
    • Espace d'extrusion

      • On peut déplacer les sommets dans l'espace objet ou dans l'espace de clipping. Un déplacement dans l'espace de clipping produit un contour uniforme.
    • Masquage

      • La face avant du maillage dupliqué est supprimée pour ne laisser visible que le contour.
  • Buffer de flou

    • Technique

      • La silhouette de l'objet est rendue dans un buffer, puis ce buffer est flouté pour former un contour.
    • Buffer de silhouette

      • Rendre l'objet en une couleur unie permet de générer un buffer de silhouette.
    • Passe de flou

      • Une passe de flou est utilisée pour dilater le buffer de silhouette, en recourant à un flou de boîte ou à un flou gaussien pour améliorer les performances.
    • Passe de contour

      • La silhouette floutée est combinée avec la scène d'origine pour former le contour.
  • Algorithme Jump Flood

    • L'algorithme Jump Flood est utilisé pour rendre les contours. Il permet de dessiner des contours larges avec un coût de performance réduit.
  • Détection de contours

    • Technique

      • Une passe en plein écran détecte les discontinuités de la scène et rend les contours.
    • Détection de discontinuités

      • Les opérateurs Roberts Cross ou Sobel sont utilisés pour détecter les discontinuités.
    • Sources de discontinuité

      • Les discontinuités sont détectées à partir de la profondeur, des normales et des textures de couleur pour former les contours.
    • Ajustement de la détection de contours

      • Les artefacts sont supprimés en ajustant le seuil utilisé pour détecter les discontinuités.
    • Source de discontinuité personnalisée

      • Fournir une source de discontinuité personnalisée permet de contrôler les contours.
  • Conclusion

    • Il existe cinq méthodes pour dessiner des contours, offrant un compromis entre performance, fidélité visuelle et réglages manuels.

1 commentaires

 
GN⁺ 2025-01-05
Avis Hacker News
  • J’ai lu avec beaucoup d’intérêt l’article sur le Jump Flood Algorithm. C’est plaisant d’explorer différentes approches au niveau du pixel.

    • C’est une méthode très astucieuse pour générer un SDF (Signed Distance Field). Le fait de pouvoir créer des contours d’une épaisseur choisie en temps linéaire est impressionnant.
    • Les SDF peuvent être utilisés de plusieurs façons, qu’ils soient vectoriels, basés sur des fonctions ou encore sur des texels/voxels. Houdini gère bien les SDF raster, et il existe aussi une version gratuite.
    • Les SDF sont utiles dans de nombreux domaines.
  • Il propose une méthode pour obtenir les contours en rendant le modèle en couleur unie puis en détectant les bords. Cela nécessite un passe de rendu supplémentaire.

  • Il s’intéresse à un projet de R&D sur le rendu 3D stylisé, avec plusieurs questions encore sans réponse.

    • Réduire le détail d’un modèle 3D rendu en style cartoon quand la caméra effectue un zoom arrière.
    • Rendre un arrière-plan 3D comme une aquarelle.
    • Représenter la fumée, les flammes, les arbres dans un jeu 3D stylisé.
    • Ajuster automatiquement le modèle avec une caméra en mouvement libre.
    • L’aspect idéal d’un éditeur de mesh et de décor dans un renderer 3D stylisé.
    • La possibilité de rendre du pixel art rétro depuis des modèles 3D simples.
    • Rendre le monde d’un jeu vidéo 3D stylisé plus physiquement crédible grâce à la stylisation.
  • Une technique similaire à un blur buffer a été développée pour le jeu Astral Divide, où l’antialiasing sert à générer les contours. C’est performant et facile à implémenter.

  • Il a la passion de l’art technique, et il attend l’amélioration du pipeline de compute shaders de Godot. La configuration actuelle des plugins du compositeur est assez complexe.

  • Je me demande si, après la polémique sur le prix d’Unity, les développeurs se sont tournés vers Unreal et Godot.

  • Il est passé du développement d’applications VR au développement web, mais il regrette la magie des graphismes 3D, des collisions et du travail des shaders.

  • Le rendu obtenu par détection de bords est vraiment très satisfaisant. Cela ressemble à une page du comic néerlandais Franka.

  • J’ai trouvé une excellente note sur la méthode de détection de bords proposée par un développeur de Mars First Logistics.

  • Suggestion d’une technique simple pour dessiner des contours

    • Créer un tableau stockant les bords propres à chaque face
    • Convertir les bords en espace de vue, puis dessiner les bords selon certaines conditions