[Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Présentation des outils annexes/externes à Unity.
Avatar de l’utilisateur
ZJP
Messages : 5745
Inscription : 15 Déc 2009 06:00

[Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Message par ZJP » 12 Jan 2017 16:11

Salut,


Si comme moi vous utilisiez des outils externes comme Knald pour la génération de l'Ambient Occlusion, sachez qu'il existe des solutions pour obtenir le même résultat sous Unity. J'ai essayé avec (beaucoup de ) bonheur POLM (POLM - Per Object Lightmapper)

https://www.youtube.com/watch?v=MTZKqlEDO6A

https://www.youtube.com/watch?v=jnpxu-mAZNM

Image
Image

Asset Store.
Forum.
Documentation.

Contrairement à ses concurrents directs ( Per-Vertex Ambient Occlusion And Indirect Lighting Generator , VertexDirt - AO baking tool - que j'ai aussi testé -) il permet aussi la génération d'une map d'AO à partir de l'UV Mapping. Donc, l'exportation d'une texture. Les autres ne font que du Vertex Backing, ce qui implique un shader particulier pour retrouver l'AO sur le modèles.

Ici, le shader (maison), amélioration de celui-ci, que j'utilise actuellement avec cette AO Map. Bien sur, la Map fonctionne PARFAITEMENT avec le Standard Shader d'origine d'Unity.

Code : Tout sélectionner

// *********************************************
// Normal Bumped AO Illu PBR (c) ZJP for MOONS
// *********************************************
Shader "MOONS/PBR_Moons" 
{
	Properties 
	{
		_Color ("Color", Color) = (1,1,1,1)
		_MainTex ("Albedo (RGB)", 2D) = "white" {}
		// Normal *************************************
		_BumpMap ("Bumpmap", 2D) = "bump" {}
		_normalIntensity ("Normal Map Intensity", Range(0,5)) = 1.5
		// Normal *************************************

		// AO *****************************************
		_AOTex ("Ambient Occlusion", 2D) = "white" {}
		_AoIntensity("AO Intensity", Range(0,3)) = 1
		// AO *****************************************

		// Illu ***************************************
		_Illum ("Illumin (A)", 2D) = "white" {}
		_IlluPower("Illumin Power", Range(1,3)) = 1.0
		_IlluColor("Illumin Color", Color) = (1,1,1,1)	
		// Illu ***************************************
	}
	SubShader 
	{
		Tags { "RenderType"="Opaque" }
		LOD 300

		CGPROGRAM
			#pragma surface surf Standard fullforwardshadows

			#pragma target 3.0
			#pragma only_renderers d3d9

			fixed4 _Color;
			sampler2D _MainTex;

			// Normal *************************************
			sampler2D _BumpMap;
			float _normalIntensity;
			// Normal *************************************
			
			// AO *****************************************
			sampler2D _AOTex;
			float _AoIntensity;
			// AO *****************************************

			// Illu ***************************************
			sampler2D _Illum;
			float _IlluPower; 
			fixed4 _IlluColor;
			// Illu ***************************************

			struct Input 
			{
				float2 uv_MainTex;
			};

			void surf (Input IN, inout SurfaceOutputStandard o) 
			{
				fixed4 c  = tex2D (_MainTex, IN.uv_MainTex) * _Color;
				// L' AO !!!!! ***********************************************************
				half _AO = tex2D(_AOTex, IN.uv_MainTex).g;
				o.Albedo = c.rgb * LerpOneTo(_AO, _AoIntensity);
				// L' AO !!!!! ***********************************************************

				// Le Normal !!!!! *******************************************************
				float3 normalMap = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
				normalMap = float3(normalMap.x * _normalIntensity,  normalMap.y * _normalIntensity, normalMap.z );
				o.Normal  = normalMap;
				// Le Normal !!!!! *******************************************************

				// Le Glow !!!!! *********************************************************
				fixed4 illumination = tex2D(_Illum, IN.uv_MainTex);
				o.Emission = illumination.rgb * _IlluPower * illumination.a * _IlluColor; 
				// Le Glow !!!!! *********************************************************

				o.Smoothness = 0.0f;
				o.Metallic   = 0.0f;
				o.Occlusion  = 1.0f;
				o.Alpha      = c.a;
			}
		ENDCG
	} 
	FallBack "Diffuse"
}
// *********************************************
// Normal Bumped AO Illu PBR (c) ZJP for MOONS
// *********************************************
Honnêtement, l'AO change VRAIMENT la donne coté rendu. Le jour et la nuit sans jeu de mots. ;-)

Edit :

Image

Image
A gauche avec l'AO, à droite...sans. Le shader utilisé est celui-ci du post principal. Le rendu correspond parfaitement à la DA du projet.
Dernière édition par ZJP le 12 Jan 2017 19:22, édité 4 fois.

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: [Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Message par zugsoft » 12 Jan 2017 17:16

Je l'avais aussi acheté, mais je ne trouvais pas la différence si impressionnantes sur mes jeux Mobile.
Tu as des screenshots de comparaison sur tes projets ?

Dans mon jeu VR, j'ai essayé plusieurs configurations avec les posteffects d'AO, je préfère le rendu sans AO aussi.
Moon RTS

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Message par boubouk50 » 12 Jan 2017 17:31

Ça prend en compte la normalMap/HeightMap pour la génération de l'AO? Ou juste le mesh?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

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

Re: [Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Message par ZJP » 12 Jan 2017 17:39

boubouk50 a écrit :Ça prend en compte la normalMap/HeightMap pour la génération de l'AO? Ou juste le mesh?
Uniquement le mesh.

zugsoft a écrit :Tu as des screenshots de comparaison sur tes projets ?
Image
Image
A gauche avec l'AO, à droite...sans. Le shader utilisé est celui-ci du post principal. Le rendu correspond parfaitement à la DA du projet.

Premier post édité.

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: [Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Message par zugsoft » 12 Jan 2017 21:15

Sur la texture du bas, la difference est vraiment super, par contre pour celui du haut c'est mieux, mais sans plus.
Merci en tout cas pour nous montrer la difference.
Moon RTS

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

Re: [Tools] POLM, le "générateur" d'AO (Ambient Occlusion)

Message par ZJP » 12 Jan 2017 21:19

zugsoft a écrit :Sur la texture du bas, la difference est vraiment super, par contre pour celui du haut c'est mieux, mais sans plus.
Merci en tout cas pour nous montrer la difference.
La texture du bas est une toute blanche (un simple bmp de 256 x 256). Cela permet de bien mettre en évidence l'AO Map activée sur le modèle de gauche. ;-)

L'AO MAP utilisée :

Image

Répondre

Revenir vers « Les outils externes »