Antonov Suit - Physically Based Shader

Avatar de l’utilisateur
Charkes
Messages : 26
Inscription : 01 Août 2014 09:31

Antonov Suit - Physically Based Shader

Message par Charkes » 01 Août 2014 10:10

Bonjour,

Il y a un peu plus d'un an, j'ai commencé à faire des recherches sur ce qu'on appel aujourd'hui le PBR ( Physically Based Rendering ).

Après lecture de nombreuses présentations ( Hoffman, Lazarov, Lagarde et j'en passe ), j'ai décidé d'adapter le concept sur Unity.

Jusqu’à présent réservé à mon usage personnel et par manque de temps, j'ai n'ai pas pu en faire de release propre à l'usage d'autres utilisateurs.

Mais ça c'était avant !

Je vous présente l'Antonov Suit :

Image

Basé sur un workflow Metallic ( j'ai également ajouter le support pour le workflow spéculaire ), il est composé de trois shaders principaux ( Quatre si on compte la peau mais passons ! ), le Diélectrique, le Metallique et le Métallique et Diélectrique.

Le Diélectrique est destiné aux surfaces non conductrices ( Bois, Béton, Brique, Pierre, Plastique ).

Le Métallique pour les conducteurs ( Métal ).

Le Métallique et Diélectrique lui, possède les deux propriétés.

J'ai fait le choix de séparer conducteur et non conducteur parce qu'en pratique on a pas toujours besoin de métal et de béton sur un même asset.

Par exemple, le métal est complétement dépourvu de lumière diffuse ( métal pure ), donc pourquoi s'encombrer d'instructions inutiles et ne pas se servir d'un shader uniquement métallique.

Features actuelles :
  • Forward only
    Lightmap (Single and Directionnal)
    PBR rendering
    Specular Workflow
    Metallic/Metalness Workflow
    Pre integrated skin shader ( Eric Penner method ).
    Probe capture tool
    RGBM Encoding for cubemap ( Free and Pro )
    GPU based cubemap convolution using importance sampling.
    Box and sphere projection for cubemap with attenuation.
Infinite, Sphere and Box projection en action :

Image

Prochaines features :
  • Screen space reflection
    Billboard/Image reflection plane and its tool to capture reflection images.
    Screen space subsurface scattering ( Jimenez method )
    Full deferred rendering
    Wetness/Rain effect
    Glass shader
    Terrain and foliage shader
Fonctionnement :

Pour le Metallic workflow :
  • _COLOR : Contient à la fois l’albédo diffuse et la specular albédo ou l'un ou l'autre selon le shader.
    _NORM : Normal map.
    _RGB : R = Metallic, G = Roughness, B = Occlusion.
    _RGBA : R = Metallic, G = Roughness, B = Occlusion, A = Alpha.
Pour le Specular workflow :
  • _DIFF : Diffuse albédo.
    _SPEC : Specular albédo.
    _NORM : Normal map.
    _RGB : R = Alpha, G = Roughness, B = Occlusion.
Pour le Skin shader :
  • _DIFF ou _COLOR : Diffuse albédo.
    _NORM : Normal map.
    01_RGB : G = Roughness, B = Occlusion.
    02_RGB : R = Cavity, G = Distance de pénétration dans la peau, B = Masque pour le back scattering ( pas encore utilisé ).
    MicroBump_RGB = Micro occlusion.
    MicroBump_NORM = Micro detail en normal map.
GitHub : https://github.com/cCharkes/AntonovSuit

Packages :

Des samples pour bien se rendre compte du fonctionnement :

https://dl.dropboxusercontent.com/u/181 ... itypackage

https://dl.dropboxusercontent.com/u/181 ... Sample.zip

https://dl.dropboxusercontent.com/u/181 ... itypackage
Dernière édition par Charkes le 25 Août 2014 12:39, édité 9 fois.

Avatar de l’utilisateur
axel
Messages : 1924
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: Antonov Suit - Physically Based Shader

Message par axel » 01 Août 2014 10:31

Waouh, merci à toi c'est super sympa de partager tout ça!

Le rendu est vraiment nickel.

Si j'ai bien compris tes shaders ne fonctionnent qu'en Forward rendering?

Avatar de l’utilisateur
Charkes
Messages : 26
Inscription : 01 Août 2014 09:31

Re: Antonov Suit - Physically Based Shader

Message par Charkes » 01 Août 2014 10:35

Merci !

Alors oui pour l'instant en tout cas. Mais si tu es en Deferred ils fonctionneront quand même mais rendu en Forward.

Le soucis étant que le Deferred de Unity est limité et donc avoir un fresnel correct est compliqué. Je cherche à contourner le problème mais tant que je n'aurais pas de solution propre ça restera en Forward.
Dernière édition par Charkes le 01 Août 2014 10:51, édité 2 fois.

Avatar de l’utilisateur
axel
Messages : 1924
Inscription : 26 Avr 2012 09:10
Localisation : Lille - Dunkerque
Contact :

Re: Antonov Suit - Physically Based Shader

Message par axel » 01 Août 2014 10:36

C'est déjà super comme ça. Je vais tester ça :mrgreen:

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Antonov Suit - Physically Based Shader

Message par F@B » 01 Août 2014 10:45

hoooooo c'est beauuuuu! merci beaucoup pour le partage!!!! je vais tester tout ça moi aussi ! bravo
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

toto5100
Messages : 204
Inscription : 19 Déc 2011 20:34

Re: Antonov Suit - Physically Based Shader

Message par toto5100 » 01 Août 2014 11:17

Vraiment beaux ces shaders.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Antonov Suit - Physically Based Shader

Message par cayou66 » 01 Août 2014 15:20

Salut,
beau boulot ! Tu dois être au courant qu'unity 5 aura aussi son propre PBS.

Avatar de l’utilisateur
ZJP
Messages : 5748
Inscription : 15 Déc 2009 06:00

Re: Antonov Suit - Physically Based Shader

Message par ZJP » 02 Août 2014 02:23

@Charkes
Hooo!! Sympa de te voir ici. 8-) 8-)
Et merci pour ce "workflow" mieux détaillé.

