Scripter le Nbump

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Amconline
Messages : 32
Inscription : 03 Mai 2017 11:10

Scripter le Nbump

Message par Amconline » 03 Mai 2017 11:57

Bonjour !
J'ai besoin de modifier en temps réel (via un script, donc), la puissance d'un bump dans un matériau.
Je m'explique : je travaille sur un personnage avec des expressions faciales. C'est pas du Hi-poly, du coup je n'ai pas beaucoup de subdivision au niveau du front.
J'ai besoin de créer des rides sur son front pour simuler les plissements de la peau. Ces rides ne peuvent pas être en vrai relief 3D, à cause du peu de poly dont je dispose.
J'ai donc besoin de creuser, tirer, etc sur la texture, et donc j'ai pensé au bump, ou Nbump.
Globalement, voici l'effet que je cherche (même si cet exemple ne vient pas de chez moi) :
https://www.youtube.com/watch?v=YPMqDbLEFrY
Je sais swaper une texture principale. Mais je n'arrive pas à cibler les autres éléments qui définissent un matériaux.
Si on pouvait juste me dire comment les cibler, ça serait top ! Je travaille avec Lux2.01 perso, mais je vais aussi essayer fast fake skin et autre SSSL...

Je travaille en JS.

Merci les gens ! :)
Aymeric

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

Re: Scripter le Nbump

Message par boubouk50 » 03 Mai 2017 12:40

Je pense que tu peux gérer cela directement dans le shader avec un facteur de puissance.
En soi, la NormalMap est un tableau de vecteurs. Lorsque ceux-ci sont récupérés, il est possible de les modifier à la volée. Pour ce faire, je pense qu'il faut multiplier les axes x et y (donc couleur r et g) par le facteur d'intensité mis en paramètre puis de normaliser le vecteur.
"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

Amconline
Messages : 32
Inscription : 03 Mai 2017 11:10

Re: Scripter le Nbump

Message par Amconline » 03 Mai 2017 14:40

Ok merci !

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

Re: Scripter le Nbump

Message par ZJP » 03 Mai 2017 15:46

Dans le shader posté ici, il y a un paramètre d'intensité de la Normal Map.

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Scripter le Nbump

Message par Max » 03 Mai 2017 15:51

Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

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

Re: Scripter le Nbump

Message par ZJP » 03 Mai 2017 16:03

Tout simplement... :-D

Amconline
Messages : 32
Inscription : 03 Mai 2017 11:10

Re: Scripter le Nbump

Message par Amconline » 04 Mai 2017 14:39

Merci, mais le standard shader n'est pas assez réaliste pour la peau... :)

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

Re: Scripter le Nbump

Message par ZJP » 04 Mai 2017 14:52

Montre nous les sources du shader utilisé.

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

Re: Scripter le Nbump

Message par boubouk50 » 04 Mai 2017 15:04

Amconline a écrit :Merci, mais le standard shader n'est pas assez réaliste pour la peau... :)
Le but n'est pas de partir du Standard Shader (ou de l'autre shader donné en lien), mais de récupérer la partie qu'il te faut pour pouvoir jouer sur l'intensité de la normalMap.
"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

Amconline
Messages : 32
Inscription : 03 Mai 2017 11:10

Re: Scripter le Nbump

Message par Amconline » 05 Mai 2017 09:28

ZJP a écrit :Montre nous les sources du shader utilisé.
Alors je suis nouveau sur les Shaders, donc j'espère que c'est bien ça...

Code : Tout sélectionner

