Pourquoi les bouteilles de Half-Life : Alyx ont l'air si bonnes

Nous avons tous pris des passe-temps cette année. Et même si je suis sûr que ma vie a été enrichie par le marathon de The Crown et la projection astrale hors de mon corps le week-end, Matthew Wilde avait un projet de verrouillage un peu plus substantiel : il a fabriqué des shaders de bouteilles alcoolisées pour Half-Life : Alyx.

Les shaders ont été ajoutés au jeu dans un patch de mai, et ils ont immédiatement commencé à faire l'amour sur Internet. Il est facile de comprendre pourquoi : ils ont l'air vraiment, vraiment bien. Le shader rend les bouteilles transparentes, avec un liquide qui réagit lorsque vous secouez la bouteille. Avant le patch, les bouteilles faisaient un bruit de ballottement lorsqu'elles étaient secouées, mais sinon elles semblaient opaques.

Je voulais savoir comment fonctionnait le shader, et il n'y avait pas de meilleure personne à qui demander que Wilde lui-même.

J'ai passé une bonne partie du confinement à faire ce travail important. Boozy liquid shader, maintenant disponible dans la dernière mise à jour pour Half-Life: Alyx pic.Twitter.com/Iw9h98pmEg

– Matthew Wilde (@ habile) 28 mai 2020

Wilde est un développeur VFX, et il travaillait chez Valve quand Alyx était en développement – ​​mais sur Dota Underlords. Il a fait un shader de verre à vin pour le personnage de Dota Jull, qui a attiré l'attention de Scott Dalton dans l'équipe Half-Life: Alyx. Il y a beaucoup de bouteilles éparpillées dans Alyx, mais un niveau particulier se déroule dans une distillerie et oblige le joueur à interagir beaucoup avec les bouteilles.

Développer un shader qui rendrait les bouteilles pleines de liquide rendrait le niveau encore plus impressionnant. Et Wilde ne partirait pas de rien non plus : le jeu était essentiellement terminé, avec des éléments détaillés et un puissant système d'éclairage en place.

"Toutes les bouteilles existaient en tant que modèles, et elles étaient toutes magnifiquement texturées et elles ont fière allure", a déclaré Wilde. "Et donc tout de suite, nous avons pu voir que c'était vraiment prometteur."

Mais avec la date de sortie d'Alyx imminente, il n'y avait tout simplement pas le temps d'implémenter le nouveau shader sans causer de problèmes de performances.

"S'il n'y avait qu'une bouteille occasionnelle autour... cela n'aurait probablement pas été un problème », m'a dit Wilde. "Mais encore une fois, c'était ce niveau de distillerie qui avait des milliers d'accessoires et des milliers de bouteilles."

Le shader a été mis de côté pour être libéré, et bien que Wilde ait été déçu, il l'a pris dans la foulée. Half-Life : Alyx est sorti le 23 mars 2020. Le même jour, Jay Inslee, le gouverneur de l'État de Washington, a émis une ordonnance de séjour à domicile qui fermerait les bureaux de Valve à Bellevue.

"Et nous avons donc eu le temps tout à coup", a déclaré Wilde. "Le confinement nous a donné l'occasion de revenir sur des choses que nous n'avions pas réussi à faire auparavant."

Faire le shader

Les shaders sont des programmes qui indiquent aux objets 3D à quoi ils ressemblent. Ce shader spécifique est un pixel shader, qui indique à chaque pixel quelle couleur doit être, en fonction de la façon dont il est éclairé. Tout ce qui est rendu dans un jeu a un shader.

"C'est juste que certains shaders sont un peu plus impliqués que d'autres", m'a dit Wilde.

Les shaders finissent par rendre compte de beaucoup de détails que nous voyons. En fait, le rendu de quelque chose en 3D - toutes les rainures et tous les nœuds dans l'écorce des arbres, par exemple - prendrait beaucoup de temps et de performances. Mais un shader peut créer l'illusion d'une écorce d'arbre, d'une armure, d'une peau ou d'une mousse de bière dans une bouteille, même si l'objet sur lequel il est appliqué est simplement composé de polygones lisses et lisses.