Avatar de l’utilisateur
Loic Joint
Messages : 895
Inscription : 12 Déc 2011 11:49
Localisation : France (picardie)
Contact :

Re: Antonov Suit - Physically Based Shader

Message par Loic Joint » 02 Août 2014 10:28

Waou ca claque !! Chapeau :)

Petite question de la part d'un curieux, appréhende tu pas d'avoir du mal à sortir du lot entre le PBR d'usine de Unity 5 et d'autre déjà existant très populaire comme Lux ?

Autre question que je me suis posé en lisant le post (je la part d'un neophite en la matière cette fois lol), c'est quoi la différence entre Deferred et Forward rendering ?

Encore bravo pour ton taff, j'ai hâte d'inclure ton package à mon arsenal ! :)
Loic Joint - Graphiste pour le jeu vidéo

Mon portfolio :
http://www.loicjoint.com

toto5100
Messages : 204
Inscription : 19 Déc 2011 20:34

Re: Antonov Suit - Physically Based Shader

Message par toto5100 » 02 Août 2014 11:38

Loic Joint a écrit : Autre question que je me suis posé en lisant le post (je la part d'un neophite en la matière cette fois lol), c'est quoi la différence entre Deferred et Forward rendering ?
Je vais répondre à sa place lol
Dans le Forward, l'éclairage est calculé en fonction de chaque objet et de chaque lumière. Donc pour chaque nouvelle lumière, la scène est recalculée.
Cela impose donc une limitation : le nombre de lumières. Car le coup en performances du forward pour chaque lumière est nombre de pixels éclairés*nombre d'objets
On peut donc mettre 2-3 lumières sans un coup très élevé mais 50 lumières réduiront trop les performances.

C'est pour cela qu'a été créé le Deferred. Au lieu de calculer l'éclairage en fonction de chaque objet individuellement, on regroupe le tout en une seule "texture", non éclairée, et on calcule l'éclairage en fonction de chaque pixel de l'écran. Le coup du Deferred est plus élevé que le Forward pour un faible nombre de lumière (il nécessite au moins 2 pré-passes), mais comme le coup est le nombre de pixels de l'écran, l'impact est fixe.
Avec le Deferred, ce n'est pas le nombre de lumière qui compte, mais leur taille. On peut donc avoir 150 petites lumières sans un coup élevé.

L'inconvénient du Deferred est qu'il gère mal la transparence et que toute la scène est éclairée de la même manière (avec la même méthode) : c'est pour cela que beaucoup de shaders ne sont pas compatibles Deferred.
Pour pouvoir utiliser des algorithmes d'éclairage différents de ceux utilisés dans le deferred, il faudrait modifier la manière dont Unity fait le rendu du Deferred.
C'est pour ça que dans Unity 5, ils ont fait une refonte complète du rendu deferred, pour qu'il marche en PBR.

Répondre

Revenir vers « Vos créations, jeux, démos... »