Scripter le Nbump
Scripter le Nbump
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
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
- boubouk50
- ModoGenereux
- Messages : 6219
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Scripter le Nbump
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.
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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Scripter le Nbump
Dans le shader posté ici, il y a un paramètre d'intensité de la Normal Map.
Re: Scripter le Nbump
Au pire sur le standard shader aussi, si une normal map est définie.
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
Re: Scripter le Nbump
Tout simplement...Max a écrit :Au pire sur le standard shader aussi, si une normal map est définie.
Re: Scripter le Nbump
Merci, mais le standard shader n'est pas assez réaliste pour la peau...
Re: Scripter le Nbump
Montre nous les sources du shader utilisé.
- boubouk50
- ModoGenereux
- Messages : 6219
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Scripter le Nbump
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.Amconline a écrit :Merci, mais le standard shader n'est pas assez réaliste pour la peau...
"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
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Scripter le Nbump
Alors je suis nouveau sur les Shaders, donc j'espère que c'est bien ça...ZJP a écrit :Montre nous les sources du shader utilisé.
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"
}