Désormais installé à la maison, Wilde est revenu au shader. Alyx avait déjà un système d'éclairage, donc ce que le shader devait faire était de déterminer quelles valeurs à utiliser lorsque l'éclairage a été calculé. Le shader prend en compte les entrées telles que les couleurs de base, les textures et les reflets pour le liquide et la bouteille elle-même, puis les combine tous ensemble.

"Et puis ce que vous produisez est une autre couleur", a déclaré Wilde. "Vous le faites pour chaque pixel, et vous obtenez un résultat à la fin."

Combiner un liquide et une bouteille de bière dans Half-Life : Alyx GIF : Matthew Wilde/Valve

Le shader est avant tout le résultat d'une observation obsessionnelle. Wilde s'est littéralement assis dans son sous-sol, ramassant et jouant avec des bouteilles pour voir comment le liquide se comportait.

"Vous regardez un shader et vous voyez tout le travail qui y est consacré, et ce sont des pages et des pages de trucs, mais cela n'est jamais sorti de l'esprit de quelqu'un, vous savez , directement dans le fichier," Wilde m'a dit. "Il a toujours été question de le construire lentement... et puis obtenir des idées au fur et à mesure, en quelque sorte les esquisser."

Wilde ferait des observations de la bouteille réelle - la mousse qui se développe sur la bière, ou la façon dont le liquide capte la lumière - puis ajusterait ces entrées dans le shader afin que sa création reflète la réalité. C'était comme créer une peinture pointilliste, pixel par pixel. Notamment, il n'y a pas de simulation liquide qui se passe ici.

"C'est vraiment fait pour se comporter comme j'ai déterminé qu'il devrait se comporter, rien de plus réaliste que cela", a déclaré Wilde. "Il n'y a pas de simulation, c'est juste observé."

C'est pourquoi le libellé dans les notes de mise à jour d'Alyx est très intentionnel : « Les bouteilles semblent maintenant contenir du liquide à l'intérieur qui clapote lorsque vous les secouez."

Réflexion et réfraction

La cartographie des cubes est depuis longtemps la façon dont les jeux gèrent les réflexions, et même avec le lancer de rayons qui se profile dans notre avenir, cela ne changera pas du jour au lendemain. Une carte cubique est composée de six vues intégrées dans un cube. Selon l'endroit où la caméra du joueur est dirigée, le jeu tirera une vue approximative du cube pour créer un reflet. C'est pourquoi les miroirs ne fonctionnent pas vraiment dans les jeux - les cartes cubiques ne créent pas de reflets parfaits, et elles n'en ont vraiment pas besoin.

Il y a un excellent exemple de cela dans Spider-Man de Marvel sur PS4, où les réflexions sur les bâtiments peuvent montrer quelque chose à proximité, mais pas nécessairement la chose la plus précise. Nous sommes généralement tout à fait capables de suspendre l'incrédulité, car le reflet semble assez bon.

Ce shader d'alcool utilise une carte cubique pour créer des reflets, mais aussi pour créer l'illusion de la réfraction - qui est la lumière passant à travers un objet, plutôt que de rebondir dessus.

Les bouteilles ne sont pas transparentes. Mais ils ont l'air transparent, car Alyx tire la carte du cube pour vos coordonnées approximatives et projette cette image précuite sur le côté de la bouteille que vous regardez. Il vous montre une vue déformée de l'espace, mais c'est une illusion sauvage qui fonctionne absolument.

"Les utiliser pour une bouteille où les choses sont déjà un peu déformées, où tout est un peu sale... c'est en fait une très bonne façon de le faire », a déclaré Wilde. "Je pense que cela aide aussi que lorsque vous regardez du verre et du liquide, personne ne sache à quoi cela devrait ressembler, juste comme une chose instinctive. Vous acceptez juste quand vous commencez à regarder à travers une vitre et que les choses deviennent un peu bizarres."

