Dans: Jeux et Applications, Projet "Libra", Unity

Je ne fais que m’attaquer aux shaders dans Unity pour la première fois afin d’accomplir une simple nuances de gris sur l’écran entier.

Introduction

Il ya un an, un de mes amis m'a donné quelques liens vers de bons tutoriels pour l'apprentissage des shaders dans Unity. Je les ai gardés dans ma grande (et mal organisée) pile de bookmarks, en attendant le moment où je pourrais avoir besoin de créer des shaders pour mes jeux. Depuis que je suis en train de faire un roman visuel, apprendre à faire des shaders personnalisés n'est pas une priorité pour moi.

Cependant, dans les derniers jours, j'ai voulu créer un effet d'image pour quand nous montrons des flashbacks pour raconter de vieux événements au joueur.

J'ai senti qu'il était très important pour le joueur d'être en mesure de distinguer si nous sommes dans le présent vs dans un flashback. Un effet simple où l'écran est noir et blanc quand il s'agit d'un flashback devrait faire le travail.

Il ya quelques façons de créer l'effet de l'objectif en niveaux de gris. Vous pouvez créer cet effet en installant le post-processing stack package dans le magasin Unity. Tout ce que vous avez besoin est d'ajouter un effet d'image à votre camera et mettre la saturation à 0.

Cependant, c'est probablement overkill si c'est le seul effet d'image dont vous avez besoin. J'ai pensé à ce sujet et a décidé de regarder comment faire cet effet avec un shader de base à la place.

Les bases pour les Shaders

Permettez-moi de commencer cette section en disant que je ne sais rien quand on parle de shaders.

Je comprends à peine la surface de tout ça. Avant de lire à ce sujet, tout ce que je savais sur les shaders, c'est que vous pourriez faire des effets visuels étonnants avec eux. Dans mon esprit, il impliquait aussi des maths complexes et du code que je ne comprendrai pas même si vous m'avez donné un million d'années pour étudier tout cela.

Je ne peux pas vraiment expliquer quelque chose que je ne comprends pas, mais je vais dire que si vous voulez comprendre quoi que ce soit sur les shaders, vous avez besoin de regarder le travail des autres et comment ils accomplissent ces effets cool. Cet article ne vous apprendra pas comment faire des shaders.

Makin’ Stuff Look Good est une chaîne YouTube étonnant si vous êtes débutants. Bien qu'il ne soit pas régulièrement mis à jour, l'auteur explique très bien les bases (bien que je vais dire que vous devriez jeter un œil à la façon dont un shader est construit avant de regarder, il est plus facile de suivre par la suite.)

En regardant Shaders101 et Shaders102 de cette chaîne, j'ai réussi à créer l'effet d'image en niveaux de gris que je voulais.

L'effet d'image en niveaux de gris

Au début, j'ai pensé qu'on ne pouvait qu'utiliser de shaders sur les objets, mais j'ai appris que vous pouvez également les appliquer à des caméras. Vous pouvez mettre votre shader sur un matériel, puis appliquer ce matériel sur la sortie finale de votre caméra, en utilisant ce code.

(Remarque: ce code peut ne pas fonctionner pour toutes les platesformes. J'ai seulement essayé sur Windows. Sur mobile, ces effets d'image peuvent être assez chers sur la mémoire visuelle.)

Ce code ne fera pas grand-chose sans le shader de nuances de gris. Le shader suivant transforme toutes les couleurs en nuances de gris.

(si vous êtes intéressé par l'algorithme de niveaux de gris, vous pouvez regarder ici pour plus d'informations)

Mettez le shader sur un matérial, puis mettez ce matériel sur le script ci-dessus et vous êtes prêt!

Maintenant, tout ce que vous devez faire est de mettre le script sur une caméra, l'activer lorsque nécessaire et l'effet de de couleurs devrait fonctionner. Vous pouvez également le désactiver lorsque vous avez terminé de l'utiliser.

Résultat final:

Quoi d'autre peut être fait avec les shaders

Alors que j'utilise cet effet pour présenter un flashback pour le joueur, cet effet peut également être utilisé pour autre chose, comme pour créer une humeur troublante.

Je n'ai regardé que quelques vidéos sur les shaders et j'ai déjà beaucoup d'idées sur ce que je peux faire avec ces nouvelles connaissances. Bien qu'il y ait des gens qui sont beaucoup plus futés que moi quand il s'agit de créer et d'expliquer les shaders, je peux encore m'inspirer de leur travail et de la branche et voir ce que je peux faire aussi.

Quelques idées simples que j'ai:

  • Animer une texture simple sur un cube. Vous pouvez facilement recréer les [?] blocs de Mario en alternant entre différentes textures;
  • Créer un effet ondulé pour la zone chaude (ceci est couvert dans Shaders102);
  • Effets de surface d'eau!
  • Ombrage cellulaire (cell shading) (comme le jeu de Zelda: Wind Waker le fait)

Quelle est la suite pour moi?

Je vais probablement jeter un oeil à d'autres shaders plus tard. Comme je l'ai dit plus tôt, je me sens la meilleure façon d'apprendre shaders pour moi est de regarder le travail des autres.

De plus, je n'ai pas beaucoup de temps à consacrer à l'apprentissage des maths complexes. Je préfère apprendre des shaders que les autres font et de mettre plus de temps dans d'autres aspects de mon jeu, comme la bande sonore qui est dans le besoin urgent de mon attention. Dans les semaines à venir, je suis de retour dans toutes les chansons que j'ai écrit à ce jour pour notre projet Libra. Je vais essayer de les faire sonner mieux. J'ai hâte de partager plus à ce sujet plus tard. Restez à l'écoute!