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 :
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.
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
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.
- _DIFF : Diffuse albédo.
_SPEC : Specular albédo.
_NORM : Normal map.
_RGB : R = Alpha, G = Roughness, B = Occlusion.
- _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.
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