Si vous vous collez une bouteille de vin à la figure, vous verrez qu'elle est en fait vide. Gif : Polygone via Valve

L'image de la carte cubique est doublement déformée là où le shader dit qu'il y a du liquide. Wilde combine des reflets sur des reflets pour donner l'impression qu'il y a deux surfaces : la bouteille en verre et le liquide "à l'intérieur".

Et c'est ainsi que vous obtenez l'illusion d'un liquide à l'intérieur d'une bouteille en verre transparent - alors qu'en fait, la bouteille est vide et opaque.

Faux physique

Ce que j'aime le plus dans ce shader, c'est qu'il est suffisamment détaillé pour dépasser notre seuil mental de réalisme - même si, encore une fois, il n'y a pas de simulation impliquée.

"Tout est truqué, tout est triché. Tout est en quelque sorte observé et modifié, et les valeurs modifiées jusqu'à ce que cela semble juste », a déclaré Wilde. "Quand je secoue une bouteille, [le liquide vacille un peu. Alors on le fait vaciller un peu, dans la mesure où l'oscillation a l'air à peu près correcte."

C'est cette oscillation qui a initialement retardé le shader, car il n'y avait pas de moyen efficace d'obtenir les informations dans le jeu. Au final, le coût des performances était négligeable, car les collègues de Wilde chez Valve ont réalisé qu'ils pouvaient stocker des données dans la couleur du vertex du shader.

La couleur du vertex est "une relique d'une époque antérieure à un éclairage et à des textures réalistes", m'a dit Wilde dans un e-mail. "Dans ce cas, c'était juste une couleur qui était appliquée sur l'ensemble. Et nous n'avons utilisé cette couleur pour rien."

Une bouteille de vodka dans Half-Life: Alyx Gif: Polygon via Valve

Et donc l'agitation (ou, professionnellement, la lenteur) du liquide, la direction de la gravité et la mousse ou les bulles, sont tous stockés dans ces canaux RVB inutilisés. Lorsque j'agite sauvagement une bouteille, la vitesse de la bouteille est utilisée pour provoquer l'agitation, ce qui donne l'impression que le liquide clapote. Les bulles ou la mousse sont également liées à la vitesse et diminuent progressivement lorsque le mouvement s'arrête. Mais tous les calculs les plus intensifs - éclairage, reflets, ombres - sont déjà effectués pour chaque objet du jeu, que le joueur devienne fou avec des bouteilles ou non.

Pourquoi ça réussit

Bien que travailler sur un projet de verrouillage impliquant de grandes quantités d'alcool puisse sembler isolant, lorsqu'il s'agissait de mettre en œuvre le shader et de résoudre le problème de performance, Wilde n'était pas seul - les effets visuels d'Alyx sont un effort d'équipe.

"Le succès de celui-ci vient, tout d'abord, du fait que les actifs eux-mêmes sont si bons pour commencer", a déclaré Wilde. "Quand vous écrivez un shader, certainement ce genre de shader... vous vous connectez à un pipeline existant et à des configurations d'éclairage existantes. Il s'agit donc d'essayer d'exploiter au mieux ce qui existe."

Secouer une bouteille peut être simple à faire dans la vraie vie, mais ce n'est pas si simple de faire réagir une bouteille virtuelle en nature. Avec le temps et des pouvoirs d'observation franchement impressionnants, les bouteilles d'alcool de Half-Life: Alyx se sont senties si bien que nous n'avons pas besoin de suspendre l'incrédulité lorsque nous les voyons. C'est le genre de pensée intelligente et créative dont le développement de jeux bénéficiera toujours, peu importe à quel point la technologie de pointe devient.

Laissez Vos Commentaires

Please enter your comment!
Please enter your name here