Pixel Lo-fi dans Unity

image

Le style visuel de mon jeu en cours de développement LAUNDRY GAME (oui, c'est une publicité sans scrupules) est basé sur de grands pixels clairs en 3D. J'adore la 3D basse résolution. On m'a posé beaucoup de questions sur la façon dont je l'ai fait, j'ai donc décidé d'écrire un tutoriel.

Remarque: ce n'est que ma décision! Il existe des méthodes utilisant des shaders, des blits graphiques et d'autres astuces, mais pour mon petit projet solo, une telle solution était tout à fait suffisante.

Ajout 1: le gars intelligent Pete Brisburn a envoyé un script ici au cas où vous n'aimeriez pas l'astuce «quad dans le ciel» (étapes 4 à 6)!

Étape 1: préparation de la scène source



Vous devez d'abord préparer la scène! J'ai créé ce petit cube avec mon ami oiseau Oscar J. Ruffles . Il court autour du cube et hurle constamment. (Ce ne sont que le contrôleur de personnage et l'animateur connectés ensemble.)

Mais regardez ces lignes de lissage dégoûtantes! Fu, débarrassons-nous d'eux.

Étape 2: retirer les caméras MSAA



Mettez en surbrillance Appareil photo principal et décochez la case Autoriser MSAA . Comme vous pouvez le voir, les pixels sont beaucoup plus nets. Mais il n'y a pas encore de mise à l'échelle! Autrement dit, tous les pixels seront petits. Il doit être corrigé.

Étape 3: rendre la caméra dans la texture de rendu



Je fais un zoom avant (pour obtenir d'énormes pixels nets ) en utilisant RenderTexture et en rendant la caméra principale dans cette texture. Cela nous permettra d'utiliser cette texture de rendu comme n'importe quelle texture ordinaire!


Voici les options que j'utiliserai pour ma RenderTexture . La taille est la taille à laquelle nous zoomons. Plus le nombre est petit, plus les pixels sont grands. Pour les deux valeurs, j'utilise généralement des nombres compris entre 300 et 600 (excellent Celeste , par exemple, effectue un zoom de 320x200).

Le mode filtre est un moyen d'effectuer une montée / descente d'échelle. Le mode «Point» n'ajoute pas d'anticrénelage, c'est-à-dire qu'il préserve la netteté des pixels dont nous avons tant besoin.

Mais que s'est-il passé?


Maintenant, nous rendons la caméra non pas à l'écran, mais dans RenderTexture, donc rien n'est rendu à l'écran!

Pour résoudre ce problème, nous devons configurer une autre caméra , mais cette fois un peu différente.

Étape 4: créer une caméra zoom + quad



Commençons par créer une nouvelle caméra dans la scène (appelons-la QuadCamera ) et attachons-lui un quad 3D comme un enfant.

Étape 5: placez-le quelque part dans le vide



Ensuite, nous devons prendre la QuadCamera et la pousser quelque part. Peu importe où, l'essentiel est qu'il ne devrait jamais être visible depuis la caméra principale . Je le soulève généralement haut dans le ciel ou je l'abaisse profondément.

Étape 6: Fixez la texture de rendu au Quad et placez-la devant la caméra



Ensuite, nous prenons le quad. J'ai défini Sprites-Default pour cela (un matériau Unity standard qui n'est pas affecté par l'éclairage) afin qu'il ne soit pas affecté par un éclairage aléatoire dans la scène. Faites ensuite glisser la texture de rendu sur le quad. Maintenant, quad montre notre scène! Ensuite, nous déplaçons le quad pour qu'il se trouve devant la QuadCamera (la caméra qui rend maintenant l'écran cible).


Comme vous pouvez le voir, l'échelle de rendu a maintenant été augmentée! Oscar peut constamment cliquer sur son bec de pixels! Mais en même temps, nous nous sommes beaucoup plus rapprochés de sa tête.

Étape 7: ajuster les caméras



À la dernière étape, revenons à ma caméra principale et configurons-la pour que nous puissions voir la même chose auparavant. Ici, vous pouvez augmenter la taille de la texture de rendu afin que les pixels deviennent légèrement plus petits, ou la réduire, de sorte que seuls 7 pixels tiennent sur l'écran. Il est temps d'expérimenter, trouvez ce qui vous convient personnellement.

Bonus: assurez-vous que les textures ne sont pas floues



Comme nous l'avons vu, la texture du modèle (le grand œil d'Oscar) s'est estompée pendant tout ce temps. Cela est dû au fait que lors de l'importation de textures dans Unity, des paramètres standard sont sélectionnés pour générer des textures de mip et une mise à l'échelle fluide. Mais nous n'en avons pas besoin. Par conséquent, lors de l'importation de textures, vous devez désactiver Générer des mip maps et sélectionner le mode Point pour le mode Filtre .

Source: https://habr.com/ru/post/fr465479/


All Articles