Shader "Lux Translucent (Specular setup)"
{

	Properties
	{
		// How to treat the detail texture
		[Toggle(GEOM_TYPE_BRANCH_DETAIL)] _UseMixMapping ("Use Mix Mapping", Float) = 0.0
		[Toggle(GEOM_TYPE_LEAF)] _MixMappingControl("Use Detail Map to controle Mix Mapping ", Float) = 0.0
		[Toggle(EFFECT_HUE_VARIATION)] _DoubleSided("Double Sided", Float) = 0.0

		// Lighting
	//	[MaterialEnum(Standard,0,Translucent,1,Anisotropic,2)] _Lighting ("Lighting", Range(0,2)) = 0
		_Lighting ("Lighting", Float) = 1

		_Color("Color", Color) = (1,1,1,1)
		_MainTex("Albedo", 2D) = "white" {}
		_Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5

		_DiffuseScatteringEnabled ("Diffuse Scattering Enabled", Float) = 0.0
		_DiffuseScatteringCol("Diffuse Scattering Color", Color) = (0,0,0,0)
		_DiffuseScatteringBias("Scatter Bias", Range(0.0, 0.5)) = 0.0
		_DiffuseScatteringContraction("Scatter Contraction", Range(1.0, 10.0)) = 8.0
		_DiffuseScatteringCol2("Diffuse Scattering Color2", Color) = (0,0,0,0)
		_DiffuseScatteringBias2("Scatter Bias", Range(0.0, 0.5)) = 0.0
		_DiffuseScatteringContraction2("Scatter Contraction", Range(1.0, 10.0)) = 8.0

		_Glossiness("Smoothness", Range(0.0, 1.0)) = 0.5
		_SpecColor("Specular", Color) = (0.2,0.2,0.2)
		_SpecGlossMap("Specular", 2D) = "white" {}

		_BumpScale("Scale", Float) = 1.0
		_BumpMap("Normal Map", 2D) = "bump" {}

		_Parallax ("Height Scale", Range (0.005, 0.1)) = 0.02
		// _Parallax ("Height Scale", Range (0.005, 0.08)) = 0.02
		_ParallaxMap ("Height Map", 2D) = "black" {}
		_ParallaxTiling ("Parallax Tiling", Float) = 1
		[Toggle(EFFECT_BUMP)] _UsePOM("Use POM", Float) = 0.0
		_LinearSteps("Linear Steps", Range(4, 40.0)) = 20

		_OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
		_OcclusionMap("Occlusion", 2D) = "white" {}

		_EmissionColor("Color", Color) = (0,0,0)
		_EmissionMap("Emission", 2D) = "white" {}
		
		_DetailMask("Detail Mask", 2D) = "white" {}

		_DetailAlbedoMap("Detail Albedo x2", 2D) = "grey" {}
		_DetailNormalMapScale("Scale", Float) = 1.0
		_DetailNormalMap("Normal Map", 2D) = "bump" {}

		_Color2("Color 2", Color) = (1,1,1,1)
		_Glossiness2("Smoothness", Range(0.0, 1.0)) = 0.5
		_SpecColor2("Specular", Color) = (0.2,0.2,0.2)
		_SpecGlossMap2("Specular", 2D) = "white" {}

		[Enum(UV0,0,UV1,1)] _UVSec ("UV Set for secondary textures", Float) = 0


		[Toggle(GEOM_TYPE_BRANCH)] _UseCombinedMap ("Use combined Map", Float) = 0.0
		_CombinedMap("Combined Map", 2D) = "white" {}

		_TranslucencyStrength("Translucency", Range(0.0, 1.0)) = 0.5
		_ScatteringPower ("Scattering Power", Range(0,8)) = 4

		// Snow
		[Enum(Disabled,0,Enabled,1)] _Snow ("Snow", Float) = 0
		_SnowAccumulation("Snow Accumulation", Vector) = (0,1,0,0)
		_SnowSlopeDamp("Snow Slope Damp", Range (0.0, 2.0)) = 0.75
		_SnowTiling ("Snow Tiling", Vector) = (2,2,0,0)
		_SnowNormalStrength ("Snow Normal Strength", Range (0.0, 2.0)) = 1.0
		_SnowMaskTiling ("Snow Mask Tiling", Vector) = (0.3,0.3,0,0)
		_SnowDetailTiling ("Snow Detail Tiling", Vector) = (4.0,4.0,0,0)
		_SnowDetailStrength ("Snow Detail Strength", Range (0.0, 1.0)) = 0.3
		_SnowOpacity("Snow Opacity", Range (0.0, 1.0)) = 0.5 

		// Wetness
		[Enum(None,0,Simple,1,Ripples,2,Flow,3,Full,4)] _Wetness ("Wetness and Rain", Float) = 0

		[Enum(Vertex Color,0,Heightmap(R),1)] _PuddleMask ("Puddlemask", Float) = 0
		_PuddleMaskTiling ("Puddle Mask Tiling", Float) = 1
		_WaterSlopeDamp("Water Slope Damp", Range (0.0, 1.0)) = 0.5

		_Lux_FlowNormalTiling("Flow Normal Tiling", Float) = 2.0
		_Lux_FlowSpeed("Flow Speed", Range (0.0, 2.0)) = 0.05
		_Lux_FlowInterval("Flow Interval", Range (0.0, 8.0)) = 1
		_Lux_FlowRefraction("Flow Refraction", Range (0.0, 0.1)) = 0.02
		_Lux_FlowNormalStrength("Flow Normal Strength", Range (0.0, 2.0)) = 1.0
		
		_WaterColor("Water Color", Color) = (0,0,0,0)
		_WaterAccumulationCracksPuddles("Water Accumulation in Cracks and Puddles", Vector) = (0,1,0,1)

		_WaterColor2("Water Color 2", Color) = (0,0,0,0)
		_WaterAccumulationCracksPuddles2("Water Accumulation in Cracks and Puddles", Vector) = (0,1,0,1)

		_SyncWaterOfMaterials("Sync Water Of Materials", Float) = 0

		// Blending state
		[HideInInspector] _Mode ("__mode", Float) = 0.0
		[HideInInspector] _SrcBlend ("__src", Float) = 1.0
		[HideInInspector] _DstBlend ("__dst", Float) = 0.0
		[HideInInspector] _ZWrite ("__zw", Float) = 1.0

		// Culling
		[HideInInspector] _Cull ("__cull", Float) = 3.0
		[HideInInspector] _CullShadowPass ("__cull", Float) = 3.0
	}

	CGINCLUDE
		#define UNITY_SETUP_BRDF_INPUT SpecularSetup
	ENDCG

	SubShader
	{
		Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }
		LOD 300
	

		// ------------------------------------------------------------------
		//  Base forward pass (directional light, emission, lightmaps, ...)
		Pass
		{
			Name "FORWARD" 
			Tags { "LightMode" = "ForwardBase" }

			Blend [_SrcBlend] [_DstBlend]
			ZWrite [_ZWrite]
			Cull [_Cull]

			CGPROGRAM
			#pragma target 3.0
			// TEMPORARY: GLES2.0 temporarily disabled to prevent errors spam on devices without textureCubeLodEXT
			#pragma exclude_renderers gles
			
			// -------------------------------------
					
			//	#pragma shader_feature _NORMALMAP
			#define _NORMALMAP
			#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
			#pragma shader_feature _EMISSION
			#pragma shader_feature _SPECGLOSSMAP
			#pragma shader_feature ___ _DETAIL_MULX2
			#pragma shader_feature _PARALLAXMAP

			// Lux uses spped tree's shader keywords
			// Do we use Mix Mapping?
			#pragma shader_feature _ GEOM_TYPE_BRANCH_DETAIL
			// Which mixmapping mode?
			#pragma shader_feature _ GEOM_TYPE_LEAF
			// Do we have a combined map?
			#pragma shader_feature _ GEOM_TYPE_BRANCH
			// Do we have a 2nd SpecGlossMap?
			#pragma shader_feature _ GEOM_TYPE_FROND
			// Double Sided?
			#pragma shader_feature _ EFFECT_HUE_VARIATION
			// POM?
			#pragma shader_feature _ EFFECT_BUMP
			// Lighting: Standard / Translucent / Anisotropic
			// #pragma shader_feature _ LOD_FADE_PERCENTAGE 
			// LOD_FADE_CROSSFADE
			#define LOD_FADE_PERCENTAGE
			// Wetness
			#pragma shader_feature _ _WETNESS_SIMPLE _WETNESS_RIPPLES _WETNESS_FLOW _WETNESS_FULL
			// Puddle Mask from vertex colors or height map? LOD_FADE_CROSSFADE: puddle mask has same tiling as heigh map
			#pragma shader_feature _ GEOM_TYPE_MESH LOD_FADE_CROSSFADE
			// Snow
			#pragma shader_feature _ _SNOW

			// Lux Area Lights
			#pragma multi_compile __ LUX_AREALIGHTS
			
			#pragma multi_compile_fwdbase
			//#pragma multi_compile_fog

			#pragma vertex vertForwardBase
			#pragma fragment fragForwardBase

			#define LUX_STANDARDSHADER
			#include "../Lux Core/Lux Config.cginc"
			#include "Lux_StandardCore.cginc"

			ENDCG
		}
		// ------------------------------------------------------------------
		//  Additive forward pass (one light per pass)
		Pass
		{
			Name "FORWARD_DELTA"
			Tags { "LightMode" = "ForwardAdd" }
			Blend [_SrcBlend] One
			Fog { Color (0,0,0,0) } // in additive pass fog should be black
			ZWrite Off
			ZTest LEqual
			Cull [_Cull]

			CGPROGRAM
			#pragma target 3.0
			// GLES2.0 temporarily disabled to prevent errors spam on devices without textureCubeLodEXT
			#pragma exclude_renderers gles

			// -------------------------------------

			
			//	#pragma shader_feature _NORMALMAP
			#define _NORMALMAP
			#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
			#pragma shader_feature _SPECGLOSSMAP
			#pragma shader_feature ___ _DETAIL_MULX2
			#pragma shader_feature _PARALLAXMAP

			// Lux uses spped tree's shader keywords
			// Do we use Mix Mapping?
			#pragma shader_feature _ GEOM_TYPE_BRANCH_DETAIL
			// Which mixmapping mode?
			#pragma shader_feature _ GEOM_TYPE_LEAF
			// Do we have a combined map?
			#pragma shader_feature _ GEOM_TYPE_BRANCH
			// Do we have a 2nd SpecGlossMap?
			#pragma shader_feature _ GEOM_TYPE_FROND
			// Double Sided?
			#pragma shader_feature _ EFFECT_HUE_VARIATION
			// POM?
			#pragma shader_feature _ EFFECT_BUMP
			// Lighting: Standard / Translucent / Anisotropic
			// #pragma shader_feature _ LOD_FADE_PERCENTAGE 
			// LOD_FADE_CROSSFADE
			#define LOD_FADE_PERCENTAGE
			// Wetness
			#pragma shader_feature _ _WETNESS_SIMPLE _WETNESS_RIPPLES _WETNESS_FLOW _WETNESS_FULL
			// Puddle Mask from vertex colors or height map? LOD_FADE_CROSSFADE: puddle mask has same tiling as heigh map
			#pragma shader_feature _ GEOM_TYPE_MESH LOD_FADE_CROSSFADE
			// Snow
			#pragma shader_feature _ _SNOW

			// Lux Area Lights
			#pragma multi_compile __ LUX_AREALIGHTS
			
			#pragma multi_compile_fwdadd_fullshadows
			//#pragma multi_compile_fog

			#pragma vertex vertForwardAdd
			#pragma fragment fragForwardAdd

			#define LUX_STANDARDSHADER
			#include "../Lux Core/Lux Config.cginc"
			#include "Lux_StandardCore.cginc"

			ENDCG
		}
		// ------------------------------------------------------------------
		//  Shadow rendering pass
		Pass {
			Name "ShadowCaster"
			Tags { "LightMode" = "ShadowCaster" }
			
			ZWrite On ZTest LEqual
			// TODO: make this efficient
			Cull [_CullShadowPass]

			CGPROGRAM
			#pragma target 3.0
			// TEMPORARY: GLES2.0 temporarily disabled to prevent errors spam on devices without textureCubeLodEXT
			#pragma exclude_renderers gles
			
			// -------------------------------------

			#pragma shader_feature _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON
			#pragma shader_feature ___ _DETAIL_MULX2
			#pragma shader_feature _PARALLAXMAP
			
			// Do we use Mix Mapping?
			#pragma shader_feature _ GEOM_TYPE_BRANCH_DETAIL
			// Which mixmapping mode?
			#pragma shader_feature _ GEOM_TYPE_LEAF
			// Do we have a combined map?
			#pragma shader_feature _ GEOM_TYPE_BRANCH
			// POM?
			#pragma shader_feature _ EFFECT_BUMP
			// Double Sided?
			#pragma shader_feature _ EFFECT_HUE_VARIATION
			
			#pragma multi_compile_shadowcaster

			#pragma vertex vertShadowCaster
			#pragma fragment fragShadowCaster

			#define LUX_STANDARDSHADER
			#include "../Lux Core/Lux Config.cginc"
			#include "LuxStandardShadow.cginc"

			ENDCG
		}
		
		// ------------------------------------------------------------------
		// Extracts information for lightmapping, GI (emission, albedo, ...)
		// This pass it not used during regular rendering.
		Pass
		{
			Name "META" 
			Tags { "LightMode"="Meta" }

			Cull [_Cull]

			CGPROGRAM
			#pragma target 3.0
			#pragma vertex vert_meta
			#pragma fragment frag_meta

			#pragma shader_feature _EMISSION
			#pragma shader_feature _SPECGLOSSMAP
			#pragma shader_feature ___ _DETAIL_MULX2
			#pragma shader_feature _PARALLAXMAP

			// Do we use Mix Mapping?
			#pragma shader_feature _ GEOM_TYPE_BRANCH_DETAIL
			// Which mixmapping mode?
			#pragma shader_feature _ GEOM_TYPE_LEAF
			// Do we have a 2nd SpecGlossMap?
			#pragma shader_feature _ GEOM_TYPE_FROND
			// Double Sided?
			#pragma shader_feature EFFECT_HUE_VARIATION
			// POM?
			#pragma shader_feature _ EFFECT_BUMP
			// Wetness
			#pragma shader_feature _ _WETNESS_SIMPLE _WETNESS_RIPPLES _WETNESS_FLOW _WETNESS_FULL
			// Puddle Mask from vertex colors or height map? LOD_FADE_CROSSFADE: puddle mask has same tiling as heigh map
			#pragma shader_feature _ GEOM_TYPE_MESH LOD_FADE_CROSSFADE
			// Snow
			#pragma shader_feature _ _SNOW

			#define LUX_STANDARDSHADER
			#include "../Lux Core/Lux Config.cginc"
			#include "LuxStandardMeta.cginc"
			ENDCG
		}
	}

	FallBack "VertexLit"
	CustomEditor "LuxStandardShaderGUI"
}
 ! Message de : boubouk50
Merci d'utiliser les balises

Code : Tout sélectionner

 pour encapsuler le code (5e bouton du menu d'édition)[/mod]

Répondre

Revenir vers « Scripting »