diff --git a/3D/Material Templates/Amplify/RL_Template_HQ_Hair_3D_Amplify.mat b/3D/Material Templates/Amplify/RL_Template_HQ_Hair_3D_Amplify.mat index 2d418f4..a2aa1e4 100644 --- a/3D/Material Templates/Amplify/RL_Template_HQ_Hair_3D_Amplify.mat +++ b/3D/Material Templates/Amplify/RL_Template_HQ_Hair_3D_Amplify.mat @@ -70,7 +70,7 @@ Material: - _AOStrength: 1 - _AlphaClip: 1 - _AlphaPower: 1 - - _AlphaRemap: 0.5 + - _AlphaRemap: 0.75 - _BaseColorStrength: 1 - _BlendStrength: 1 - _ClipQuality: 1 diff --git a/3D/Material Templates/Amplify/RL_Template_HQ_Hair_Coverage_3D_Amplify.mat b/3D/Material Templates/Amplify/RL_Template_HQ_Hair_Coverage_3D_Amplify.mat index 2b0f8c6..ba18661 100644 --- a/3D/Material Templates/Amplify/RL_Template_HQ_Hair_Coverage_3D_Amplify.mat +++ b/3D/Material Templates/Amplify/RL_Template_HQ_Hair_Coverage_3D_Amplify.mat @@ -69,8 +69,8 @@ Material: - _AOOccludeAll: 0 - _AOStrength: 1 - _AlphaClip: 0.25 - - _AlphaPower: 0.5 - - _AlphaRemap: 1 + - _AlphaPower: 1 + - _AlphaRemap: 0.75 - _BaseColorStrength: 1 - _BlendStrength: 1 - _DiffuseStrength: 1 diff --git a/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_3D_Amplify_T.mat b/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_3D_Amplify_T.mat index 64fe182..2a12070 100644 --- a/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_3D_Amplify_T.mat +++ b/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_3D_Amplify_T.mat @@ -70,7 +70,7 @@ Material: - _AOStrength: 1 - _AlphaClip: 1 - _AlphaPower: 1 - - _AlphaRemap: 0.6 + - _AlphaRemap: 0.75 - _BaseColorStrength: 1 - _BlendStrength: 1 - _ClipQuality: 1 diff --git a/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_Coverage_3D_Amplify_T.mat b/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_Coverage_3D_Amplify_T.mat index 1f4f6a6..3e27368 100644 --- a/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_Coverage_3D_Amplify_T.mat +++ b/3D/Material Templates/Amplify/Tessellation/RL_Template_HQ_Hair_Coverage_3D_Amplify_T.mat @@ -69,8 +69,8 @@ Material: - _AOOccludeAll: 0 - _AOStrength: 1 - _AlphaClip: 0.25 - - _AlphaPower: 0.5 - - _AlphaRemap: 1 + - _AlphaPower: 1 + - _AlphaRemap: 0.75 - _BaseColorStrength: 1 - _BlendStrength: 1 - _DiffuseStrength: 1 diff --git a/3D/Material Templates/RL_Template_HQ_Hair_3D.mat b/3D/Material Templates/RL_Template_HQ_Hair_3D.mat index 45e92ff..460f832 100644 --- a/3D/Material Templates/RL_Template_HQ_Hair_3D.mat +++ b/3D/Material Templates/RL_Template_HQ_Hair_3D.mat @@ -66,7 +66,7 @@ Material: - _AOStrength: 1 - _AlphaClip: 0.5 - _AlphaPower: 1 - - _AlphaRemap: 1 + - _AlphaRemap: 0.75 - _BaseColorStrength: 1 - _BlendStrength: 1 - _DepthPostpass: 0.2 diff --git a/3D/Shaders/Amplify/RL_Amplify_HeadShaderWrinkle_Baked_3D.shader b/3D/Shaders/Amplify/RL_Amplify_HeadShaderWrinkle_Baked_3D.shader index 908b461..9804e8e 100644 --- a/3D/Shaders/Amplify/RL_Amplify_HeadShaderWrinkle_Baked_3D.shader +++ b/3D/Shaders/Amplify/RL_Amplify_HeadShaderWrinkle_Baked_3D.shader @@ -55,6 +55,7 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" _WrinkleValueSet3R("Wrinkle Value Set 3 Right", Vector) = (0,0,0,0) _WrinkleValueSet12CR("Wrinkle Value Set 12C Right", Vector) = (0,0,0,0) _WrinkleValueSet3DB("Wrinkle Value Set 3D Both", Vector) = (0,0,0,0) + _WrinkleValueSetBCCB("Wrinkle Value Set BCC Both", Vector) = (0,0,0,0) [HideInInspector] _texcoord( "", 2D ) = "white" {} [HideInInspector] __dirty( "", Int ) = 1 } @@ -71,8 +72,14 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" #define ASE_USING_SAMPLING_MACROS 1 #if defined(SHADER_API_D3D11) || defined(SHADER_API_XBOXONE) || defined(UNITY_COMPILER_HLSLCC) || defined(SHADER_API_PSSL) || (defined(SHADER_TARGET_SURFACE_ANALYSIS) && !defined(SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER))//ASE Sampler Macros #define SAMPLE_TEXTURE2D(tex,samplerTex,coord) tex.Sample(samplerTex,coord) + #define SAMPLE_TEXTURE2D_LOD(tex,samplerTex,coord,lod) tex.SampleLevel(samplerTex,coord, lod) + #define SAMPLE_TEXTURE2D_BIAS(tex,samplerTex,coord,bias) tex.SampleBias(samplerTex,coord,bias) + #define SAMPLE_TEXTURE2D_GRAD(tex,samplerTex,coord,ddx,ddy) tex.SampleGrad(samplerTex,coord,ddx,ddy) #else//ASE Sampling Macros #define SAMPLE_TEXTURE2D(tex,samplerTex,coord) tex2D(tex,coord) + #define SAMPLE_TEXTURE2D_LOD(tex,samplerTex,coord,lod) tex2Dlod(tex,float4(coord,0,lod)) + #define SAMPLE_TEXTURE2D_BIAS(tex,samplerTex,coord,bias) tex2Dbias(tex,float4(coord,0,bias)) + #define SAMPLE_TEXTURE2D_GRAD(tex,samplerTex,coord,ddx,ddy) tex2Dgrad(tex,coord,ddx,ddy) #endif//ASE Sampling Macros #pragma surface surf StandardCustom keepalpha addshadow fullforwardshadows exclude_path:deferred @@ -101,6 +108,8 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend1); uniform half4 _WrinkleNormalBlend1_ST; SamplerState sampler_Linear_Repeat; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowPack); + uniform half4 _WrinkleFlowPack_ST; uniform half4 _WrinkleValueSet12CL; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet123); uniform half4 _WrinkleMaskSet123_ST; @@ -113,8 +122,6 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" uniform half4 _WrinkleValueSet1AR; uniform half4 _WrinkleValueSet1BR; uniform half4 _WrinkleValueSet12CR; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowPack); - uniform half4 _WrinkleFlowPack_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend2); uniform half4 _WrinkleNormalBlend2_ST; uniform half4 _WrinkleValueSet2L; @@ -123,6 +130,7 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" uniform half4 _WrinkleValueSet2R; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend3); uniform half4 _WrinkleNormalBlend3_ST; + uniform half4 _WrinkleValueSetBCCB; uniform half4 _WrinkleValueSet3DB; uniform half4 _WrinkleValueSet3L; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet3); @@ -176,6 +184,25 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" uniform half4 _SubsurfaceMaskMap_ST; SamplerState sampler_SubsurfaceMaskMap; + + half3 MinMaxDeltaBlend3183_g1( half3 In, half3 In1, half3 In2, half3 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + + half4 MinMaxDeltaBlend4181_g1( half4 In, half4 In1, half4 In2, half4 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + + half MinMaxDeltaBlend1182_g1( half In, half In1, half In2, half In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + inline half4 LightingStandardCustom(SurfaceOutputStandardCustom s, half3 viewDir, UnityGI gi ) { #if !defined(DIRECTIONAL) @@ -217,7 +244,11 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" float2 uv_BumpMap = i.uv_texcoord * _BumpMap_ST.xy + _BumpMap_ST.zw; half normalMapScale258 = _BumpScale; half3 normalMap218 = UnpackScaleNormal( SAMPLE_TEXTURE2D( _BumpMap, sampler_BumpMap, uv_BumpMap ), normalMapScale258 ); + half3 normal186_g1 = normalMap218; + half3 In183_g1 = normal186_g1; float2 uv_WrinkleNormalBlend1 = i.uv_texcoord * _WrinkleNormalBlend1_ST.xy + _WrinkleNormalBlend1_ST.zw; + float2 uv_WrinkleFlowPack = i.uv_texcoord * _WrinkleFlowPack_ST.xy + _WrinkleFlowPack_ST.zw; + half4 tex2DNode259 = SAMPLE_TEXTURE2D( _WrinkleFlowPack, sampler_Linear_Repeat, uv_WrinkleFlowPack ); half temp_output_1_0_g15 = 0.49; half leftMask27_g1 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g15 ) / ( 0.51 - temp_output_1_0_g15 ) ) ); half4 break107_g1 = _WrinkleValueSet12CL; @@ -228,12 +259,12 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" half dotResult121_g1 = dot( appendResult112_g1 , appendResult115_g1 ); half value1CLeft135_g1 = dotResult121_g1; float2 uv_WrinkleMaskSet1A = i.uv_texcoord * _WrinkleMaskSet1A_ST.xy + _WrinkleMaskSet1A_ST.zw; - half4 temp_output_15_0_g1 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); - half dotResult29_g1 = dot( _WrinkleValueSet1AL , temp_output_15_0_g1 ); + half4 maskSet1A214_g1 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); + half dotResult29_g1 = dot( _WrinkleValueSet1AL , maskSet1A214_g1 ); float2 uv_WrinkleMaskSet1B = i.uv_texcoord * _WrinkleMaskSet1B_ST.xy + _WrinkleMaskSet1B_ST.zw; half4 temp_output_16_0_g1 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1B, sampler_Linear_Repeat, uv_WrinkleMaskSet1B ); half dotResult35_g1 = dot( _WrinkleValueSet1BL , temp_output_16_0_g1 ); - half dotResult30_g1 = dot( temp_output_15_0_g1 , _WrinkleValueSet1AR ); + half dotResult30_g1 = dot( maskSet1A214_g1 , _WrinkleValueSet1AR ); half dotResult36_g1 = dot( temp_output_16_0_g1 , _WrinkleValueSet1BR ); half4 break108_g1 = _WrinkleValueSet12CR; half2 appendResult117_g1 = (half2(break108_g1.x , break108_g1.y)); @@ -241,12 +272,9 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" half value1CRight136_g1 = dotResult122_g1; half temp_output_1_0_g14 = 0.51; half rightMask28_g1 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g14 ) / ( 0.49 - temp_output_1_0_g14 ) ) ); - half temp_output_16_0_g63 = ( ( leftMask27_g1 * ( value1CLeft135_g1 + dotResult29_g1 + dotResult35_g1 ) ) + ( ( dotResult30_g1 + dotResult36_g1 + value1CRight136_g1 ) * rightMask28_g1 ) ); - half temp_output_1_0_g64 = 0.0; - float2 uv_WrinkleFlowPack = i.uv_texcoord * _WrinkleFlowPack_ST.xy + _WrinkleFlowPack_ST.zw; - half4 tex2DNode259 = SAMPLE_TEXTURE2D( _WrinkleFlowPack, sampler_Linear_Repeat, uv_WrinkleFlowPack ); - half temp_output_23_0_g63 = ( saturate( ( ( temp_output_16_0_g63 - temp_output_1_0_g64 ) / ( tex2DNode259.r - temp_output_1_0_g64 ) ) ) * temp_output_16_0_g63 ); - half3 lerpResult19_g63 = lerp( normalMap218 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale258 ) , temp_output_23_0_g63); + half temp_output_16_0_g67 = ( ( leftMask27_g1 * ( value1CLeft135_g1 + dotResult29_g1 + dotResult35_g1 ) ) + ( ( dotResult30_g1 + dotResult36_g1 + value1CRight136_g1 ) * rightMask28_g1 ) ); + half temp_output_23_0_g67 = ( saturate( ( tex2DNode259.r + temp_output_16_0_g67 ) ) * temp_output_16_0_g67 ); + half3 In1183_g1 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale258 ) - normal186_g1 ) * temp_output_23_0_g67 ); float2 uv_WrinkleNormalBlend2 = i.uv_texcoord * _WrinkleNormalBlend2_ST.xy + _WrinkleNormalBlend2_ST.zw; half2 appendResult113_g1 = (half2(break107_g1.z , break107_g1.w)); half2 appendResult114_g1 = (half2(break109_g1.z , break109_g1.w)); @@ -259,11 +287,12 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" half2 appendResult116_g1 = (half2(break108_g1.z , break108_g1.w)); half dotResult124_g1 = dot( appendResult114_g1 , appendResult116_g1 ); half value2CRight138_g1 = dotResult124_g1; - half temp_output_16_0_g59 = ( ( leftMask27_g1 * ( value2CLeft137_g1 + dotResult41_g1 ) ) + ( ( dotResult42_g1 + value2CRight138_g1 ) * rightMask28_g1 ) ); - half temp_output_1_0_g60 = 0.0; - half temp_output_23_0_g59 = ( saturate( ( ( temp_output_16_0_g59 - temp_output_1_0_g60 ) / ( tex2DNode259.g - temp_output_1_0_g60 ) ) ) * temp_output_16_0_g59 ); - half3 lerpResult19_g59 = lerp( lerpResult19_g63 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale258 ) , temp_output_23_0_g59); + half temp_output_16_0_g68 = ( ( leftMask27_g1 * ( value2CLeft137_g1 + dotResult41_g1 ) ) + ( ( dotResult42_g1 + value2CRight138_g1 ) * rightMask28_g1 ) ); + half temp_output_23_0_g68 = ( saturate( ( tex2DNode259.g + temp_output_16_0_g68 ) ) * temp_output_16_0_g68 ); + half3 In2183_g1 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale258 ) - normal186_g1 ) * temp_output_23_0_g68 ); float2 uv_WrinkleNormalBlend3 = i.uv_texcoord * _WrinkleNormalBlend3_ST.xy + _WrinkleNormalBlend3_ST.zw; + half4 break211_g1 = _WrinkleValueSetBCCB; + half valueBCCLeft217_g1 = ( break211_g1.x * maskSet1A214_g1.y ); half4 break118_g1 = _WrinkleValueSet3DB; half2 appendResult120_g1 = (half2(break118_g1.x , break118_g1.y)); half dotResult127_g1 = dot( appendResult120_g1 , appendResult115_g1 ); @@ -275,11 +304,12 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" half2 appendResult119_g1 = (half2(break118_g1.z , break118_g1.w)); half dotResult128_g1 = dot( appendResult115_g1 , appendResult119_g1 ); half value3DRight130_g1 = dotResult128_g1; - half temp_output_16_0_g61 = ( ( leftMask27_g1 * ( value3DLeft129_g1 + dotResult47_g1 ) ) + ( ( dotResult48_g1 + value3DRight130_g1 ) * rightMask28_g1 ) ); - half temp_output_1_0_g62 = 0.0; - half temp_output_23_0_g61 = ( saturate( ( ( temp_output_16_0_g61 - temp_output_1_0_g62 ) / ( tex2DNode259.b - temp_output_1_0_g62 ) ) ) * temp_output_16_0_g61 ); - half3 lerpResult19_g61 = lerp( lerpResult19_g59 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale258 ) , temp_output_23_0_g61); - half3 normalWrinkle231 = lerpResult19_g61; + half valueBCCRight219_g1 = ( maskSet1A214_g1.y * break211_g1.y ); + half temp_output_16_0_g66 = ( ( leftMask27_g1 * ( valueBCCLeft217_g1 + value3DLeft129_g1 + dotResult47_g1 ) ) + ( ( dotResult48_g1 + value3DRight130_g1 + valueBCCRight219_g1 ) * rightMask28_g1 ) ); + half temp_output_23_0_g66 = ( saturate( ( tex2DNode259.b + temp_output_16_0_g66 ) ) * temp_output_16_0_g66 ); + half3 In3183_g1 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale258 ) - normal186_g1 ) * temp_output_23_0_g66 ); + half3 localMinMaxDeltaBlend3183_g1 = MinMaxDeltaBlend3183_g1( In183_g1 , In1183_g1 , In2183_g1 , In3183_g1 ); + half3 normalWrinkle231 = localMinMaxDeltaBlend3183_g1; #ifdef BOOLEAN_USE_WRINKLE_ON half3 staticSwitch220 = normalWrinkle231; #else @@ -290,13 +320,16 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" o.Normal = BlendNormals( staticSwitch220 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _DetailNormalMap, sampler_DetailNormalMap, uv_DetailNormalMap ), ( _DetailNormalMapScale * SAMPLE_TEXTURE2D( _DetailMask, sampler_DetailMask, uv_DetailMask ).g ) ) ); float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw; half4 diffuseMap216 = SAMPLE_TEXTURE2D( _MainTex, sampler_MainTex, uv_MainTex ); + half4 diffuse184_g1 = diffuseMap216; + half4 In181_g1 = diffuse184_g1; float2 uv_WrinkleDiffuseBlend1 = i.uv_texcoord * _WrinkleDiffuseBlend1_ST.xy + _WrinkleDiffuseBlend1_ST.zw; - half4 lerpResult17_g63 = lerp( diffuseMap216 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) , temp_output_23_0_g63); + half4 In1181_g1 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) - diffuse184_g1 ) * temp_output_23_0_g67 ); float2 uv_WrinkleDiffuseBlend2 = i.uv_texcoord * _WrinkleDiffuseBlend2_ST.xy + _WrinkleDiffuseBlend2_ST.zw; - half4 lerpResult17_g59 = lerp( lerpResult17_g63 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) , temp_output_23_0_g59); + half4 In2181_g1 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) - diffuse184_g1 ) * temp_output_23_0_g68 ); float2 uv_WrinkleDiffuseBlend3 = i.uv_texcoord * _WrinkleDiffuseBlend3_ST.xy + _WrinkleDiffuseBlend3_ST.zw; - half4 lerpResult17_g61 = lerp( lerpResult17_g59 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) , temp_output_23_0_g61); - half4 diffuseWrinkle229 = lerpResult17_g61; + half4 In3181_g1 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) - diffuse184_g1 ) * temp_output_23_0_g66 ); + half4 localMinMaxDeltaBlend4181_g1 = MinMaxDeltaBlend4181_g1( In181_g1 , In1181_g1 , In2181_g1 , In3181_g1 ); + half4 diffuseWrinkle229 = localMinMaxDeltaBlend4181_g1; #ifdef BOOLEAN_USE_WRINKLE_ON half4 staticSwitch217 = diffuseWrinkle229; #else @@ -310,12 +343,15 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D" half4 tex2DNode150 = SAMPLE_TEXTURE2D( _MetallicGlossMap, sampler_MetallicGlossMap, uv_MetallicGlossMap ); o.Metallic = ( _Metallic * tex2DNode150.g ); half smoothnessMap221 = tex2DNode150.a; + half smoothness185_g1 = smoothnessMap221; + half In182_g1 = smoothness185_g1; float2 uv_WrinkleSmoothnessPack = i.uv_texcoord * _WrinkleSmoothnessPack_ST.xy + _WrinkleSmoothnessPack_ST.zw; half4 tex2DNode252 = SAMPLE_TEXTURE2D( _WrinkleSmoothnessPack, sampler_Linear_Repeat, uv_WrinkleSmoothnessPack ); - half lerpResult18_g63 = lerp( smoothnessMap221 , tex2DNode252.r , temp_output_23_0_g63); - half lerpResult18_g59 = lerp( lerpResult18_g63 , tex2DNode252.g , temp_output_23_0_g59); - half lerpResult18_g61 = lerp( lerpResult18_g59 , tex2DNode252.b , temp_output_23_0_g61); - half smoothnessWrinkle230 = lerpResult18_g61; + half In1182_g1 = ( ( tex2DNode252.r - smoothness185_g1 ) * temp_output_23_0_g67 ); + half In2182_g1 = ( ( tex2DNode252.g - smoothness185_g1 ) * temp_output_23_0_g68 ); + half In3182_g1 = ( ( tex2DNode252.b - smoothness185_g1 ) * temp_output_23_0_g66 ); + half localMinMaxDeltaBlend1182_g1 = MinMaxDeltaBlend1182_g1( In182_g1 , In1182_g1 , In2182_g1 , In3182_g1 ); + half smoothnessWrinkle230 = localMinMaxDeltaBlend1182_g1; #ifdef BOOLEAN_USE_WRINKLE_ON half staticSwitch223 = smoothnessWrinkle230; #else @@ -386,16 +422,16 @@ Node;AmplifyShaderEditor.SamplerNode;147;-2136.865,-193.1417;Inherit;True;Proper Node;AmplifyShaderEditor.SimpleMultiplyOpNode;156;-1741.162,-239.0549;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.SamplerNode;146;-1765.358,-564.0937;Inherit;True;Property;_BumpMap;Bump Map;5;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.RangedFloatNode;164;-1171.638,1087.455;Inherit;False;Property;_GlossMapScale;Gloss Map Scale;4;0;Create;True;0;0;0;False;0;False;1;0;0;1;0;1;FLOAT;0 -Node;AmplifyShaderEditor.CommentaryNode;225;-5196.062,-617.9283;Inherit;False;2700.847;2041.228;;33;226;228;227;244;253;252;251;250;249;248;247;246;245;243;242;241;240;239;238;237;236;235;234;233;232;231;230;229;254;255;256;257;259;Wrinkle System;1,0.5137255,0.7779443,1;0;0 -Node;AmplifyShaderEditor.RegisterLocalVarNode;229;-2780.533,-255.9874;Inherit;False;diffuseWrinkle;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.CommentaryNode;225;-5196.062,-617.9283;Inherit;False;2700.847;2041.228;;34;226;228;227;244;253;252;251;250;249;248;247;246;245;243;242;241;240;239;238;237;236;235;234;233;232;231;230;229;254;255;256;257;259;260;Wrinkle System;1,0.5137255,0.7779443,1;0;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;229;-2780.533,-255.9874;Inherit;False;diffuseWrinkle;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;230;-2800.533,-141.9883;Inherit;False;smoothnessWrinkle;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;231;-2785.533,-31.98799;Inherit;False;normalWrinkle;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 -Node;AmplifyShaderEditor.FunctionNode;253;-3270.997,-186.733;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;1;66048c3ae18f3f84c9195a84e20ae59a;0;31;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;3;COLOR;0;FLOAT;1;FLOAT3;6 +Node;AmplifyShaderEditor.FunctionNode;253;-3270.997,-186.733;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;1;66048c3ae18f3f84c9195a84e20ae59a;0;32;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;210;FLOAT4;0,0,0,0;False;3;FLOAT4;0;FLOAT;1;FLOAT3;6 Node;AmplifyShaderEditor.WireNode;224;-1461.594,834.7779;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.SamplerNode;150;-1813.843,830.624;Inherit;True;Property;_MetallicGlossMap;Metallic Gloss Map;2;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.StaticSwitch;220;-1214.007,-528.2222;Inherit;False;Property;BOOLEAN_USE_WRINKLE1;Use Wrinkle;26;0;Create;False;0;0;0;False;0;False;0;0;0;True;BOOLEAN_USE_WRINKLE_ON;Toggle;2;Key0;Key1;Reference;217;True;False;All;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;216;-1662.571,-903.2975;Inherit;False;diffuseMap;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 -Node;AmplifyShaderEditor.GetLocalVarNode;215;-1662.778,-814.576;Inherit;False;229;diffuseWrinkle;1;0;OBJECT;;False;1;COLOR;0 +Node;AmplifyShaderEditor.GetLocalVarNode;215;-1662.778,-814.576;Inherit;False;229;diffuseWrinkle;1;0;OBJECT;;False;1;FLOAT4;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;218;-1453.549,-562.6266;Inherit;False;normalMap;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 Node;AmplifyShaderEditor.GetLocalVarNode;219;-1454.242,-478.0932;Inherit;False;231;normalWrinkle;1;0;OBJECT;;False;1;FLOAT3;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;221;-1459.931,922.4847;Inherit;False;smoothnessMap;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 @@ -432,6 +468,7 @@ Node;AmplifyShaderEditor.RegisterLocalVarNode;258;-2038.535,-397.7079;Inherit;Fa Node;AmplifyShaderEditor.GetLocalVarNode;232;-5055.76,643.8648;Inherit;False;258;normalMapScale;1;0;OBJECT;;False;1;FLOAT;0 Node;AmplifyShaderEditor.SamplerNode;252;-4499.95,189.8336;Inherit;True;Property;_WrinkleSmoothnessPack;Wrinkle Smoothness Pack;35;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;gray;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;259;-4181.297,309.0432;Inherit;True;Property;_WrinkleFlowPack;Wrinkle Flow Pack;36;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.Vector4Node;260;-3581.966,1176.045;Inherit;False;Property;_WrinkleValueSetBCCB;Wrinkle Value Set BCC Both;51;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 WireConnection;170;0;151;2 WireConnection;171;0;169;0 WireConnection;171;1;170;0 @@ -512,6 +549,7 @@ WireConnection;253;25;235;0 WireConnection;253;26;236;0 WireConnection;253;104;255;0 WireConnection;253;106;257;0 +WireConnection;253;210;260;0 WireConnection;224;0;150;2 WireConnection;220;1;218;0 WireConnection;220;0;219;0 @@ -538,4 +576,4 @@ WireConnection;258;0;153;0 WireConnection;252;7;251;0 WireConnection;259;7;251;0 ASEEND*/ -//CHKSM=9EF192E19CF351282A509AD123BCA27B6725DB05 \ No newline at end of file +//CHKSM=3E6E6366B682C115A4F52B5EF6609627B8422BB9 \ No newline at end of file diff --git a/3D/Shaders/Amplify/RL_Amplify_SkinShader_Variants_3D.shader b/3D/Shaders/Amplify/RL_Amplify_SkinShader_Variants_3D.shader index e6a90c8..5d2c4d3 100644 --- a/3D/Shaders/Amplify/RL_Amplify_SkinShader_Variants_3D.shader +++ b/3D/Shaders/Amplify/RL_Amplify_SkinShader_Variants_3D.shader @@ -95,6 +95,7 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" _WrinkleValueSet3R("Wrinkle Value Set 3 Right", Vector) = (0,0,0,0) _WrinkleValueSet12CR("Wrinkle Value Set 12C Right", Vector) = (0,0,0,0) _WrinkleValueSet3DB("Wrinkle Value Set 3D Both", Vector) = (0,0,0,0) + _WrinkleValueSetBCCB("Wrinkle Value Set BCC Both", Vector) = (0,0,0,0) [HideInInspector] _texcoord( "", 2D ) = "white" {} [HideInInspector] __dirty( "", Int ) = 1 } @@ -149,6 +150,8 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend1); uniform half4 _WrinkleNormalBlend1_ST; SamplerState sampler_Linear_Repeat; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap1); + uniform half4 _WrinkleFlowMap1_ST; uniform half4 _WrinkleValueSet12CL; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet123); uniform half4 _WrinkleMaskSet123_ST; @@ -161,25 +164,24 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" uniform half4 _WrinkleValueSet1AR; uniform half4 _WrinkleValueSet1BR; uniform half4 _WrinkleValueSet12CR; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap1); - uniform half4 _WrinkleFlowMap1_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend2); uniform half4 _WrinkleNormalBlend2_ST; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap2); + uniform half4 _WrinkleFlowMap2_ST; uniform half4 _WrinkleValueSet2L; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet2); uniform half4 _WrinkleMaskSet2_ST; uniform half4 _WrinkleValueSet2R; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap2); - uniform half4 _WrinkleFlowMap2_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend3); uniform half4 _WrinkleNormalBlend3_ST; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap3); + uniform half4 _WrinkleFlowMap3_ST; + uniform half4 _WrinkleValueSetBCCB; uniform half4 _WrinkleValueSet3DB; uniform half4 _WrinkleValueSet3L; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet3); uniform half4 _WrinkleMaskSet3_ST; uniform half4 _WrinkleValueSet3R; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap3); - uniform half4 _WrinkleFlowMap3_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_NormalBlendMap); uniform half4 _NormalBlendMap_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_SSSMap); @@ -263,6 +265,12 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" uniform half _TransShadow; + half3 MinMaxDeltaBlend3183_g40( half3 In, half3 In1, half3 In2, half3 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + void SkinMask179( half4 In1, half4 Mod1, half4 Scatter1, half UMMS, half UMSS, out half SmoothnessMod, out half ScatterMask ) { float mask = saturate(In1.r + In1.g + In1.b + In1.a); @@ -285,6 +293,18 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" } + half4 MinMaxDeltaBlend4181_g40( half4 In, half4 In1, half4 In2, half4 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + + half MinMaxDeltaBlend1182_g40( half In, half In1, half In2, half In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + inline half4 LightingStandardCustom(SurfaceOutputStandardCustom s, half3 viewDir, UnityGI gi ) { #if !defined(DIRECTIONAL) @@ -326,7 +346,10 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" float2 uv_NormalMap = i.uv_texcoord * _NormalMap_ST.xy + _NormalMap_ST.zw; half normalMapScale359 = _NormalStrength; half3 normalMap360 = UnpackScaleNormal( SAMPLE_TEXTURE2D( _NormalMap, sampler_DiffuseMap, uv_NormalMap ), normalMapScale359 ); + half3 normal186_g40 = normalMap360; + half3 In183_g40 = normal186_g40; float2 uv_WrinkleNormalBlend1 = i.uv_texcoord * _WrinkleNormalBlend1_ST.xy + _WrinkleNormalBlend1_ST.zw; + float2 uv_WrinkleFlowMap1 = i.uv_texcoord * _WrinkleFlowMap1_ST.xy + _WrinkleFlowMap1_ST.zw; half temp_output_1_0_g42 = 0.49; half leftMask27_g40 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g42 ) / ( 0.51 - temp_output_1_0_g42 ) ) ); half4 break107_g40 = _WrinkleValueSet12CL; @@ -337,12 +360,12 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" half dotResult121_g40 = dot( appendResult112_g40 , appendResult115_g40 ); half value1CLeft135_g40 = dotResult121_g40; float2 uv_WrinkleMaskSet1A = i.uv_texcoord * _WrinkleMaskSet1A_ST.xy + _WrinkleMaskSet1A_ST.zw; - half4 temp_output_15_0_g40 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); - half dotResult29_g40 = dot( _WrinkleValueSet1AL , temp_output_15_0_g40 ); + half4 maskSet1A214_g40 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); + half dotResult29_g40 = dot( _WrinkleValueSet1AL , maskSet1A214_g40 ); float2 uv_WrinkleMaskSet1B = i.uv_texcoord * _WrinkleMaskSet1B_ST.xy + _WrinkleMaskSet1B_ST.zw; half4 temp_output_16_0_g40 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1B, sampler_Linear_Repeat, uv_WrinkleMaskSet1B ); half dotResult35_g40 = dot( _WrinkleValueSet1BL , temp_output_16_0_g40 ); - half dotResult30_g40 = dot( temp_output_15_0_g40 , _WrinkleValueSet1AR ); + half dotResult30_g40 = dot( maskSet1A214_g40 , _WrinkleValueSet1AR ); half dotResult36_g40 = dot( temp_output_16_0_g40 , _WrinkleValueSet1BR ); half4 break108_g40 = _WrinkleValueSet12CR; half2 appendResult117_g40 = (half2(break108_g40.x , break108_g40.y)); @@ -350,12 +373,11 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" half value1CRight136_g40 = dotResult122_g40; half temp_output_1_0_g41 = 0.51; half rightMask28_g40 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g41 ) / ( 0.49 - temp_output_1_0_g41 ) ) ); - half temp_output_16_0_g63 = ( ( leftMask27_g40 * ( value1CLeft135_g40 + dotResult29_g40 + dotResult35_g40 ) ) + ( ( dotResult30_g40 + dotResult36_g40 + value1CRight136_g40 ) * rightMask28_g40 ) ); - half temp_output_1_0_g64 = 0.0; - float2 uv_WrinkleFlowMap1 = i.uv_texcoord * _WrinkleFlowMap1_ST.xy + _WrinkleFlowMap1_ST.zw; - half temp_output_23_0_g63 = ( saturate( ( ( temp_output_16_0_g63 - temp_output_1_0_g64 ) / ( SAMPLE_TEXTURE2D( _WrinkleFlowMap1, sampler_Linear_Repeat, uv_WrinkleFlowMap1 ).g - temp_output_1_0_g64 ) ) ) * temp_output_16_0_g63 ); - half3 lerpResult19_g63 = lerp( normalMap360 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale359 ) , temp_output_23_0_g63); + half temp_output_16_0_g67 = ( ( leftMask27_g40 * ( value1CLeft135_g40 + dotResult29_g40 + dotResult35_g40 ) ) + ( ( dotResult30_g40 + dotResult36_g40 + value1CRight136_g40 ) * rightMask28_g40 ) ); + half temp_output_23_0_g67 = ( saturate( ( SAMPLE_TEXTURE2D( _WrinkleFlowMap1, sampler_Linear_Repeat, uv_WrinkleFlowMap1 ).g + temp_output_16_0_g67 ) ) * temp_output_16_0_g67 ); + half3 In1183_g40 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale359 ) - normal186_g40 ) * temp_output_23_0_g67 ); float2 uv_WrinkleNormalBlend2 = i.uv_texcoord * _WrinkleNormalBlend2_ST.xy + _WrinkleNormalBlend2_ST.zw; + float2 uv_WrinkleFlowMap2 = i.uv_texcoord * _WrinkleFlowMap2_ST.xy + _WrinkleFlowMap2_ST.zw; half2 appendResult113_g40 = (half2(break107_g40.z , break107_g40.w)); half2 appendResult114_g40 = (half2(break109_g40.z , break109_g40.w)); half dotResult123_g40 = dot( appendResult113_g40 , appendResult114_g40 ); @@ -367,12 +389,13 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" half2 appendResult116_g40 = (half2(break108_g40.z , break108_g40.w)); half dotResult124_g40 = dot( appendResult114_g40 , appendResult116_g40 ); half value2CRight138_g40 = dotResult124_g40; - half temp_output_16_0_g59 = ( ( leftMask27_g40 * ( value2CLeft137_g40 + dotResult41_g40 ) ) + ( ( dotResult42_g40 + value2CRight138_g40 ) * rightMask28_g40 ) ); - half temp_output_1_0_g60 = 0.0; - float2 uv_WrinkleFlowMap2 = i.uv_texcoord * _WrinkleFlowMap2_ST.xy + _WrinkleFlowMap2_ST.zw; - half temp_output_23_0_g59 = ( saturate( ( ( temp_output_16_0_g59 - temp_output_1_0_g60 ) / ( SAMPLE_TEXTURE2D( _WrinkleFlowMap2, sampler_Linear_Repeat, uv_WrinkleFlowMap2 ).g - temp_output_1_0_g60 ) ) ) * temp_output_16_0_g59 ); - half3 lerpResult19_g59 = lerp( lerpResult19_g63 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale359 ) , temp_output_23_0_g59); + half temp_output_16_0_g68 = ( ( leftMask27_g40 * ( value2CLeft137_g40 + dotResult41_g40 ) ) + ( ( dotResult42_g40 + value2CRight138_g40 ) * rightMask28_g40 ) ); + half temp_output_23_0_g68 = ( saturate( ( SAMPLE_TEXTURE2D( _WrinkleFlowMap2, sampler_Linear_Repeat, uv_WrinkleFlowMap2 ).g + temp_output_16_0_g68 ) ) * temp_output_16_0_g68 ); + half3 In2183_g40 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale359 ) - normal186_g40 ) * temp_output_23_0_g68 ); float2 uv_WrinkleNormalBlend3 = i.uv_texcoord * _WrinkleNormalBlend3_ST.xy + _WrinkleNormalBlend3_ST.zw; + float2 uv_WrinkleFlowMap3 = i.uv_texcoord * _WrinkleFlowMap3_ST.xy + _WrinkleFlowMap3_ST.zw; + half4 break211_g40 = _WrinkleValueSetBCCB; + half valueBCCLeft217_g40 = ( break211_g40.x * maskSet1A214_g40.y ); half4 break118_g40 = _WrinkleValueSet3DB; half2 appendResult120_g40 = (half2(break118_g40.x , break118_g40.y)); half dotResult127_g40 = dot( appendResult120_g40 , appendResult115_g40 ); @@ -384,12 +407,12 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" half2 appendResult119_g40 = (half2(break118_g40.z , break118_g40.w)); half dotResult128_g40 = dot( appendResult115_g40 , appendResult119_g40 ); half value3DRight130_g40 = dotResult128_g40; - half temp_output_16_0_g61 = ( ( leftMask27_g40 * ( value3DLeft129_g40 + dotResult47_g40 ) ) + ( ( dotResult48_g40 + value3DRight130_g40 ) * rightMask28_g40 ) ); - half temp_output_1_0_g62 = 0.0; - float2 uv_WrinkleFlowMap3 = i.uv_texcoord * _WrinkleFlowMap3_ST.xy + _WrinkleFlowMap3_ST.zw; - half temp_output_23_0_g61 = ( saturate( ( ( temp_output_16_0_g61 - temp_output_1_0_g62 ) / ( SAMPLE_TEXTURE2D( _WrinkleFlowMap3, sampler_Linear_Repeat, uv_WrinkleFlowMap3 ).g - temp_output_1_0_g62 ) ) ) * temp_output_16_0_g61 ); - half3 lerpResult19_g61 = lerp( lerpResult19_g59 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale359 ) , temp_output_23_0_g61); - half3 normalWrinkle439 = lerpResult19_g61; + half valueBCCRight219_g40 = ( maskSet1A214_g40.y * break211_g40.y ); + half temp_output_16_0_g66 = ( ( leftMask27_g40 * ( valueBCCLeft217_g40 + value3DLeft129_g40 + dotResult47_g40 ) ) + ( ( dotResult48_g40 + value3DRight130_g40 + valueBCCRight219_g40 ) * rightMask28_g40 ) ); + half temp_output_23_0_g66 = ( saturate( ( SAMPLE_TEXTURE2D( _WrinkleFlowMap3, sampler_Linear_Repeat, uv_WrinkleFlowMap3 ).g + temp_output_16_0_g66 ) ) * temp_output_16_0_g66 ); + half3 In3183_g40 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale359 ) - normal186_g40 ) * temp_output_23_0_g66 ); + half3 localMinMaxDeltaBlend3183_g40 = MinMaxDeltaBlend3183_g40( In183_g40 , In1183_g40 , In2183_g40 , In3183_g40 ); + half3 normalWrinkle439 = localMinMaxDeltaBlend3183_g40; #ifdef BOOLEAN_USE_WRINKLE_ON half3 staticSwitch467 = normalWrinkle439; #else @@ -452,13 +475,16 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" o.Normal = BlendNormals( staticSwitch71 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _MicroNormalMap, sampler_MicroNormalMap, uv_TexCoord344 ), ( _MicroNormalStrength * microNormalMask287 * subsurfaceFlattenNormals340 ) ) ); float2 uv_DiffuseMap = i.uv_texcoord * _DiffuseMap_ST.xy + _DiffuseMap_ST.zw; half4 diffuseMap358 = SAMPLE_TEXTURE2D( _DiffuseMap, sampler_DiffuseMap, uv_DiffuseMap ); + half4 diffuse184_g40 = diffuseMap358; + half4 In181_g40 = diffuse184_g40; float2 uv_WrinkleDiffuseBlend1 = i.uv_texcoord * _WrinkleDiffuseBlend1_ST.xy + _WrinkleDiffuseBlend1_ST.zw; - half4 lerpResult17_g63 = lerp( diffuseMap358 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) , temp_output_23_0_g63); + half4 In1181_g40 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) - diffuse184_g40 ) * temp_output_23_0_g67 ); float2 uv_WrinkleDiffuseBlend2 = i.uv_texcoord * _WrinkleDiffuseBlend2_ST.xy + _WrinkleDiffuseBlend2_ST.zw; - half4 lerpResult17_g59 = lerp( lerpResult17_g63 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) , temp_output_23_0_g59); + half4 In2181_g40 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) - diffuse184_g40 ) * temp_output_23_0_g68 ); float2 uv_WrinkleDiffuseBlend3 = i.uv_texcoord * _WrinkleDiffuseBlend3_ST.xy + _WrinkleDiffuseBlend3_ST.zw; - half4 lerpResult17_g61 = lerp( lerpResult17_g59 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) , temp_output_23_0_g61); - half4 diffuseWrinkle437 = lerpResult17_g61; + half4 In3181_g40 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) - diffuse184_g40 ) * temp_output_23_0_g66 ); + half4 localMinMaxDeltaBlend4181_g40 = MinMaxDeltaBlend4181_g40( In181_g40 , In1181_g40 , In2181_g40 , In3181_g40 ); + half4 diffuseWrinkle437 = localMinMaxDeltaBlend4181_g40; #ifdef BOOLEAN_USE_WRINKLE_ON half4 staticSwitch464 = diffuseWrinkle437; #else @@ -487,13 +513,16 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D" half metallicMap285 = tex2DNode32.r; o.Metallic = metallicMap285; half smoothnessMap288 = tex2DNode32.a; + half smoothness185_g40 = smoothnessMap288; + half In182_g40 = smoothness185_g40; float2 uv_WrinkleRoughnessBlend1 = i.uv_texcoord * _WrinkleRoughnessBlend1_ST.xy + _WrinkleRoughnessBlend1_ST.zw; - half lerpResult18_g63 = lerp( smoothnessMap288 , ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend1, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend1 ).g ) , temp_output_23_0_g63); + half In1182_g40 = ( ( ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend1, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend1 ).g ) - smoothness185_g40 ) * temp_output_23_0_g67 ); float2 uv_WrinkleRoughnessBlend2 = i.uv_texcoord * _WrinkleRoughnessBlend2_ST.xy + _WrinkleRoughnessBlend2_ST.zw; - half lerpResult18_g59 = lerp( lerpResult18_g63 , ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend2, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend2 ).g ) , temp_output_23_0_g59); + half In2182_g40 = ( ( ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend2, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend2 ).g ) - smoothness185_g40 ) * temp_output_23_0_g68 ); float2 uv_WrinkleRoughnessBlend3 = i.uv_texcoord * _WrinkleRoughnessBlend3_ST.xy + _WrinkleRoughnessBlend3_ST.zw; - half lerpResult18_g61 = lerp( lerpResult18_g59 , ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend3, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend3 ).g ) , temp_output_23_0_g61); - half smoothnessWrinkle438 = lerpResult18_g61; + half In3182_g40 = ( ( ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend3, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend3 ).g ) - smoothness185_g40 ) * temp_output_23_0_g66 ); + half localMinMaxDeltaBlend1182_g40 = MinMaxDeltaBlend1182_g40( In182_g40 , In1182_g40 , In2182_g40 , In3182_g40 ); + half smoothnessWrinkle438 = localMinMaxDeltaBlend1182_g40; #ifdef BOOLEAN_USE_WRINKLE_ON half staticSwitch468 = smoothnessWrinkle438; #else @@ -693,15 +722,15 @@ Node;AmplifyShaderEditor.GetLocalVarNode;343;-2228.05,-361.8155;Inherit;False;34 Node;AmplifyShaderEditor.RangedFloatNode;59;-2225.185,-49.41412;Inherit;False;Property;_NormalBlendStrength;Normal Blend Strength (Head);43;0;Create;False;0;0;0;False;0;False;0;0.5;0;2;0;1;FLOAT;0 Node;AmplifyShaderEditor.SimpleMultiplyOpNode;341;-1926.138,-218.3322;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;360;-1080.1,-667.2007;Inherit;False;normalMap;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 -Node;AmplifyShaderEditor.CommentaryNode;430;-5192.445,-3069.558;Inherit;False;2652.901;2027.358;;40;431;437;463;462;461;460;459;458;457;456;455;454;453;452;451;450;449;448;447;446;445;444;443;442;441;440;439;438;436;435;434;433;432;470;471;472;473;475;476;477;Wrinkle System;1,0.5137255,0.7779443,1;0;0 +Node;AmplifyShaderEditor.CommentaryNode;430;-5192.445,-3069.558;Inherit;False;2652.901;2027.358;;41;431;437;463;462;461;460;459;458;457;456;455;454;453;452;451;450;449;448;447;446;445;444;443;442;441;440;439;438;436;435;434;433;432;470;471;472;473;475;476;477;478;Wrinkle System;1,0.5137255,0.7779443,1;0;0 Node;AmplifyShaderEditor.GetLocalVarNode;434;-3638.247,-2980.172;Inherit;False;358;diffuseMap;1;0;OBJECT;;False;1;COLOR;0 Node;AmplifyShaderEditor.GetLocalVarNode;435;-3668.951,-2895.854;Inherit;False;288;smoothnessMap;1;0;OBJECT;;False;1;FLOAT;0 Node;AmplifyShaderEditor.GetLocalVarNode;436;-3641.951,-2812.854;Inherit;False;360;normalMap;1;0;OBJECT;;False;1;FLOAT3;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;438;-2844.862,-2593.617;Inherit;False;smoothnessWrinkle;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;439;-2829.862,-2483.617;Inherit;False;normalWrinkle;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 -Node;AmplifyShaderEditor.FunctionNode;463;-3315.326,-2638.362;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;40;66048c3ae18f3f84c9195a84e20ae59a;0;31;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;3;COLOR;0;FLOAT;1;FLOAT3;6 +Node;AmplifyShaderEditor.FunctionNode;463;-3315.326,-2638.362;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;40;66048c3ae18f3f84c9195a84e20ae59a;0;32;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;210;FLOAT4;0,0,0,0;False;3;FLOAT4;0;FLOAT;1;FLOAT3;6 Node;AmplifyShaderEditor.RegisterLocalVarNode;358;-1558.199,-1416.748;Inherit;False;diffuseMap;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 -Node;AmplifyShaderEditor.GetLocalVarNode;465;-1560.86,-1325.258;Inherit;False;437;diffuseWrinkle;1;0;OBJECT;;False;1;COLOR;0 +Node;AmplifyShaderEditor.GetLocalVarNode;465;-1560.86,-1325.258;Inherit;False;437;diffuseWrinkle;1;0;OBJECT;;False;1;FLOAT4;0 Node;AmplifyShaderEditor.SimpleMultiplyOpNode;357;-1042.627,-1514.344;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 Node;AmplifyShaderEditor.GetLocalVarNode;466;-1074.915,-581.9393;Inherit;False;439;normalWrinkle;1;0;OBJECT;;False;1;FLOAT3;0 Node;AmplifyShaderEditor.BlendNormalsNode;54;-592.8616,-475.0903;Inherit;False;0;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0 @@ -716,7 +745,7 @@ Node;AmplifyShaderEditor.StaticSwitch;72;-344.0569,-1330.624;Inherit;False;Prope Node;AmplifyShaderEditor.StaticSwitch;464;-1334.86,-1387.258;Inherit;False;Property;BOOLEAN_USE_WRINKLE;Use Wrinkle;62;0;Create;False;0;0;0;False;0;False;1;0;0;True;BOOLEAN_USE_WRINKLE_ON;Toggle;2;Key0;Key1;Create;True;False;All;9;1;COLOR;0,0,0,0;False;0;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;3;COLOR;0,0,0,0;False;4;COLOR;0,0,0,0;False;5;COLOR;0,0,0,0;False;6;COLOR;0,0,0,0;False;7;COLOR;0,0,0,0;False;8;COLOR;0,0,0,0;False;1;COLOR;0 Node;AmplifyShaderEditor.StaticSwitch;170;-3557.483,1206.089;Inherit;False;Property;BOOLEAN_IS_HEAD;Is Head;39;0;Create;False;0;0;0;False;0;False;0;1;1;True;BOOLEAN_IS_HEAD_ON;Toggle;2;Key0;Key1;Reference;72;True;False;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.StaticSwitch;169;-3551.095,1558.494;Inherit;False;Property;BOOLEAN_IS_HEAD;Is Head;39;0;Create;False;0;0;0;False;0;False;0;1;1;True;BOOLEAN_IS_HEAD_ON;Toggle;2;Key0;Key1;Reference;72;True;False;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 -Node;AmplifyShaderEditor.RegisterLocalVarNode;437;-2828.862,-2707.617;Inherit;False;diffuseWrinkle;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;437;-2828.862,-2707.617;Inherit;False;diffuseWrinkle;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0 Node;AmplifyShaderEditor.SamplerNode;454;-4766.596,-2568.007;Inherit;True;Property;_WrinkleDiffuseBlend1;Wrinkle Diffuse Blend 1;68;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;455;-4465.424,-2493.878;Inherit;True;Property;_WrinkleDiffuseBlend2;Wrinkle Diffuse Blend 2;69;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerStateNode;431;-5081.991,-2371.016;Inherit;False;0;0;0;1;-1;None;1;0;SAMPLER2D;;False;1;SAMPLERSTATE;0 @@ -732,7 +761,6 @@ Node;AmplifyShaderEditor.Vector4Node;444;-4147.766,-1354.935;Inherit;False;Prope Node;AmplifyShaderEditor.Vector4Node;448;-4147.063,-1547.646;Inherit;False;Property;_WrinkleValueSet1BR;Wrinkle Value Set 1B Right;86;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.Vector4Node;472;-3883.424,-1394.853;Inherit;False;Property;_WrinkleValueSet12CR;Wrinkle Value Set 12C Right;89;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.Vector4Node;471;-3887.424,-1584.853;Inherit;False;Property;_WrinkleValueSet12CL;Wrinkle Value Set 12C Left;84;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 -Node;AmplifyShaderEditor.Vector4Node;473;-3621.424,-1540.853;Inherit;False;Property;_WrinkleValueSet3DB;Wrinkle Value Set 3D Both;90;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.Vector4Node;445;-4887.204,-1589.502;Inherit;False;Property;_WrinkleValueSet1AL;Wrinkle Value Set 1A Left;80;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.Vector4Node;446;-4652.204,-1530.502;Inherit;False;Property;_WrinkleValueSet1BL;Wrinkle Value Set 1B Left;81;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.Vector4Node;441;-4886.904,-1406.791;Inherit;False;Property;_WrinkleValueSet2L;Wrinkle Value Set 2 Left;82;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 @@ -752,6 +780,8 @@ Node;AmplifyShaderEditor.SamplerNode;459;-4162.216,-2174.115;Inherit;True;Proper Node;AmplifyShaderEditor.SamplerNode;475;-4769.018,-1949.232;Inherit;True;Property;_WrinkleFlowMap1;Wrinkle Flow Map 1;77;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;476;-4464.136,-1858.228;Inherit;True;Property;_WrinkleFlowMap2;Wrinkle Flow Map 2;78;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;477;-4163.38,-1756.703;Inherit;True;Property;_WrinkleFlowMap3;Wrinkle Flow Map 3;79;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.Vector4Node;473;-3621.424,-1540.853;Inherit;False;Property;_WrinkleValueSet3DB;Wrinkle Value Set 3D Both;90;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.Vector4Node;478;-3577.134,-1356.462;Inherit;False;Property;_WrinkleValueSetBCCB;Wrinkle Value Set BCC Both;91;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 WireConnection;150;0;126;0 WireConnection;150;1;127;0 WireConnection;150;2;128;0 @@ -948,6 +978,7 @@ WireConnection;463;25;443;0 WireConnection;463;26;444;0 WireConnection;463;104;472;0 WireConnection;463;106;473;0 +WireConnection;463;210;478;0 WireConnection;358;0;1;0 WireConnection;357;0;356;0 WireConnection;357;1;464;0 @@ -995,4 +1026,4 @@ WireConnection;475;7;431;0 WireConnection;476;7;431;0 WireConnection;477;7;431;0 ASEEND*/ -//CHKSM=A07DD093C4A1C596D8A14169C24AFA5372CEB82E \ No newline at end of file +//CHKSM=966A34F5850855741298B244221C65C15541CCC4 \ No newline at end of file diff --git a/3D/Shaders/Amplify/RL_Amplify_WrinkleMapSystem.asset b/3D/Shaders/Amplify/RL_Amplify_WrinkleMapSystem.asset index 9847bc0..ec1c0ea 100644 --- a/3D/Shaders/Amplify/RL_Amplify_WrinkleMapSystem.asset +++ b/3D/Shaders/Amplify/RL_Amplify_WrinkleMapSystem.asset @@ -13,22 +13,18 @@ MonoBehaviour: m_Name: RL_Amplify_WrinkleMapSystem m_EditorClassIdentifier: m_functionInfo: "// Made with Amplify Shader Editor v1.9.1.5\n// Available at the - Unity Asset Store - http://u3d.as/y3X \n/*ASEBEGIN\nVersion=19105\nNode;AmplifyShaderEditor.FunctionInput;7;-561.4145,-1274.574;Inherit;False;Diffuse;5;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;8;-594.4482,-1188.253;Inherit;False;Smoothness;1;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;9;-575.4482,-1105.253;Inherit;False;Normal;3;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;71;-46.06532,-534.6825;Inherit;False;Diffuse - Blend 2;5;9;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;72;-84.09901,-452.3618;Inherit;False;Smoothness - Blend 2;1;12;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;73;-52.09902,-370.3618;Inherit;False;Normal - Blend 2;3;15;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;76;373.9914,-119.6657;Inherit;False;Diffuse + Unity Asset Store - http://u3d.as/y3X \n/*ASEBEGIN\nVersion=19105\nNode;AmplifyShaderEditor.FunctionInput;76;373.9914,-119.6657;Inherit;False;Diffuse Blend 3;5;10;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;77;335.9577,-37.34504;Inherit;False;Smoothness Blend 3;1;13;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;78;367.9577,44.65496;Inherit;False;Normal - Blend 3;3;16;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;33;-1249.861,-1135.6;Inherit;False;27;leftMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;55;-1019.903,-1070.698;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;45;-748.2649,-482.6722;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionOutput;0;1314.635,-396.9306;Inherit;False;True;-1;Diffuse;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionOutput;1;1309.735,-253.1305;Inherit;False;False;-1;Smoothness;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionOutput;6;1318.936,-120.5305;Inherit;False;False;-1;Normal;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;56;-1016.903,-849.6977;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;69;-595.5155,-678.0377;Inherit;False;Normal - Blend 1;3;14;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;34;-1254.708,-764.9794;Inherit;False;28;rightMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;44;-746.265,-277.672;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;98;-822.3413,-943.9315;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;96;-1253.341,-1028.932;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;97;-1255.341,-890.9315;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;99;-550.8871,-385.1749;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;100;-210.8871,-592.1749;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;102;283.119,-203.0115;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;47;-637.377,25.64655;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;48;-638.377,140.6467;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;24;-895.0123,-15.4979;Inherit;False;Value + Blend 3;3;16;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;33;-1249.861,-1135.6;Inherit;False;27;leftMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;55;-1019.903,-1070.698;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;45;-748.2649,-482.6722;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;56;-1016.903,-849.6977;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;69;-595.5155,-678.0377;Inherit;False;Normal + Blend 1;3;14;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;34;-1254.708,-764.9794;Inherit;False;28;rightMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;44;-746.265,-277.672;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;98;-822.3413,-943.9315;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;96;-1253.341,-1028.932;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;97;-1255.341,-890.9315;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;99;-550.8871,-385.1749;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;47;-637.377,25.64655;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;48;-638.377,140.6467;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;24;-895.0123,-15.4979;Inherit;False;Value Set 3 Left;4;23;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;26;-908.2667,201.9431;Inherit;False;Value Set 3 Right;4;28;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;18;-869.6239,96.05134;Inherit;False;Mask - Set 3;4;6;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.GetLocalVarNode;133;-684.2579,-87.05706;Inherit;False;129;value3DLeft;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;132;-425.7496,152.4991;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;134;-709.7649,283.0699;Inherit;False;130;value3DRight;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;41;-1152.365,-434.6721;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;42;-1153.365,-319.672;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;23;-1424.912,-473.7936;Inherit;False;Value + Set 3;4;6;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;132;-425.7496,152.4991;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;41;-1152.365,-434.6721;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;42;-1153.365,-319.672;Inherit;False;2;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;23;-1424.912,-473.7936;Inherit;False;Value Set 2 Left;4;22;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;17;-1394.066,-366.431;Inherit;False;Mask Set 2;4;5;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;25;-1433.336,-256.4583;Inherit;False;Value Set 2 Right;4;27;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.GetLocalVarNode;139;-1188.395,-537.8706;Inherit;False;137;value2CLeft;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;141;-950.782,-443.3104;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;142;-950.782,-322.3104;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;19;-1798.574,-1236.91;Inherit;False;Value - Set 1A Left;4;20;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;15;-1775.479,-1111.716;Inherit;False;Mask - Set 1A;4;3;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;21;-1801.875,-988.8464;Inherit;False;Value + Set 1A Left;4;20;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;21;-1801.875,-988.8464;Inherit;False;Value Set 1A Right;4;25;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;20;-1806.512,-873.1678;Inherit;False;Value Set 1B Left;4;21;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;16;-1783.61,-766.7807;Inherit;False;Mask Set 1B;4;4;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;22;-1818.051,-648.4255;Inherit;False;Value @@ -37,13 +33,21 @@ MonoBehaviour: Lerp;-1;;15;09cbe79402f023141a4dc1fddd4c9511;0;3;1;FLOAT;0.49;False;2;FLOAT;0.51;False;3;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DynamicAppendNode;120;-2980.736,-881.9244;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;119;-2978.736,-763.9243;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;115;-2984.105,-504.1597;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;112;-2983.105,-624.1596;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;107;-3227.591,-533.767;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.FunctionInput;103;-3490.977,-448.4078;Inherit;False;Value Set 12C Left;4;24;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;109;-3231.654,-336.0601;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.DynamicAppendNode;116;-2975.654,6.938761;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;108;-3226.768,-133.0466;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.DotProductOpNode;123;-2716.193,-185.9564;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;124;-2717.606,-60.14559;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;104;-3498.659,-222.5177;Inherit;False;Value Set 12C Right;4;29;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;105;-3460.351,-341.6038;Inherit;False;Mask - Set 123;4;7;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.DynamicAppendNode;117;-2985.754,-393.9609;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;114;-2975.654,-111.4612;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;113;-2976.004,-222.3599;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DotProductOpNode;121;-2720.606,-568.4261;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;122;-2722.019,-442.6149;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;127;-2723.07,-879.7939;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;128;-2724.483,-753.9828;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;118;-3226.418,-838.1046;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.RegisterLocalVarNode;129;-2523.568,-884.6939;Inherit;False;value3DLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;130;-2524.948,-756.3394;Inherit;False;value3DRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;135;-2516.753,-568.7963;Inherit;False;value1CLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;136;-2510.579,-444.2961;Inherit;False;value1CRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;137;-2495.519,-179.2551;Inherit;False;value2CLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;138;-2497.519,-58.25521;Inherit;False;value2CRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;140;-1217.495,-194.3703;Inherit;False;138;value2CRight;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;43;-972.2646,-542.6722;Inherit;False;27;leftMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;46;-970.7837,-191.8731;Inherit;False;28;rightMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;131;-423.4989,14.465;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;49;-436.9501,-98.39291;Inherit;False;27;leftMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;51;-200.9499,-38.39291;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;52;-448.4732,304.8703;Inherit;False;28;rightMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;50;-203.9771,186.7813;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;101;-18.28674,64.33205;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;106;-3488.772,-810.3871;Inherit;False;Value - Set 3D Both;4;30;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;27;-1319.989,24.95639;Inherit;True;leftMask;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.TextureCoordinatesNode;10;-2120.974,166.2354;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4\nNode;AmplifyShaderEditor.FunctionInput;67;-589.4818,-842.3586;Inherit;False;Diffuse + Set 123;4;7;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.DynamicAppendNode;117;-2985.754,-393.9609;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;114;-2975.654,-111.4612;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DynamicAppendNode;113;-2976.004,-222.3599;Inherit;False;FLOAT2;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT2;0\nNode;AmplifyShaderEditor.DotProductOpNode;121;-2720.606,-568.4261;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;122;-2722.019,-442.6149;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;127;-2723.07,-879.7939;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.DotProductOpNode;128;-2724.483,-753.9828;Inherit;False;2;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;118;-3226.418,-838.1046;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.RegisterLocalVarNode;130;-2524.948,-756.3394;Inherit;False;value3DRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;135;-2516.753,-568.7963;Inherit;False;value1CLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;136;-2510.579,-444.2961;Inherit;False;value1CRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;137;-2495.519,-179.2551;Inherit;False;value2CLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;138;-2497.519,-58.25521;Inherit;False;value2CRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;140;-1217.495,-194.3703;Inherit;False;138;value2CRight;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;43;-972.2646,-542.6722;Inherit;False;27;leftMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;46;-970.7837,-191.8731;Inherit;False;28;rightMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;131;-423.4989,14.465;Inherit;False;3;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;51;-200.9499,-38.39291;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;50;-203.9771,186.7813;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;101;-18.28674,64.33205;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;27;-1319.989,24.95639;Inherit;True;leftMask;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.TextureCoordinatesNode;10;-2120.974,166.2354;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4\nNode;AmplifyShaderEditor.FunctionInput;67;-589.4818,-842.3586;Inherit;False;Diffuse Blend 1;5;8;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;68;-627.5155,-760.0377;Inherit;False;Smoothness Blend 1;1;11;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;151;-572.8107,-586.7535;Inherit;False;Flow - Map 1;1;17;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;155;-26.81067,-284.7535;Inherit;False;Flow - Map 2;1;18;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;156;390.1893,132.2465;Inherit;False;Flow - Map 3;1;19;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionNode;169;220.2186,-741.5901;Inherit;False;RL_Amplify_WrinkleMaskBlend;-1;;59;3f445c9de4a3a124d841df7bd233b17f;0;8;10;COLOR;0,0,0,0;False;11;FLOAT;0;False;12;FLOAT3;0,0,0;False;16;FLOAT;0;False;15;COLOR;0,0,0,0;False;13;FLOAT;0;False;14;FLOAT3;0,0,0;False;20;FLOAT;0;False;3;COLOR;7;FLOAT;8;FLOAT3;9\nNode;AmplifyShaderEditor.FunctionNode;170;723.4176,-344.6829;Inherit;False;RL_Amplify_WrinkleMaskBlend;-1;;61;3f445c9de4a3a124d841df7bd233b17f;0;8;10;COLOR;0,0,0,0;False;11;FLOAT;0;False;12;FLOAT3;0,0,0;False;16;FLOAT;0;False;15;COLOR;0,0,0,0;False;13;FLOAT;0;False;14;FLOAT3;0,0,0;False;20;FLOAT;0;False;3;COLOR;7;FLOAT;8;FLOAT3;9\nNode;AmplifyShaderEditor.FunctionNode;171;-273.9871,-1035.686;Inherit;False;RL_Amplify_WrinkleMaskBlend;-1;;63;3f445c9de4a3a124d841df7bd233b17f;0;8;10;COLOR;0,0,0,0;False;11;FLOAT;0;False;12;FLOAT3;0,0,0;False;16;FLOAT;0;False;15;COLOR;0,0,0,0;False;13;FLOAT;0;False;14;FLOAT3;0,0,0;False;20;FLOAT;0;False;3;COLOR;7;FLOAT;8;FLOAT3;9\nWireConnection;55;0;33;0\nWireConnection;55;1;96;0\nWireConnection;45;0;43;0\nWireConnection;45;1;141;0\nWireConnection;0;0;170;7\nWireConnection;1;0;170;8\nWireConnection;6;0;170;9\nWireConnection;56;0;97;0\nWireConnection;56;1;34;0\nWireConnection;44;0;142;0\nWireConnection;44;1;46;0\nWireConnection;98;0;55;0\nWireConnection;98;1;56;0\nWireConnection;96;0;143;0\nWireConnection;96;1;29;0\nWireConnection;96;2;35;0\nWireConnection;97;0;30;0\nWireConnection;97;1;36;0\nWireConnection;97;2;144;0\nWireConnection;99;0;45;0\nWireConnection;99;1;44;0\nWireConnection;100;0;99;0\nWireConnection;102;0;101;0\nWireConnection;47;0;24;0\nWireConnection;47;1;18;0\nWireConnection;48;0;18;0\nWireConnection;48;1;26;0\nWireConnection;132;0;48;0\nWireConnection;132;1;134;0\nWireConnection;41;0;23;0\nWireConnection;41;1;17;0\nWireConnection;42;0;17;0\nWireConnection;42;1;25;0\nWireConnection;141;0;139;0\nWireConnection;141;1;41;0\nWireConnection;142;0;42;0\nWireConnection;142;1;140;0\nWireConnection;29;0;19;0\nWireConnection;29;1;15;0\nWireConnection;30;0;15;0\nWireConnection;30;1;21;0\nWireConnection;35;0;20;0\nWireConnection;35;1;16;0\nWireConnection;36;0;16;0\nWireConnection;36;1;22;0\nWireConnection;14;0;12;0\nWireConnection;13;0;11;0\nWireConnection;28;0;14;0\nWireConnection;12;3;10;1\nWireConnection;11;3;10;1\nWireConnection;120;0;118;0\nWireConnection;120;1;118;1\nWireConnection;119;0;118;2\nWireConnection;119;1;118;3\nWireConnection;115;0;109;0\nWireConnection;115;1;109;1\nWireConnection;112;0;107;0\nWireConnection;112;1;107;1\nWireConnection;107;0;103;0\nWireConnection;109;0;105;0\nWireConnection;116;0;108;2\nWireConnection;116;1;108;3\nWireConnection;108;0;104;0\nWireConnection;123;0;113;0\nWireConnection;123;1;114;0\nWireConnection;124;0;114;0\nWireConnection;124;1;116;0\nWireConnection;117;0;108;0\nWireConnection;117;1;108;1\nWireConnection;114;0;109;2\nWireConnection;114;1;109;3\nWireConnection;113;0;107;2\nWireConnection;113;1;107;3\nWireConnection;121;0;112;0\nWireConnection;121;1;115;0\nWireConnection;122;0;115;0\nWireConnection;122;1;117;0\nWireConnection;127;0;120;0\nWireConnection;127;1;115;0\nWireConnection;128;0;115;0\nWireConnection;128;1;119;0\nWireConnection;118;0;106;0\nWireConnection;129;0;127;0\nWireConnection;130;0;128;0\nWireConnection;135;0;121;0\nWireConnection;136;0;122;0\nWireConnection;137;0;123;0\nWireConnection;138;0;124;0\nWireConnection;131;0;133;0\nWireConnection;131;1;47;0\nWireConnection;51;0;49;0\nWireConnection;51;1;131;0\nWireConnection;50;0;132;0\nWireConnection;50;1;52;0\nWireConnection;101;0;51;0\nWireConnection;101;1;50;0\nWireConnection;27;0;13;0\nWireConnection;169;10;171;7\nWireConnection;169;11;171;8\nWireConnection;169;12;171;9\nWireConnection;169;16;100;0\nWireConnection;169;15;71;0\nWireConnection;169;13;72;0\nWireConnection;169;14;73;0\nWireConnection;169;20;155;0\nWireConnection;170;10;169;7\nWireConnection;170;11;169;8\nWireConnection;170;12;169;9\nWireConnection;170;16;102;0\nWireConnection;170;15;76;0\nWireConnection;170;13;77;0\nWireConnection;170;14;78;0\nWireConnection;170;20;156;0\nWireConnection;171;10;7;0\nWireConnection;171;11;8;0\nWireConnection;171;12;9;0\nWireConnection;171;16;98;0\nWireConnection;171;15;67;0\nWireConnection;171;13;68;0\nWireConnection;171;14;69;0\nWireConnection;171;20;151;0\nASEEND*/\n//CHKSM=081CCEA116703EBFBD176A5794A982805461C3A4" + Map 1;1;17;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;156;390.1893,132.2465;Inherit;False;Flow + Map 3;1;19;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionNode;173;723.4176,-344.6829;Inherit;False;RL_Amplify_WrinkleMaskBlend;-1;;66;3f445c9de4a3a124d841df7bd233b17f;0;8;10;COLOR;0,0,0,0;False;11;FLOAT;0;False;12;FLOAT3;0,0,0;False;16;FLOAT;0;False;15;COLOR;0,0,0,0;False;13;FLOAT;0;False;14;FLOAT3;0,0,0;False;20;FLOAT;0;False;3;COLOR;7;FLOAT;8;FLOAT3;9\nNode;AmplifyShaderEditor.FunctionNode;174;-277.1871,-1018.086;Inherit;False;RL_Amplify_WrinkleMaskBlend;-1;;67;3f445c9de4a3a124d841df7bd233b17f;0;8;10;COLOR;0,0,0,0;False;11;FLOAT;0;False;12;FLOAT3;0,0,0;False;16;FLOAT;0;False;15;COLOR;0,0,0,0;False;13;FLOAT;0;False;14;FLOAT3;0,0,0;False;20;FLOAT;0;False;3;COLOR;7;FLOAT;8;FLOAT3;9\nNode;AmplifyShaderEditor.CustomExpressionNode;182;1285.323,-1008.325;Inherit;False;return + max(max(In1, In2), In3) + min(min(In1, In2), In3) + In@;1;Create;4;True;In;FLOAT;0;In;;Inherit;False;True;In1;FLOAT;0;In;;Inherit;False;True;In2;FLOAT;0;In;;Inherit;False;True;In3;FLOAT;0;In;;Inherit;False;MinMaxDeltaBlend1;True;False;0;;False;4;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.CustomExpressionNode;183;1281.303,-818.2957;Inherit;False;return + max(max(In1, In2), In3) + min(min(In1, In2), In3) + In@;3;Create;4;True;In;FLOAT3;0,0,0;In;;Inherit;False;True;In1;FLOAT3;0,0,0;In;;Inherit;False;True;In2;FLOAT3;0,0,0;In;;Inherit;False;True;In3;FLOAT3;0,0,0;In;;Inherit;False;MinMaxDeltaBlend3;True;False;0;;False;4;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.CustomExpressionNode;181;1280.263,-1190.906;Inherit;False;return + max(max(In1, In2), In3) + min(min(In1, In2), In3) + In@;4;Create;4;True;In;FLOAT4;0,0,0,0;In;;Inherit;False;True;In1;FLOAT4;0,0,0,0;In;;Inherit;False;True;In2;FLOAT4;0,0,0,0;In;;Inherit;False;True;In3;FLOAT4;0,0,0,0;In;;Inherit;False;MinMaxDeltaBlend4;True;False;0;;False;4;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0,0,0,0;False;2;FLOAT4;0,0,0,0;False;3;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionOutput;1;1568.894,-980.9987;Inherit;False;False;-1;Smoothness;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionOutput;0;1584.952,-1073.969;Inherit;False;True;-1;Diffuse;0;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionOutput;6;1586.774,-890.55;Inherit;False;False;-1;Normal;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;184;-573.6499,-1406.233;Inherit;False;diffuse;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;185;-575.6499,-1316.233;Inherit;False;smoothness;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;186;-576.6499,-1229.233;Inherit;False;normal;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;71;-120.3744,-482.8913;Inherit;False;Diffuse + Blend 2;5;9;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;72;-158.4081,-400.5704;Inherit;False;Smoothness + Blend 2;1;12;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;73;-126.4081,-318.5704;Inherit;False;Normal + Blend 2;3;15;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;155;-101.1198,-232.9623;Inherit;False;Flow + Map 2;1;18;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionNode;172;145.9097,-689.7993;Inherit;False;RL_Amplify_WrinkleMaskBlend;-1;;65;3f445c9de4a3a124d841df7bd233b17f;0;8;10;COLOR;0,0,0,0;False;11;FLOAT;0;False;12;FLOAT3;0,0,0;False;16;FLOAT;0;False;15;COLOR;0,0,0,0;False;13;FLOAT;0;False;14;FLOAT3;0,0,0;False;20;FLOAT;0;False;3;COLOR;7;FLOAT;8;FLOAT3;9\nNode;AmplifyShaderEditor.WireNode;100;31.80379,-521.3842;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;190;-261.7354,-514.2387;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;188;-121.959,-670.4424;Inherit;False;185;smoothness;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;189;-105.959,-594.4424;Inherit;False;186;normal;1;0;OBJECT;;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;187;-104.959,-749.4424;Inherit;False;184;diffuse;1;0;OBJECT;;False;1;COLOR;0\nNode;AmplifyShaderEditor.GetLocalVarNode;191;365.919,-329.5444;Inherit;False;185;smoothness;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;192;381.919,-253.5443;Inherit;False;186;normal;1;0;OBJECT;;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;193;382.919,-408.5445;Inherit;False;184;diffuse;1;0;OBJECT;;False;1;COLOR;0\nNode;AmplifyShaderEditor.WireNode;194;503.6836,-175.676;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;102;222.119,-149.0115;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;200;900.4084,-832.2504;Inherit;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.WireNode;201;919.4084,-791.2504;Inherit;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.WireNode;203;908.1805,-812.326;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;198;877.4084,-1002.25;Inherit;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.WireNode;202;875.3811,-972.1533;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;199;873.4084,-944.2504;Inherit;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.WireNode;204;1102.181,-614.326;Inherit;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.WireNode;205;1122.181,-608.326;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;206;1141.181,-603.326;Inherit;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.WireNode;207;1142.08,-1209.525;Inherit;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.WireNode;208;1126.08,-1197.525;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;209;1112.08,-1179.525;Inherit;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;195;834.919,-1448.271;Inherit;False;185;smoothness;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;196;850.919,-1372.271;Inherit;False;186;normal;1;0;OBJECT;;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.GetLocalVarNode;197;851.919,-1527.271;Inherit;False;184;diffuse;1;0;OBJECT;;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;7;-796.348,-1482.942;Inherit;False;Diffuse;5;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;8;-829.3817,-1385.621;Inherit;False;Smoothness;1;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;9;-806.3818,-1289.621;Inherit;False;Normal;3;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;106;-3488.772,-810.3871;Inherit;False;Value + Set 3D Both;4;30;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.FunctionInput;210;-3496.053,-1030.011;Inherit;False;Value + Set BCC Both;4;31;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;211;-3226.053,-1063.011;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.RegisterLocalVarNode;214;-1797.563,-1104.779;Inherit;False;maskSet1A;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.BreakToComponentsNode;216;-3229.198,-1227.875;Inherit;False;FLOAT4;1;0;FLOAT4;0,0,0,0;False;16;FLOAT;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT;5;FLOAT;6;FLOAT;7;FLOAT;8;FLOAT;9;FLOAT;10;FLOAT;11;FLOAT;12;FLOAT;13;FLOAT;14;FLOAT;15\nNode;AmplifyShaderEditor.GetLocalVarNode;215;-3495.198,-1210.875;Inherit;False;214;maskSet1A;1;0;OBJECT;;False;1;FLOAT4;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;129;-2523.568,-884.6939;Inherit;False;value3DLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;217;-2519.842,-1184.267;Inherit;False;valueBCCLeft;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.RegisterLocalVarNode;219;-2521.842,-1080.267;Inherit;False;valueBCCRight;-1;True;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;212;-2851.053,-1193.011;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;213;-2851.053,-1073.011;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;133;-688.2579,-66.05706;Inherit;False;129;value3DLeft;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;220;-690.5079,-144.8798;Inherit;False;217;valueBCCLeft;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;134;-698.7649,266.0699;Inherit;False;130;value3DRight;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;221;-697.5079,345.1202;Inherit;False;219;valueBCCRight;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;52;-433.4732,307.8703;Inherit;False;28;rightMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.GetLocalVarNode;49;-439.9501,-99.39291;Inherit;False;27;leftMask;1;0;OBJECT;;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;15;-1992.479,-1106.716;Inherit;False;Mask + Set 1A;4;3;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0\nWireConnection;55;0;33;0\nWireConnection;55;1;96;0\nWireConnection;45;0;43;0\nWireConnection;45;1;141;0\nWireConnection;56;0;97;0\nWireConnection;56;1;34;0\nWireConnection;44;0;142;0\nWireConnection;44;1;46;0\nWireConnection;98;0;55;0\nWireConnection;98;1;56;0\nWireConnection;96;0;143;0\nWireConnection;96;1;29;0\nWireConnection;96;2;35;0\nWireConnection;97;0;30;0\nWireConnection;97;1;36;0\nWireConnection;97;2;144;0\nWireConnection;99;0;45;0\nWireConnection;99;1;44;0\nWireConnection;47;0;24;0\nWireConnection;47;1;18;0\nWireConnection;48;0;18;0\nWireConnection;48;1;26;0\nWireConnection;132;0;48;0\nWireConnection;132;1;134;0\nWireConnection;132;2;221;0\nWireConnection;41;0;23;0\nWireConnection;41;1;17;0\nWireConnection;42;0;17;0\nWireConnection;42;1;25;0\nWireConnection;141;0;139;0\nWireConnection;141;1;41;0\nWireConnection;142;0;42;0\nWireConnection;142;1;140;0\nWireConnection;29;0;19;0\nWireConnection;29;1;214;0\nWireConnection;30;0;214;0\nWireConnection;30;1;21;0\nWireConnection;35;0;20;0\nWireConnection;35;1;16;0\nWireConnection;36;0;16;0\nWireConnection;36;1;22;0\nWireConnection;14;0;12;0\nWireConnection;13;0;11;0\nWireConnection;28;0;14;0\nWireConnection;12;3;10;1\nWireConnection;11;3;10;1\nWireConnection;120;0;118;0\nWireConnection;120;1;118;1\nWireConnection;119;0;118;2\nWireConnection;119;1;118;3\nWireConnection;115;0;109;0\nWireConnection;115;1;109;1\nWireConnection;112;0;107;0\nWireConnection;112;1;107;1\nWireConnection;107;0;103;0\nWireConnection;109;0;105;0\nWireConnection;116;0;108;2\nWireConnection;116;1;108;3\nWireConnection;108;0;104;0\nWireConnection;123;0;113;0\nWireConnection;123;1;114;0\nWireConnection;124;0;114;0\nWireConnection;124;1;116;0\nWireConnection;117;0;108;0\nWireConnection;117;1;108;1\nWireConnection;114;0;109;2\nWireConnection;114;1;109;3\nWireConnection;113;0;107;2\nWireConnection;113;1;107;3\nWireConnection;121;0;112;0\nWireConnection;121;1;115;0\nWireConnection;122;0;115;0\nWireConnection;122;1;117;0\nWireConnection;127;0;120;0\nWireConnection;127;1;115;0\nWireConnection;128;0;115;0\nWireConnection;128;1;119;0\nWireConnection;118;0;106;0\nWireConnection;130;0;128;0\nWireConnection;135;0;121;0\nWireConnection;136;0;122;0\nWireConnection;137;0;123;0\nWireConnection;138;0;124;0\nWireConnection;131;0;220;0\nWireConnection;131;1;133;0\nWireConnection;131;2;47;0\nWireConnection;51;0;49;0\nWireConnection;51;1;131;0\nWireConnection;50;0;132;0\nWireConnection;50;1;52;0\nWireConnection;101;0;51;0\nWireConnection;101;1;50;0\nWireConnection;27;0;13;0\nWireConnection;173;10;193;0\nWireConnection;173;11;191;0\nWireConnection;173;12;192;0\nWireConnection;173;16;194;0\nWireConnection;173;15;76;0\nWireConnection;173;13;77;0\nWireConnection;173;14;78;0\nWireConnection;173;20;156;0\nWireConnection;174;10;184;0\nWireConnection;174;11;185;0\nWireConnection;174;12;186;0\nWireConnection;174;16;98;0\nWireConnection;174;15;67;0\nWireConnection;174;13;68;0\nWireConnection;174;14;69;0\nWireConnection;174;20;151;0\nWireConnection;182;0;208;0\nWireConnection;182;1;202;0\nWireConnection;182;2;203;0\nWireConnection;182;3;205;0\nWireConnection;183;0;209;0\nWireConnection;183;1;199;0\nWireConnection;183;2;201;0\nWireConnection;183;3;206;0\nWireConnection;181;0;207;0\nWireConnection;181;1;198;0\nWireConnection;181;2;200;0\nWireConnection;181;3;204;0\nWireConnection;1;0;182;0\nWireConnection;0;0;181;0\nWireConnection;6;0;183;0\nWireConnection;184;0;7;0\nWireConnection;185;0;8;0\nWireConnection;186;0;9;0\nWireConnection;172;10;187;0\nWireConnection;172;11;188;0\nWireConnection;172;12;189;0\nWireConnection;172;16;100;0\nWireConnection;172;15;71;0\nWireConnection;172;13;72;0\nWireConnection;172;14;73;0\nWireConnection;172;20;155;0\nWireConnection;100;0;190;0\nWireConnection;190;0;99;0\nWireConnection;194;0;102;0\nWireConnection;102;0;101;0\nWireConnection;200;0;172;7\nWireConnection;201;0;172;9\nWireConnection;203;0;172;8\nWireConnection;198;0;174;7\nWireConnection;202;0;174;8\nWireConnection;199;0;174;9\nWireConnection;204;0;173;7\nWireConnection;205;0;173;8\nWireConnection;206;0;173;9\nWireConnection;207;0;197;0\nWireConnection;208;0;195;0\nWireConnection;209;0;196;0\nWireConnection;211;0;210;0\nWireConnection;214;0;15;0\nWireConnection;216;0;215;0\nWireConnection;129;0;127;0\nWireConnection;217;0;212;0\nWireConnection;219;0;213;0\nWireConnection;212;0;211;0\nWireConnection;212;1;216;1\nWireConnection;213;0;216;1\nWireConnection;213;1;211;1\nASEEND*/\n//CHKSM=13F994CC35AEA45D7D10A8EAE2EAB470475B0E35" m_functionName: m_description: m_additionalIncludes: diff --git a/3D/Shaders/Amplify/RL_Amplify_WrinkleMaskBlend.asset b/3D/Shaders/Amplify/RL_Amplify_WrinkleMaskBlend.asset index 7925b27..d58f83f 100644 --- a/3D/Shaders/Amplify/RL_Amplify_WrinkleMaskBlend.asset +++ b/3D/Shaders/Amplify/RL_Amplify_WrinkleMaskBlend.asset @@ -13,11 +13,10 @@ MonoBehaviour: m_Name: RL_Amplify_WrinkleMaskBlend m_EditorClassIdentifier: m_functionInfo: "// Made with Amplify Shader Editor v1.9.1.5\n// Available at the - Unity Asset Store - http://u3d.as/y3X \n/*ASEBEGIN\nVersion=19105\nNode;AmplifyShaderEditor.LerpOp;18;-414.8555,56.44666;Inherit;False;3;0;FLOAT;0;False;1;FLOAT;0;False;2;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.LerpOp;19;-386.4705,273.6534;Inherit;False;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT;0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.LerpOp;17;-412.2947,-295.5495;Inherit;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;13;-695.0119,28.14616;Inherit;False;Smoothness - Blend;1;5;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionOutput;9;72.60135,78.67609;Inherit;False;False;-1;Normal;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionOutput;8;53.60136,-28.32395;Inherit;False;False;-1;Smoothness;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionOutput;7;70.60136,-131.8239;Inherit;False;True;-1;Diffuse;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;15;-693.5788,-266.1748;Inherit;False;Diffuse - Blend;5;4;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;10;-674.9424,-366.7728;Inherit;False;Diffuse;5;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionInput;12;-666.6767,333.7483;Inherit;False;Normal;3;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;14;-691.8113,433.0462;Inherit;False;Normal - Blend;3;6;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;11;-657.5759,-57.76627;Inherit;False;Smoothness;1;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;23;-1117.603,50.98128;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SaturateNode;22;-1302.823,-90.28536;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;16;-1713.802,69.57533;Inherit;False;Mask;1;3;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionNode;21;-1513.482,-86.02872;Inherit;False;Inverse - Lerp;-1;;1;09cbe79402f023141a4dc1fddd4c9511;0;3;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;20;-1708.279,-100.9836;Inherit;False;Flow;1;7;False;1;0;FLOAT;0;False;1;FLOAT;0\nWireConnection;18;0;11;0\nWireConnection;18;1;13;0\nWireConnection;18;2;23;0\nWireConnection;19;0;12;0\nWireConnection;19;1;14;0\nWireConnection;19;2;23;0\nWireConnection;17;0;10;0\nWireConnection;17;1;15;0\nWireConnection;17;2;23;0\nWireConnection;9;0;19;0\nWireConnection;8;0;18;0\nWireConnection;7;0;17;0\nWireConnection;23;0;22;0\nWireConnection;23;1;16;0\nWireConnection;22;0;21;0\nWireConnection;21;2;20;0\nWireConnection;21;3;16;0\nASEEND*/\n//CHKSM=86FBC723141181D1FDEFA5D72C86FE903EDB07EE" + Unity Asset Store - http://u3d.as/y3X \n/*ASEBEGIN\nVersion=19105\nNode;AmplifyShaderEditor.FunctionInput;15;-693.5788,-266.1748;Inherit;False;Diffuse + Blend;5;4;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;23;-1117.603,50.98128;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SaturateNode;22;-1302.823,-90.28536;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;16;-1713.802,69.57533;Inherit;False;Mask;1;3;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;20;-1708.279,-100.9836;Inherit;False;Flow;1;7;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleAddOpNode;24;-1494.583,-47.14618;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;10;-660.9424,-170.7728;Inherit;False;Diffuse;5;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.SimpleSubtractOpNode;26;-426.204,-234.2034;Inherit;False;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0\nNode;AmplifyShaderEditor.WireNode;32;-687.204,-65.20337;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.WireNode;33;-697.204,212.7966;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;13;-719.0115,10.54616;Inherit;False;Smoothness + Blend;1;5;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionInput;11;-686.5756,97.63375;Inherit;False;Smoothness;1;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleSubtractOpNode;27;-434.2041,32.19665;Inherit;False;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleSubtractOpNode;28;-432.6042,333.7961;Inherit;False;2;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;14;-688.6119,300.2457;Inherit;False;Normal + Blend;3;6;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionInput;12;-669.4773,389.9479;Inherit;False;Normal;3;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.WireNode;34;-712.0688,485.1304;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;31;-247.6041,425.5956;Inherit;False;2;2;0;FLOAT3;0,0,0;False;1;FLOAT;0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;30;-250.2041,113.3965;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.SimpleMultiplyOpNode;29;-238.804,-168.8035;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT;0;False;1;COLOR;0\nNode;AmplifyShaderEditor.FunctionOutput;9;51.7305,224.7716;Inherit;False;False;-1;Normal;2;False;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0\nNode;AmplifyShaderEditor.FunctionOutput;8;32.73053,117.7715;Inherit;False;False;-1;Smoothness;1;False;1;0;FLOAT;0;False;1;FLOAT;0\nNode;AmplifyShaderEditor.FunctionOutput;7;49.7305,14.2716;Inherit;False;True;-1;Diffuse;0;False;1;0;COLOR;0,0,0,0;False;1;COLOR;0\nWireConnection;23;0;22;0\nWireConnection;23;1;16;0\nWireConnection;22;0;24;0\nWireConnection;24;0;20;0\nWireConnection;24;1;16;0\nWireConnection;26;0;15;0\nWireConnection;26;1;10;0\nWireConnection;32;0;23;0\nWireConnection;33;0;23;0\nWireConnection;27;0;13;0\nWireConnection;27;1;11;0\nWireConnection;28;0;14;0\nWireConnection;28;1;12;0\nWireConnection;34;0;23;0\nWireConnection;31;0;28;0\nWireConnection;31;1;34;0\nWireConnection;30;0;27;0\nWireConnection;30;1;33;0\nWireConnection;29;0;26;0\nWireConnection;29;1;32;0\nWireConnection;9;0;31;0\nWireConnection;8;0;30;0\nWireConnection;7;0;29;0\nASEEND*/\n//CHKSM=7A3148F09D6D16ADF4DEADB745F2657269E3ECA9" m_functionName: m_description: m_additionalIncludes: diff --git a/3D/Shaders/Amplify/Tessellation/RL_Amplify_HeadShaderWrinkle_Baked_3D_Tessellation.shader b/3D/Shaders/Amplify/Tessellation/RL_Amplify_HeadShaderWrinkle_Baked_3D_Tessellation.shader index e3e6d1c..192d15f 100644 --- a/3D/Shaders/Amplify/Tessellation/RL_Amplify_HeadShaderWrinkle_Baked_3D_Tessellation.shader +++ b/3D/Shaders/Amplify/Tessellation/RL_Amplify_HeadShaderWrinkle_Baked_3D_Tessellation.shader @@ -57,6 +57,7 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" _WrinkleValueSet3R("Wrinkle Value Set 3 Right", Vector) = (0,0,0,0) _WrinkleValueSet12CR("Wrinkle Value Set 12C Right", Vector) = (0,0,0,0) _WrinkleValueSet3DB("Wrinkle Value Set 3D Both", Vector) = (0,0,0,0) + _WrinkleValueSetBCCB("Wrinkle Value Set BCC Both", Vector) = (0,0,0,0) [HideInInspector] _texcoord( "", 2D ) = "white" {} [HideInInspector] __dirty( "", Int ) = 1 } @@ -74,8 +75,14 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" #define ASE_USING_SAMPLING_MACROS 1 #if defined(SHADER_API_D3D11) || defined(SHADER_API_XBOXONE) || defined(UNITY_COMPILER_HLSLCC) || defined(SHADER_API_PSSL) || (defined(SHADER_TARGET_SURFACE_ANALYSIS) && !defined(SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER))//ASE Sampler Macros #define SAMPLE_TEXTURE2D(tex,samplerTex,coord) tex.Sample(samplerTex,coord) + #define SAMPLE_TEXTURE2D_LOD(tex,samplerTex,coord,lod) tex.SampleLevel(samplerTex,coord, lod) + #define SAMPLE_TEXTURE2D_BIAS(tex,samplerTex,coord,bias) tex.SampleBias(samplerTex,coord,bias) + #define SAMPLE_TEXTURE2D_GRAD(tex,samplerTex,coord,ddx,ddy) tex.SampleGrad(samplerTex,coord,ddx,ddy) #else//ASE Sampling Macros #define SAMPLE_TEXTURE2D(tex,samplerTex,coord) tex2D(tex,coord) + #define SAMPLE_TEXTURE2D_LOD(tex,samplerTex,coord,lod) tex2Dlod(tex,float4(coord,0,lod)) + #define SAMPLE_TEXTURE2D_BIAS(tex,samplerTex,coord,bias) tex2Dbias(tex,float4(coord,0,bias)) + #define SAMPLE_TEXTURE2D_GRAD(tex,samplerTex,coord,ddx,ddy) tex2Dgrad(tex,coord,ddx,ddy) #endif//ASE Sampling Macros #pragma surface surf StandardCustom keepalpha addshadow fullforwardshadows exclude_path:deferred vertex:vertexDataFunc tessellate:tessFunction tessphong:_TessPhongStrength @@ -104,6 +111,8 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend1); uniform half4 _WrinkleNormalBlend1_ST; SamplerState sampler_Linear_Repeat; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowPack); + uniform half4 _WrinkleFlowPack_ST; uniform half4 _WrinkleValueSet12CL; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet123); uniform half4 _WrinkleMaskSet123_ST; @@ -116,8 +125,6 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" uniform half4 _WrinkleValueSet1AR; uniform half4 _WrinkleValueSet1BR; uniform half4 _WrinkleValueSet12CR; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowPack); - uniform half4 _WrinkleFlowPack_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend2); uniform half4 _WrinkleNormalBlend2_ST; uniform half4 _WrinkleValueSet2L; @@ -126,6 +133,7 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" uniform half4 _WrinkleValueSet2R; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend3); uniform half4 _WrinkleNormalBlend3_ST; + uniform half4 _WrinkleValueSetBCCB; uniform half4 _WrinkleValueSet3DB; uniform half4 _WrinkleValueSet3L; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet3); @@ -181,6 +189,25 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" uniform float _EdgeLength; uniform float _TessPhongStrength; + + half3 MinMaxDeltaBlend3183_g17( half3 In, half3 In1, half3 In2, half3 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + + half4 MinMaxDeltaBlend4181_g17( half4 In, half4 In1, half4 In2, half4 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + + half MinMaxDeltaBlend1182_g17( half In, half In1, half In2, half In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + float4 tessFunction( appdata_full v0, appdata_full v1, appdata_full v2 ) { return UnityEdgeLengthBasedTess (v0.vertex, v1.vertex, v2.vertex, _EdgeLength); @@ -231,7 +258,11 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" float2 uv_BumpMap = i.uv_texcoord * _BumpMap_ST.xy + _BumpMap_ST.zw; half normalMapScale259 = _BumpScale; half3 normalMap218 = UnpackScaleNormal( SAMPLE_TEXTURE2D( _BumpMap, sampler_BumpMap, uv_BumpMap ), normalMapScale259 ); + half3 normal186_g17 = normalMap218; + half3 In183_g17 = normal186_g17; float2 uv_WrinkleNormalBlend1 = i.uv_texcoord * _WrinkleNormalBlend1_ST.xy + _WrinkleNormalBlend1_ST.zw; + float2 uv_WrinkleFlowPack = i.uv_texcoord * _WrinkleFlowPack_ST.xy + _WrinkleFlowPack_ST.zw; + half4 tex2DNode260 = SAMPLE_TEXTURE2D( _WrinkleFlowPack, sampler_Linear_Repeat, uv_WrinkleFlowPack ); half temp_output_1_0_g19 = 0.49; half leftMask27_g17 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g19 ) / ( 0.51 - temp_output_1_0_g19 ) ) ); half4 break107_g17 = _WrinkleValueSet12CL; @@ -242,12 +273,12 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" half dotResult121_g17 = dot( appendResult112_g17 , appendResult115_g17 ); half value1CLeft135_g17 = dotResult121_g17; float2 uv_WrinkleMaskSet1A = i.uv_texcoord * _WrinkleMaskSet1A_ST.xy + _WrinkleMaskSet1A_ST.zw; - half4 temp_output_15_0_g17 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); - half dotResult29_g17 = dot( _WrinkleValueSet1AL , temp_output_15_0_g17 ); + half4 maskSet1A214_g17 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); + half dotResult29_g17 = dot( _WrinkleValueSet1AL , maskSet1A214_g17 ); float2 uv_WrinkleMaskSet1B = i.uv_texcoord * _WrinkleMaskSet1B_ST.xy + _WrinkleMaskSet1B_ST.zw; half4 temp_output_16_0_g17 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1B, sampler_Linear_Repeat, uv_WrinkleMaskSet1B ); half dotResult35_g17 = dot( _WrinkleValueSet1BL , temp_output_16_0_g17 ); - half dotResult30_g17 = dot( temp_output_15_0_g17 , _WrinkleValueSet1AR ); + half dotResult30_g17 = dot( maskSet1A214_g17 , _WrinkleValueSet1AR ); half dotResult36_g17 = dot( temp_output_16_0_g17 , _WrinkleValueSet1BR ); half4 break108_g17 = _WrinkleValueSet12CR; half2 appendResult117_g17 = (half2(break108_g17.x , break108_g17.y)); @@ -255,12 +286,9 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" half value1CRight136_g17 = dotResult122_g17; half temp_output_1_0_g18 = 0.51; half rightMask28_g17 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g18 ) / ( 0.49 - temp_output_1_0_g18 ) ) ); - half temp_output_16_0_g63 = ( ( leftMask27_g17 * ( value1CLeft135_g17 + dotResult29_g17 + dotResult35_g17 ) ) + ( ( dotResult30_g17 + dotResult36_g17 + value1CRight136_g17 ) * rightMask28_g17 ) ); - half temp_output_1_0_g64 = 0.0; - float2 uv_WrinkleFlowPack = i.uv_texcoord * _WrinkleFlowPack_ST.xy + _WrinkleFlowPack_ST.zw; - half4 tex2DNode260 = SAMPLE_TEXTURE2D( _WrinkleFlowPack, sampler_Linear_Repeat, uv_WrinkleFlowPack ); - half temp_output_23_0_g63 = ( saturate( ( ( temp_output_16_0_g63 - temp_output_1_0_g64 ) / ( tex2DNode260.r - temp_output_1_0_g64 ) ) ) * temp_output_16_0_g63 ); - half3 lerpResult19_g63 = lerp( normalMap218 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale259 ) , temp_output_23_0_g63); + half temp_output_16_0_g67 = ( ( leftMask27_g17 * ( value1CLeft135_g17 + dotResult29_g17 + dotResult35_g17 ) ) + ( ( dotResult30_g17 + dotResult36_g17 + value1CRight136_g17 ) * rightMask28_g17 ) ); + half temp_output_23_0_g67 = ( saturate( ( tex2DNode260.r + temp_output_16_0_g67 ) ) * temp_output_16_0_g67 ); + half3 In1183_g17 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale259 ) - normal186_g17 ) * temp_output_23_0_g67 ); float2 uv_WrinkleNormalBlend2 = i.uv_texcoord * _WrinkleNormalBlend2_ST.xy + _WrinkleNormalBlend2_ST.zw; half2 appendResult113_g17 = (half2(break107_g17.z , break107_g17.w)); half2 appendResult114_g17 = (half2(break109_g17.z , break109_g17.w)); @@ -273,11 +301,12 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" half2 appendResult116_g17 = (half2(break108_g17.z , break108_g17.w)); half dotResult124_g17 = dot( appendResult114_g17 , appendResult116_g17 ); half value2CRight138_g17 = dotResult124_g17; - half temp_output_16_0_g59 = ( ( leftMask27_g17 * ( value2CLeft137_g17 + dotResult41_g17 ) ) + ( ( dotResult42_g17 + value2CRight138_g17 ) * rightMask28_g17 ) ); - half temp_output_1_0_g60 = 0.0; - half temp_output_23_0_g59 = ( saturate( ( ( temp_output_16_0_g59 - temp_output_1_0_g60 ) / ( tex2DNode260.g - temp_output_1_0_g60 ) ) ) * temp_output_16_0_g59 ); - half3 lerpResult19_g59 = lerp( lerpResult19_g63 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale259 ) , temp_output_23_0_g59); + half temp_output_16_0_g68 = ( ( leftMask27_g17 * ( value2CLeft137_g17 + dotResult41_g17 ) ) + ( ( dotResult42_g17 + value2CRight138_g17 ) * rightMask28_g17 ) ); + half temp_output_23_0_g68 = ( saturate( ( tex2DNode260.g + temp_output_16_0_g68 ) ) * temp_output_16_0_g68 ); + half3 In2183_g17 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale259 ) - normal186_g17 ) * temp_output_23_0_g68 ); float2 uv_WrinkleNormalBlend3 = i.uv_texcoord * _WrinkleNormalBlend3_ST.xy + _WrinkleNormalBlend3_ST.zw; + half4 break211_g17 = _WrinkleValueSetBCCB; + half valueBCCLeft217_g17 = ( break211_g17.x * maskSet1A214_g17.y ); half4 break118_g17 = _WrinkleValueSet3DB; half2 appendResult120_g17 = (half2(break118_g17.x , break118_g17.y)); half dotResult127_g17 = dot( appendResult120_g17 , appendResult115_g17 ); @@ -289,11 +318,12 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" half2 appendResult119_g17 = (half2(break118_g17.z , break118_g17.w)); half dotResult128_g17 = dot( appendResult115_g17 , appendResult119_g17 ); half value3DRight130_g17 = dotResult128_g17; - half temp_output_16_0_g61 = ( ( leftMask27_g17 * ( value3DLeft129_g17 + dotResult47_g17 ) ) + ( ( dotResult48_g17 + value3DRight130_g17 ) * rightMask28_g17 ) ); - half temp_output_1_0_g62 = 0.0; - half temp_output_23_0_g61 = ( saturate( ( ( temp_output_16_0_g61 - temp_output_1_0_g62 ) / ( tex2DNode260.b - temp_output_1_0_g62 ) ) ) * temp_output_16_0_g61 ); - half3 lerpResult19_g61 = lerp( lerpResult19_g59 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale259 ) , temp_output_23_0_g61); - half3 normalWrinkle231 = lerpResult19_g61; + half valueBCCRight219_g17 = ( maskSet1A214_g17.y * break211_g17.y ); + half temp_output_16_0_g66 = ( ( leftMask27_g17 * ( valueBCCLeft217_g17 + value3DLeft129_g17 + dotResult47_g17 ) ) + ( ( dotResult48_g17 + value3DRight130_g17 + valueBCCRight219_g17 ) * rightMask28_g17 ) ); + half temp_output_23_0_g66 = ( saturate( ( tex2DNode260.b + temp_output_16_0_g66 ) ) * temp_output_16_0_g66 ); + half3 In3183_g17 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale259 ) - normal186_g17 ) * temp_output_23_0_g66 ); + half3 localMinMaxDeltaBlend3183_g17 = MinMaxDeltaBlend3183_g17( In183_g17 , In1183_g17 , In2183_g17 , In3183_g17 ); + half3 normalWrinkle231 = localMinMaxDeltaBlend3183_g17; #ifdef BOOLEAN_USE_WRINKLE_ON half3 staticSwitch220 = normalWrinkle231; #else @@ -304,13 +334,16 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" o.Normal = BlendNormals( staticSwitch220 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _DetailNormalMap, sampler_DetailNormalMap, uv_DetailNormalMap ), ( _DetailNormalMapScale * SAMPLE_TEXTURE2D( _DetailMask, sampler_DetailMask, uv_DetailMask ).g ) ) ); float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw; half4 diffuseMap216 = SAMPLE_TEXTURE2D( _MainTex, sampler_MainTex, uv_MainTex ); + half4 diffuse184_g17 = diffuseMap216; + half4 In181_g17 = diffuse184_g17; float2 uv_WrinkleDiffuseBlend1 = i.uv_texcoord * _WrinkleDiffuseBlend1_ST.xy + _WrinkleDiffuseBlend1_ST.zw; - half4 lerpResult17_g63 = lerp( diffuseMap216 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) , temp_output_23_0_g63); + half4 In1181_g17 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) - diffuse184_g17 ) * temp_output_23_0_g67 ); float2 uv_WrinkleDiffuseBlend2 = i.uv_texcoord * _WrinkleDiffuseBlend2_ST.xy + _WrinkleDiffuseBlend2_ST.zw; - half4 lerpResult17_g59 = lerp( lerpResult17_g63 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) , temp_output_23_0_g59); + half4 In2181_g17 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) - diffuse184_g17 ) * temp_output_23_0_g68 ); float2 uv_WrinkleDiffuseBlend3 = i.uv_texcoord * _WrinkleDiffuseBlend3_ST.xy + _WrinkleDiffuseBlend3_ST.zw; - half4 lerpResult17_g61 = lerp( lerpResult17_g59 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) , temp_output_23_0_g61); - half4 diffuseWrinkle229 = lerpResult17_g61; + half4 In3181_g17 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) - diffuse184_g17 ) * temp_output_23_0_g66 ); + half4 localMinMaxDeltaBlend4181_g17 = MinMaxDeltaBlend4181_g17( In181_g17 , In1181_g17 , In2181_g17 , In3181_g17 ); + half4 diffuseWrinkle229 = localMinMaxDeltaBlend4181_g17; #ifdef BOOLEAN_USE_WRINKLE_ON half4 staticSwitch217 = diffuseWrinkle229; #else @@ -324,12 +357,15 @@ Shader "Reallusion/Amplify/RL_HeadShaderWrinkle_Baked_3D_Tessellation" half4 tex2DNode150 = SAMPLE_TEXTURE2D( _MetallicGlossMap, sampler_MetallicGlossMap, uv_MetallicGlossMap ); o.Metallic = ( _Metallic * tex2DNode150.g ); half smoothnessMap221 = tex2DNode150.a; + half smoothness185_g17 = smoothnessMap221; + half In182_g17 = smoothness185_g17; float2 uv_WrinkleSmoothnessPack = i.uv_texcoord * _WrinkleSmoothnessPack_ST.xy + _WrinkleSmoothnessPack_ST.zw; half4 tex2DNode252 = SAMPLE_TEXTURE2D( _WrinkleSmoothnessPack, sampler_Linear_Repeat, uv_WrinkleSmoothnessPack ); - half lerpResult18_g63 = lerp( smoothnessMap221 , tex2DNode252.r , temp_output_23_0_g63); - half lerpResult18_g59 = lerp( lerpResult18_g63 , tex2DNode252.g , temp_output_23_0_g59); - half lerpResult18_g61 = lerp( lerpResult18_g59 , tex2DNode252.b , temp_output_23_0_g61); - half smoothnessWrinkle230 = lerpResult18_g61; + half In1182_g17 = ( ( tex2DNode252.r - smoothness185_g17 ) * temp_output_23_0_g67 ); + half In2182_g17 = ( ( tex2DNode252.g - smoothness185_g17 ) * temp_output_23_0_g68 ); + half In3182_g17 = ( ( tex2DNode252.b - smoothness185_g17 ) * temp_output_23_0_g66 ); + half localMinMaxDeltaBlend1182_g17 = MinMaxDeltaBlend1182_g17( In182_g17 , In1182_g17 , In2182_g17 , In3182_g17 ); + half smoothnessWrinkle230 = localMinMaxDeltaBlend1182_g17; #ifdef BOOLEAN_USE_WRINKLE_ON half staticSwitch223 = smoothnessWrinkle230; #else @@ -400,15 +436,15 @@ Node;AmplifyShaderEditor.SamplerNode;147;-2136.865,-193.1417;Inherit;True;Proper Node;AmplifyShaderEditor.SimpleMultiplyOpNode;156;-1741.162,-239.0549;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.SamplerNode;146;-1765.358,-564.0937;Inherit;True;Property;_BumpMap;Bump Map;10;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;bump;Auto;True;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.RangedFloatNode;164;-1171.638,1087.455;Inherit;False;Property;_GlossMapScale;Gloss Map Scale;9;0;Create;True;0;0;0;False;0;False;1;0;0;1;0;1;FLOAT;0 -Node;AmplifyShaderEditor.CommentaryNode;225;-5196.062,-617.9283;Inherit;False;2700.847;2041.228;;32;226;228;227;244;252;251;250;249;248;247;246;245;243;242;241;240;239;238;237;236;235;234;233;232;231;230;229;254;255;256;257;260;Wrinkle System;1,0.5137255,0.7779443,1;0;0 -Node;AmplifyShaderEditor.RegisterLocalVarNode;229;-2780.533,-255.9874;Inherit;False;diffuseWrinkle;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.CommentaryNode;225;-5196.062,-617.9283;Inherit;False;2700.847;2041.228;;33;226;228;227;244;252;251;250;249;248;247;246;245;243;242;241;240;239;238;237;236;235;234;233;232;231;230;229;254;255;256;257;260;261;Wrinkle System;1,0.5137255,0.7779443,1;0;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;229;-2780.533,-255.9874;Inherit;False;diffuseWrinkle;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;230;-2800.533,-141.9883;Inherit;False;smoothnessWrinkle;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;231;-2785.533,-31.98799;Inherit;False;normalWrinkle;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 Node;AmplifyShaderEditor.WireNode;224;-1461.594,834.7779;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.SamplerNode;150;-1813.843,830.624;Inherit;True;Property;_MetallicGlossMap;Metallic Gloss Map;7;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.StaticSwitch;220;-1214.007,-528.2222;Inherit;False;Property;BOOLEAN_USE_WRINKLE1;Use Wrinkle;31;0;Create;False;0;0;0;False;0;False;0;0;0;True;BOOLEAN_USE_WRINKLE_ON;Toggle;2;Key0;Key1;Reference;217;True;False;All;9;1;FLOAT3;0,0,0;False;0;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT3;0,0,0;False;4;FLOAT3;0,0,0;False;5;FLOAT3;0,0,0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT3;0,0,0;False;1;FLOAT3;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;216;-1662.571,-903.2975;Inherit;False;diffuseMap;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 -Node;AmplifyShaderEditor.GetLocalVarNode;215;-1662.778,-814.576;Inherit;False;229;diffuseWrinkle;1;0;OBJECT;;False;1;COLOR;0 +Node;AmplifyShaderEditor.GetLocalVarNode;215;-1662.778,-814.576;Inherit;False;229;diffuseWrinkle;1;0;OBJECT;;False;1;FLOAT4;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;218;-1453.549,-562.6266;Inherit;False;normalMap;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 Node;AmplifyShaderEditor.GetLocalVarNode;219;-1454.242,-478.0932;Inherit;False;231;normalWrinkle;1;0;OBJECT;;False;1;FLOAT3;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;221;-1459.931,922.4847;Inherit;False;smoothnessMap;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 @@ -440,12 +476,13 @@ Node;AmplifyShaderEditor.SamplerNode;254;-4497.854,-236.4908;Inherit;True;Proper Node;AmplifyShaderEditor.SamplerNode;241;-4793.884,-542.6848;Inherit;True;Property;_WrinkleMaskSet1A;Wrinkle Mask Set 1A;32;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;244;-4500.472,-439.6077;Inherit;True;Property;_WrinkleMaskSet1B;Wrinkle Mask Set 1B;33;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;243;-4200.036,-335.8185;Inherit;True;Property;_WrinkleMaskSet2;Wrinkle Mask Set 2;34;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;black;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 -Node;AmplifyShaderEditor.FunctionNode;258;-3270.997,-186.733;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;17;66048c3ae18f3f84c9195a84e20ae59a;0;31;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;3;COLOR;0;FLOAT;1;FLOAT3;6 +Node;AmplifyShaderEditor.FunctionNode;258;-3270.997,-186.733;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;17;66048c3ae18f3f84c9195a84e20ae59a;0;32;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;210;FLOAT4;0,0,0,0;False;3;FLOAT4;0;FLOAT;1;FLOAT3;6 Node;AmplifyShaderEditor.RangedFloatNode;153;-2342.297,-518.5097;Inherit;False;Property;_BumpScale;Bump Scale;11;0;Create;True;0;0;0;False;0;False;1;0;0;2;0;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;259;-2019.033,-427.5625;Inherit;False;normalMapScale;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.GetLocalVarNode;232;-5054.76,664.8648;Inherit;False;259;normalMapScale;1;0;OBJECT;;False;1;FLOAT;0 Node;AmplifyShaderEditor.SamplerNode;252;-4498.753,190.8336;Inherit;True;Property;_WrinkleSmoothnessPack;Wrinkle Smoothness Pack;40;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;gray;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;260;-4180.02,307.7042;Inherit;True;Property;_WrinkleFlowPack;Wrinkle Flow Pack;41;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 +Node;AmplifyShaderEditor.Vector4Node;261;-3561.661,1180.72;Inherit;False;Property;_WrinkleValueSetBCCB;Wrinkle Value Set BCC Both;56;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 WireConnection;170;0;151;2 WireConnection;171;0;169;0 WireConnection;171;1;170;0 @@ -548,8 +585,9 @@ WireConnection;258;25;235;0 WireConnection;258;26;236;0 WireConnection;258;104;255;0 WireConnection;258;106;257;0 +WireConnection;258;210;261;0 WireConnection;259;0;153;0 WireConnection;252;7;251;0 WireConnection;260;7;251;0 ASEEND*/ -//CHKSM=C5798934AFEDDF290DF4E09C855FA83DD7E7B23F \ No newline at end of file +//CHKSM=3F8FCB15FEE77B696269CEAD6C20FBAB8B8CD15D \ No newline at end of file diff --git a/3D/Shaders/Amplify/Tessellation/RL_Amplify_SkinShader_Variants_3D_Tessellation.shader b/3D/Shaders/Amplify/Tessellation/RL_Amplify_SkinShader_Variants_3D_Tessellation.shader index 95d8b8c..24b6c5e 100644 --- a/3D/Shaders/Amplify/Tessellation/RL_Amplify_SkinShader_Variants_3D_Tessellation.shader +++ b/3D/Shaders/Amplify/Tessellation/RL_Amplify_SkinShader_Variants_3D_Tessellation.shader @@ -97,6 +97,7 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" _WrinkleValueSet3R("Wrinkle Value Set 3 Right", Vector) = (0,0,0,0) _WrinkleValueSet12CR("Wrinkle Value Set 12C Right", Vector) = (0,0,0,0) _WrinkleValueSet3DB("Wrinkle Value Set 3D Both", Vector) = (0,0,0,0) + _WrinkleValueSetBCCB("Wrinkle Value Set BCC Both", Vector) = (0,0,0,0) [HideInInspector] _texcoord( "", 2D ) = "white" {} [HideInInspector] __dirty( "", Int ) = 1 } @@ -152,6 +153,8 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend1); uniform half4 _WrinkleNormalBlend1_ST; SamplerState sampler_Linear_Repeat; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap1); + uniform half4 _WrinkleFlowMap1_ST; uniform half4 _WrinkleValueSet12CL; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet123); uniform half4 _WrinkleMaskSet123_ST; @@ -164,25 +167,24 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" uniform half4 _WrinkleValueSet1AR; uniform half4 _WrinkleValueSet1BR; uniform half4 _WrinkleValueSet12CR; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap1); - uniform half4 _WrinkleFlowMap1_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend2); uniform half4 _WrinkleNormalBlend2_ST; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap2); + uniform half4 _WrinkleFlowMap2_ST; uniform half4 _WrinkleValueSet2L; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet2); uniform half4 _WrinkleMaskSet2_ST; uniform half4 _WrinkleValueSet2R; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap2); - uniform half4 _WrinkleFlowMap2_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleNormalBlend3); uniform half4 _WrinkleNormalBlend3_ST; + UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap3); + uniform half4 _WrinkleFlowMap3_ST; + uniform half4 _WrinkleValueSetBCCB; uniform half4 _WrinkleValueSet3DB; uniform half4 _WrinkleValueSet3L; UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleMaskSet3); uniform half4 _WrinkleMaskSet3_ST; uniform half4 _WrinkleValueSet3R; - UNITY_DECLARE_TEX2D_NOSAMPLER(_WrinkleFlowMap3); - uniform half4 _WrinkleFlowMap3_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_NormalBlendMap); uniform half4 _NormalBlendMap_ST; UNITY_DECLARE_TEX2D_NOSAMPLER(_SSSMap); @@ -268,6 +270,12 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" uniform float _TessPhongStrength; + half3 MinMaxDeltaBlend3183_g40( half3 In, half3 In1, half3 In2, half3 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + void SkinMask179( half4 In1, half4 Mod1, half4 Scatter1, half UMMS, half UMSS, out half SmoothnessMod, out half ScatterMask ) { float mask = saturate(In1.r + In1.g + In1.b + In1.a); @@ -290,6 +298,18 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" } + half4 MinMaxDeltaBlend4181_g40( half4 In, half4 In1, half4 In2, half4 In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + + half MinMaxDeltaBlend1182_g40( half In, half In1, half In2, half In3 ) + { + return max(max(In1, In2), In3) + min(min(In1, In2), In3) + In; + } + + float4 tessFunction( appdata_full v0, appdata_full v1, appdata_full v2 ) { return UnityEdgeLengthBasedTess (v0.vertex, v1.vertex, v2.vertex, _EdgeLength); @@ -340,7 +360,10 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" float2 uv_NormalMap = i.uv_texcoord * _NormalMap_ST.xy + _NormalMap_ST.zw; half normalMapScale359 = _NormalStrength; half3 normalMap360 = UnpackScaleNormal( SAMPLE_TEXTURE2D( _NormalMap, sampler_DiffuseMap, uv_NormalMap ), normalMapScale359 ); + half3 normal186_g40 = normalMap360; + half3 In183_g40 = normal186_g40; float2 uv_WrinkleNormalBlend1 = i.uv_texcoord * _WrinkleNormalBlend1_ST.xy + _WrinkleNormalBlend1_ST.zw; + float2 uv_WrinkleFlowMap1 = i.uv_texcoord * _WrinkleFlowMap1_ST.xy + _WrinkleFlowMap1_ST.zw; half temp_output_1_0_g42 = 0.49; half leftMask27_g40 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g42 ) / ( 0.51 - temp_output_1_0_g42 ) ) ); half4 break107_g40 = _WrinkleValueSet12CL; @@ -351,12 +374,12 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" half dotResult121_g40 = dot( appendResult112_g40 , appendResult115_g40 ); half value1CLeft135_g40 = dotResult121_g40; float2 uv_WrinkleMaskSet1A = i.uv_texcoord * _WrinkleMaskSet1A_ST.xy + _WrinkleMaskSet1A_ST.zw; - half4 temp_output_15_0_g40 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); - half dotResult29_g40 = dot( _WrinkleValueSet1AL , temp_output_15_0_g40 ); + half4 maskSet1A214_g40 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1A, sampler_Linear_Repeat, uv_WrinkleMaskSet1A ); + half dotResult29_g40 = dot( _WrinkleValueSet1AL , maskSet1A214_g40 ); float2 uv_WrinkleMaskSet1B = i.uv_texcoord * _WrinkleMaskSet1B_ST.xy + _WrinkleMaskSet1B_ST.zw; half4 temp_output_16_0_g40 = SAMPLE_TEXTURE2D( _WrinkleMaskSet1B, sampler_Linear_Repeat, uv_WrinkleMaskSet1B ); half dotResult35_g40 = dot( _WrinkleValueSet1BL , temp_output_16_0_g40 ); - half dotResult30_g40 = dot( temp_output_15_0_g40 , _WrinkleValueSet1AR ); + half dotResult30_g40 = dot( maskSet1A214_g40 , _WrinkleValueSet1AR ); half dotResult36_g40 = dot( temp_output_16_0_g40 , _WrinkleValueSet1BR ); half4 break108_g40 = _WrinkleValueSet12CR; half2 appendResult117_g40 = (half2(break108_g40.x , break108_g40.y)); @@ -364,12 +387,11 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" half value1CRight136_g40 = dotResult122_g40; half temp_output_1_0_g41 = 0.51; half rightMask28_g40 = saturate( ( ( i.uv_texcoord.x - temp_output_1_0_g41 ) / ( 0.49 - temp_output_1_0_g41 ) ) ); - half temp_output_16_0_g63 = ( ( leftMask27_g40 * ( value1CLeft135_g40 + dotResult29_g40 + dotResult35_g40 ) ) + ( ( dotResult30_g40 + dotResult36_g40 + value1CRight136_g40 ) * rightMask28_g40 ) ); - half temp_output_1_0_g64 = 0.0; - float2 uv_WrinkleFlowMap1 = i.uv_texcoord * _WrinkleFlowMap1_ST.xy + _WrinkleFlowMap1_ST.zw; - half temp_output_23_0_g63 = ( saturate( ( ( temp_output_16_0_g63 - temp_output_1_0_g64 ) / ( SAMPLE_TEXTURE2D( _WrinkleFlowMap1, sampler_Linear_Repeat, uv_WrinkleFlowMap1 ).g - temp_output_1_0_g64 ) ) ) * temp_output_16_0_g63 ); - half3 lerpResult19_g63 = lerp( normalMap360 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale359 ) , temp_output_23_0_g63); + half temp_output_16_0_g67 = ( ( leftMask27_g40 * ( value1CLeft135_g40 + dotResult29_g40 + dotResult35_g40 ) ) + ( ( dotResult30_g40 + dotResult36_g40 + value1CRight136_g40 ) * rightMask28_g40 ) ); + half temp_output_23_0_g67 = ( saturate( ( SAMPLE_TEXTURE2D( _WrinkleFlowMap1, sampler_Linear_Repeat, uv_WrinkleFlowMap1 ).g + temp_output_16_0_g67 ) ) * temp_output_16_0_g67 ); + half3 In1183_g40 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend1, sampler_Linear_Repeat, uv_WrinkleNormalBlend1 ), normalMapScale359 ) - normal186_g40 ) * temp_output_23_0_g67 ); float2 uv_WrinkleNormalBlend2 = i.uv_texcoord * _WrinkleNormalBlend2_ST.xy + _WrinkleNormalBlend2_ST.zw; + float2 uv_WrinkleFlowMap2 = i.uv_texcoord * _WrinkleFlowMap2_ST.xy + _WrinkleFlowMap2_ST.zw; half2 appendResult113_g40 = (half2(break107_g40.z , break107_g40.w)); half2 appendResult114_g40 = (half2(break109_g40.z , break109_g40.w)); half dotResult123_g40 = dot( appendResult113_g40 , appendResult114_g40 ); @@ -381,12 +403,13 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" half2 appendResult116_g40 = (half2(break108_g40.z , break108_g40.w)); half dotResult124_g40 = dot( appendResult114_g40 , appendResult116_g40 ); half value2CRight138_g40 = dotResult124_g40; - half temp_output_16_0_g59 = ( ( leftMask27_g40 * ( value2CLeft137_g40 + dotResult41_g40 ) ) + ( ( dotResult42_g40 + value2CRight138_g40 ) * rightMask28_g40 ) ); - half temp_output_1_0_g60 = 0.0; - float2 uv_WrinkleFlowMap2 = i.uv_texcoord * _WrinkleFlowMap2_ST.xy + _WrinkleFlowMap2_ST.zw; - half temp_output_23_0_g59 = ( saturate( ( ( temp_output_16_0_g59 - temp_output_1_0_g60 ) / ( SAMPLE_TEXTURE2D( _WrinkleFlowMap2, sampler_Linear_Repeat, uv_WrinkleFlowMap2 ).g - temp_output_1_0_g60 ) ) ) * temp_output_16_0_g59 ); - half3 lerpResult19_g59 = lerp( lerpResult19_g63 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale359 ) , temp_output_23_0_g59); + half temp_output_16_0_g68 = ( ( leftMask27_g40 * ( value2CLeft137_g40 + dotResult41_g40 ) ) + ( ( dotResult42_g40 + value2CRight138_g40 ) * rightMask28_g40 ) ); + half temp_output_23_0_g68 = ( saturate( ( SAMPLE_TEXTURE2D( _WrinkleFlowMap2, sampler_Linear_Repeat, uv_WrinkleFlowMap2 ).g + temp_output_16_0_g68 ) ) * temp_output_16_0_g68 ); + half3 In2183_g40 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend2, sampler_Linear_Repeat, uv_WrinkleNormalBlend2 ), normalMapScale359 ) - normal186_g40 ) * temp_output_23_0_g68 ); float2 uv_WrinkleNormalBlend3 = i.uv_texcoord * _WrinkleNormalBlend3_ST.xy + _WrinkleNormalBlend3_ST.zw; + float2 uv_WrinkleFlowMap3 = i.uv_texcoord * _WrinkleFlowMap3_ST.xy + _WrinkleFlowMap3_ST.zw; + half4 break211_g40 = _WrinkleValueSetBCCB; + half valueBCCLeft217_g40 = ( break211_g40.x * maskSet1A214_g40.y ); half4 break118_g40 = _WrinkleValueSet3DB; half2 appendResult120_g40 = (half2(break118_g40.x , break118_g40.y)); half dotResult127_g40 = dot( appendResult120_g40 , appendResult115_g40 ); @@ -398,12 +421,12 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" half2 appendResult119_g40 = (half2(break118_g40.z , break118_g40.w)); half dotResult128_g40 = dot( appendResult115_g40 , appendResult119_g40 ); half value3DRight130_g40 = dotResult128_g40; - half temp_output_16_0_g61 = ( ( leftMask27_g40 * ( value3DLeft129_g40 + dotResult47_g40 ) ) + ( ( dotResult48_g40 + value3DRight130_g40 ) * rightMask28_g40 ) ); - half temp_output_1_0_g62 = 0.0; - float2 uv_WrinkleFlowMap3 = i.uv_texcoord * _WrinkleFlowMap3_ST.xy + _WrinkleFlowMap3_ST.zw; - half temp_output_23_0_g61 = ( saturate( ( ( temp_output_16_0_g61 - temp_output_1_0_g62 ) / ( SAMPLE_TEXTURE2D( _WrinkleFlowMap3, sampler_Linear_Repeat, uv_WrinkleFlowMap3 ).g - temp_output_1_0_g62 ) ) ) * temp_output_16_0_g61 ); - half3 lerpResult19_g61 = lerp( lerpResult19_g59 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale359 ) , temp_output_23_0_g61); - half3 normalWrinkle439 = lerpResult19_g61; + half valueBCCRight219_g40 = ( maskSet1A214_g40.y * break211_g40.y ); + half temp_output_16_0_g66 = ( ( leftMask27_g40 * ( valueBCCLeft217_g40 + value3DLeft129_g40 + dotResult47_g40 ) ) + ( ( dotResult48_g40 + value3DRight130_g40 + valueBCCRight219_g40 ) * rightMask28_g40 ) ); + half temp_output_23_0_g66 = ( saturate( ( SAMPLE_TEXTURE2D( _WrinkleFlowMap3, sampler_Linear_Repeat, uv_WrinkleFlowMap3 ).g + temp_output_16_0_g66 ) ) * temp_output_16_0_g66 ); + half3 In3183_g40 = ( ( UnpackScaleNormal( SAMPLE_TEXTURE2D( _WrinkleNormalBlend3, sampler_Linear_Repeat, uv_WrinkleNormalBlend3 ), normalMapScale359 ) - normal186_g40 ) * temp_output_23_0_g66 ); + half3 localMinMaxDeltaBlend3183_g40 = MinMaxDeltaBlend3183_g40( In183_g40 , In1183_g40 , In2183_g40 , In3183_g40 ); + half3 normalWrinkle439 = localMinMaxDeltaBlend3183_g40; #ifdef BOOLEAN_USE_WRINKLE_ON half3 staticSwitch467 = normalWrinkle439; #else @@ -466,13 +489,16 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" o.Normal = BlendNormals( staticSwitch71 , UnpackScaleNormal( SAMPLE_TEXTURE2D( _MicroNormalMap, sampler_MicroNormalMap, uv_TexCoord344 ), ( _MicroNormalStrength * microNormalMask287 * subsurfaceFlattenNormals340 ) ) ); float2 uv_DiffuseMap = i.uv_texcoord * _DiffuseMap_ST.xy + _DiffuseMap_ST.zw; half4 diffuseMap358 = SAMPLE_TEXTURE2D( _DiffuseMap, sampler_DiffuseMap, uv_DiffuseMap ); + half4 diffuse184_g40 = diffuseMap358; + half4 In181_g40 = diffuse184_g40; float2 uv_WrinkleDiffuseBlend1 = i.uv_texcoord * _WrinkleDiffuseBlend1_ST.xy + _WrinkleDiffuseBlend1_ST.zw; - half4 lerpResult17_g63 = lerp( diffuseMap358 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) , temp_output_23_0_g63); + half4 In1181_g40 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend1, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend1 ) - diffuse184_g40 ) * temp_output_23_0_g67 ); float2 uv_WrinkleDiffuseBlend2 = i.uv_texcoord * _WrinkleDiffuseBlend2_ST.xy + _WrinkleDiffuseBlend2_ST.zw; - half4 lerpResult17_g59 = lerp( lerpResult17_g63 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) , temp_output_23_0_g59); + half4 In2181_g40 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend2, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend2 ) - diffuse184_g40 ) * temp_output_23_0_g68 ); float2 uv_WrinkleDiffuseBlend3 = i.uv_texcoord * _WrinkleDiffuseBlend3_ST.xy + _WrinkleDiffuseBlend3_ST.zw; - half4 lerpResult17_g61 = lerp( lerpResult17_g59 , SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) , temp_output_23_0_g61); - half4 diffuseWrinkle437 = lerpResult17_g61; + half4 In3181_g40 = ( ( SAMPLE_TEXTURE2D( _WrinkleDiffuseBlend3, sampler_Linear_Repeat, uv_WrinkleDiffuseBlend3 ) - diffuse184_g40 ) * temp_output_23_0_g66 ); + half4 localMinMaxDeltaBlend4181_g40 = MinMaxDeltaBlend4181_g40( In181_g40 , In1181_g40 , In2181_g40 , In3181_g40 ); + half4 diffuseWrinkle437 = localMinMaxDeltaBlend4181_g40; #ifdef BOOLEAN_USE_WRINKLE_ON half4 staticSwitch464 = diffuseWrinkle437; #else @@ -501,13 +527,16 @@ Shader "Reallusion/Amplify/RL_SkinShader_Variants_3D_Tessellation" half metallicMap285 = tex2DNode32.r; o.Metallic = metallicMap285; half smoothnessMap288 = tex2DNode32.a; + half smoothness185_g40 = smoothnessMap288; + half In182_g40 = smoothness185_g40; float2 uv_WrinkleRoughnessBlend1 = i.uv_texcoord * _WrinkleRoughnessBlend1_ST.xy + _WrinkleRoughnessBlend1_ST.zw; - half lerpResult18_g63 = lerp( smoothnessMap288 , ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend1, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend1 ).g ) , temp_output_23_0_g63); + half In1182_g40 = ( ( ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend1, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend1 ).g ) - smoothness185_g40 ) * temp_output_23_0_g67 ); float2 uv_WrinkleRoughnessBlend2 = i.uv_texcoord * _WrinkleRoughnessBlend2_ST.xy + _WrinkleRoughnessBlend2_ST.zw; - half lerpResult18_g59 = lerp( lerpResult18_g63 , ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend2, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend2 ).g ) , temp_output_23_0_g59); + half In2182_g40 = ( ( ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend2, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend2 ).g ) - smoothness185_g40 ) * temp_output_23_0_g68 ); float2 uv_WrinkleRoughnessBlend3 = i.uv_texcoord * _WrinkleRoughnessBlend3_ST.xy + _WrinkleRoughnessBlend3_ST.zw; - half lerpResult18_g61 = lerp( lerpResult18_g59 , ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend3, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend3 ).g ) , temp_output_23_0_g61); - half smoothnessWrinkle438 = lerpResult18_g61; + half In3182_g40 = ( ( ( 1.0 - SAMPLE_TEXTURE2D( _WrinkleRoughnessBlend3, sampler_Linear_Repeat, uv_WrinkleRoughnessBlend3 ).g ) - smoothness185_g40 ) * temp_output_23_0_g66 ); + half localMinMaxDeltaBlend1182_g40 = MinMaxDeltaBlend1182_g40( In182_g40 , In1182_g40 , In2182_g40 , In3182_g40 ); + half smoothnessWrinkle438 = localMinMaxDeltaBlend1182_g40; #ifdef BOOLEAN_USE_WRINKLE_ON half staticSwitch468 = smoothnessWrinkle438; #else @@ -708,15 +737,15 @@ Node;AmplifyShaderEditor.RangedFloatNode;59;-2225.185,-49.41412;Inherit;False;Pr Node;AmplifyShaderEditor.SimpleMultiplyOpNode;341;-1926.138,-218.3322;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RangedFloatNode;60;-2232.41,-634.1191;Inherit;False;Property;_NormalStrength;Normal Strength;13;0;Create;True;0;0;0;False;0;False;1;1;0;2;0;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;360;-1080.1,-667.2007;Inherit;False;normalMap;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 -Node;AmplifyShaderEditor.CommentaryNode;430;-5192.445,-3069.558;Inherit;False;2652.901;2027.358;;40;431;437;463;462;461;460;459;458;457;456;455;454;453;452;451;450;449;448;447;446;445;444;443;442;441;440;439;438;436;435;434;433;432;470;471;472;473;474;475;476;Wrinkle System;1,0.5137255,0.7779443,1;0;0 +Node;AmplifyShaderEditor.CommentaryNode;430;-5192.445,-3069.558;Inherit;False;2652.901;2027.358;;41;431;437;463;462;461;460;459;458;457;456;455;454;453;452;451;450;449;448;447;446;445;444;443;442;441;440;439;438;436;435;434;433;432;470;471;472;473;474;475;476;477;Wrinkle System;1,0.5137255,0.7779443,1;0;0 Node;AmplifyShaderEditor.GetLocalVarNode;434;-3638.247,-2980.172;Inherit;False;358;diffuseMap;1;0;OBJECT;;False;1;COLOR;0 Node;AmplifyShaderEditor.GetLocalVarNode;435;-3668.951,-2895.854;Inherit;False;288;smoothnessMap;1;0;OBJECT;;False;1;FLOAT;0 Node;AmplifyShaderEditor.GetLocalVarNode;436;-3641.951,-2812.854;Inherit;False;360;normalMap;1;0;OBJECT;;False;1;FLOAT3;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;438;-2844.862,-2593.617;Inherit;False;smoothnessWrinkle;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;439;-2829.862,-2483.617;Inherit;False;normalWrinkle;-1;True;1;0;FLOAT3;0,0,0;False;1;FLOAT3;0 -Node;AmplifyShaderEditor.FunctionNode;463;-3315.326,-2638.362;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;40;66048c3ae18f3f84c9195a84e20ae59a;0;31;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;3;COLOR;0;FLOAT;1;FLOAT3;6 +Node;AmplifyShaderEditor.FunctionNode;463;-3315.326,-2638.362;Inherit;False;RL_Amplify_WrinkleMapSystem;-1;;40;66048c3ae18f3f84c9195a84e20ae59a;0;32;7;COLOR;0,0,0,0;False;8;FLOAT;0;False;9;FLOAT3;0,0,0;False;15;FLOAT4;0,0,0,0;False;16;FLOAT4;0,0,0,0;False;17;FLOAT4;0,0,0,0;False;18;FLOAT4;0,0,0,0;False;105;FLOAT4;0,0,0,0;False;67;COLOR;0,0,0,0;False;71;COLOR;0,0,0,0;False;76;COLOR;0,0,0,0;False;68;FLOAT;0;False;72;FLOAT;0;False;77;FLOAT;0;False;69;FLOAT3;0,0,0;False;73;FLOAT3;0,0,0;False;78;FLOAT3;0,0,0;False;151;FLOAT;0;False;155;FLOAT;0;False;156;FLOAT;0;False;19;FLOAT4;0,0,0,0;False;20;FLOAT4;0,0,0,0;False;23;FLOAT4;0,0,0,0;False;24;FLOAT4;0,0,0,0;False;103;FLOAT4;0,0,0,0;False;21;FLOAT4;0,0,0,0;False;22;FLOAT4;0,0,0,0;False;25;FLOAT4;0,0,0,0;False;26;FLOAT4;0,0,0,0;False;104;FLOAT4;0,0,0,0;False;106;FLOAT4;0,0,0,0;False;210;FLOAT4;0,0,0,0;False;3;FLOAT4;0;FLOAT;1;FLOAT3;6 Node;AmplifyShaderEditor.RegisterLocalVarNode;358;-1558.199,-1416.748;Inherit;False;diffuseMap;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 -Node;AmplifyShaderEditor.GetLocalVarNode;465;-1560.86,-1325.258;Inherit;False;437;diffuseWrinkle;1;0;OBJECT;;False;1;COLOR;0 +Node;AmplifyShaderEditor.GetLocalVarNode;465;-1560.86,-1325.258;Inherit;False;437;diffuseWrinkle;1;0;OBJECT;;False;1;FLOAT4;0 Node;AmplifyShaderEditor.SimpleMultiplyOpNode;357;-1042.627,-1514.344;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 Node;AmplifyShaderEditor.GetLocalVarNode;466;-1074.915,-581.9393;Inherit;False;439;normalWrinkle;1;0;OBJECT;;False;1;FLOAT3;0 Node;AmplifyShaderEditor.BlendNormalsNode;54;-592.8616,-475.0903;Inherit;False;0;3;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;1;FLOAT3;0 @@ -731,7 +760,7 @@ Node;AmplifyShaderEditor.StaticSwitch;72;-344.0569,-1330.624;Inherit;False;Prope Node;AmplifyShaderEditor.StaticSwitch;464;-1334.86,-1387.258;Inherit;False;Property;BOOLEAN_USE_WRINKLE;Use Wrinkle;67;0;Create;False;0;0;0;False;0;False;1;0;0;True;BOOLEAN_USE_WRINKLE_ON;Toggle;2;Key0;Key1;Create;True;False;All;9;1;COLOR;0,0,0,0;False;0;COLOR;0,0,0,0;False;2;COLOR;0,0,0,0;False;3;COLOR;0,0,0,0;False;4;COLOR;0,0,0,0;False;5;COLOR;0,0,0,0;False;6;COLOR;0,0,0,0;False;7;COLOR;0,0,0,0;False;8;COLOR;0,0,0,0;False;1;COLOR;0 Node;AmplifyShaderEditor.StaticSwitch;170;-3557.483,1206.089;Inherit;False;Property;BOOLEAN_IS_HEAD;Is Head;44;0;Create;False;0;0;0;False;0;False;0;1;1;True;BOOLEAN_IS_HEAD_ON;Toggle;2;Key0;Key1;Reference;72;True;False;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 Node;AmplifyShaderEditor.StaticSwitch;169;-3551.095,1558.494;Inherit;False;Property;BOOLEAN_IS_HEAD;Is Head;44;0;Create;False;0;0;0;False;0;False;0;1;1;True;BOOLEAN_IS_HEAD_ON;Toggle;2;Key0;Key1;Reference;72;True;False;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0 -Node;AmplifyShaderEditor.RegisterLocalVarNode;437;-2828.862,-2707.617;Inherit;False;diffuseWrinkle;-1;True;1;0;COLOR;0,0,0,0;False;1;COLOR;0 +Node;AmplifyShaderEditor.RegisterLocalVarNode;437;-2828.862,-2707.617;Inherit;False;diffuseWrinkle;-1;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT4;0 Node;AmplifyShaderEditor.SamplerNode;454;-4766.596,-2568.007;Inherit;True;Property;_WrinkleDiffuseBlend1;Wrinkle Diffuse Blend 1;73;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerNode;455;-4465.424,-2493.878;Inherit;True;Property;_WrinkleDiffuseBlend2;Wrinkle Diffuse Blend 2;74;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.SamplerStateNode;431;-5081.991,-2371.016;Inherit;False;0;0;0;1;-1;None;1;0;SAMPLER2D;;False;1;SAMPLERSTATE;0 @@ -766,6 +795,7 @@ Node;AmplifyShaderEditor.SamplerNode;475;-4467.65,-1863.598;Inherit;True;Propert Node;AmplifyShaderEditor.SamplerNode;476;-4166.894,-1762.073;Inherit;True;Property;_WrinkleFlowMap3;Wrinkle Flow Map 3;84;0;Create;True;0;0;0;False;0;False;-1;None;None;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;8;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;6;FLOAT;0;False;7;SAMPLERSTATE;;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 Node;AmplifyShaderEditor.GetLocalVarNode;440;-5024.275,-1808.114;Inherit;False;359;normalMapScale;1;0;OBJECT;;False;1;FLOAT;0 Node;AmplifyShaderEditor.RegisterLocalVarNode;359;-1943.112,-583.7412;Inherit;False;normalMapScale;-1;True;1;0;FLOAT;0;False;1;FLOAT;0 +Node;AmplifyShaderEditor.Vector4Node;477;-3561.247,-1321.18;Inherit;False;Property;_WrinkleValueSetBCCB;Wrinkle Value Set BCC Both;96;0;Create;False;0;0;0;False;0;False;0,0,0,0;0,0,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 WireConnection;150;0;126;0 WireConnection;150;1;127;0 WireConnection;150;2;128;0 @@ -962,6 +992,7 @@ WireConnection;463;25;443;0 WireConnection;463;26;444;0 WireConnection;463;104;472;0 WireConnection;463;106;473;0 +WireConnection;463;210;477;0 WireConnection;358;0;1;0 WireConnection;357;0;356;0 WireConnection;357;1;464;0 @@ -1009,4 +1040,4 @@ WireConnection;475;7;431;0 WireConnection;476;7;431;0 WireConnection;359;0;60;0 ASEEND*/ -//CHKSM=71D3F9CB4CB9E015429C4E7DE61AC39A9B04E8B6 \ No newline at end of file +//CHKSM=3734C76ADD419D0E8D274ACD12A05FAD13E6EDFE \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 71af9f6..80ff4ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,12 @@ Changelog ========= -### v.1.4.6 +### v 1.4.7 +- Brow correction added to wrinkle map system. +- Wrinkle sets additive blending. +- Wrinkle Manager configuration serialized, to allow for further customization. + +### v 1.4.6 - Added ray tracing settings to preview scene lights. - Fix to HDRP diffusion profiles not setting up in HDRP14 (2022.2) diff --git a/Editor/CharacterInfo.cs b/Editor/CharacterInfo.cs index 6ff2a76..f735723 100644 --- a/Editor/CharacterInfo.cs +++ b/Editor/CharacterInfo.cs @@ -392,20 +392,37 @@ public QuickJSON GetMatJson(GameObject obj, string sourceName) } if (matJson == null) - { + { // instalod will generate unique suffixes _0/_1/_2 on character objects where object names and container // transforms have the same name, try to untangle the object name by speculatively removing this suffix. // (seems to happen mostly on accessories) + string specObjName = objName; if (objName[objName.Length - 2] == '_' && char.IsDigit(objName[objName.Length - 1])) { Util.LogWarn("Object name " + objName + " may by suffixed by InstaLod exporter. Attempting to untangle..."); + specObjName = objName.Substring(0, objName.Length - 2); + } + string specMatName = sourceName; + if (sourceName[sourceName.Length - 2] == '_' && char.IsDigit(sourceName[sourceName.Length - 1])) + { + Util.LogWarn("Material name " + sourceName + " may by suffixed by InstaLod exporter. Attempting to untangle..."); + specMatName = sourceName.Substring(0, sourceName.Length - 2); + } - string specName = objName.Substring(0, objName.Length - 2); - jsonPath = specName + "/Materials/" + sourceName; - if (jsonMeshData.PathExists(jsonPath)) - { - matJson = jsonMeshData.GetObjectAtPath(jsonPath); - } + // try to find all remaining permutations of: + // /Materials/ + jsonPath = specObjName + "/Materials/" + sourceName; + if (jsonMeshData.PathExists(specObjName + "/Materials/" + specMatName)) + { + matJson = jsonMeshData.GetObjectAtPath(specObjName + "/Materials/" + specMatName); + } + else if (jsonMeshData.PathExists(specObjName + "/Materials/" + sourceName)) + { + matJson = jsonMeshData.GetObjectAtPath(specObjName + "/Materials/" + sourceName); + } + else if (jsonMeshData.PathExists(objName + "/Materials/" + specMatName)) + { + matJson = jsonMeshData.GetObjectAtPath(objName + "/Materials/" + specMatName); } } diff --git a/Editor/Importer.cs b/Editor/Importer.cs index 4a0467e..4c7b067 100644 --- a/Editor/Importer.cs +++ b/Editor/Importer.cs @@ -541,7 +541,7 @@ private void ProcessObjectPostPass(Renderer renderer) { if (renderer.GetType() == typeof(SkinnedMeshRenderer)) { - AddWrinkleManager(obj, (SkinnedMeshRenderer)renderer, sharedMat); + AddWrinkleManager(obj, (SkinnedMeshRenderer)renderer, sharedMat, matJson); } } } @@ -1004,7 +1004,7 @@ private void ConnectDefaultMaterial(GameObject obj, string sourceName, Material FLAG_SRGB); } - if (matJson.GetBoolValue("Two Side")) + if (matJson != null && matJson.GetBoolValue("Two Side")) { mat.SetFloatIf("_Cull", 0f); // 1f - cull front, 2f cull back } @@ -1622,7 +1622,7 @@ private void ConnectHQTeethMaterial(GameObject obj, string sourceName, Material if (matJson.PathExists("Textures/Glow/Texture Path")) mat.SetColor("_EmissiveColor", Color.white * (matJson.GetFloatValue("Textures/Glow/Strength") / 100f)); if (matJson.PathExists("Textures/Normal/Strength")) - mat.SetFloat("_NormalStrength", matJson.GetFloatValue("Textures/Normal/Strength") / 100f); + mat.SetFloat("_NormalStrength", 0.5f * matJson.GetFloatValue("Textures/Normal/Strength") / 100f); mat.SetFloat("_MicroNormalTiling", matJson.GetFloatValue("Custom Shader/Variable/Teeth MicroNormal Tiling")); mat.SetFloat("_MicroNormalStrength", matJson.GetFloatValue("Custom Shader/Variable/Teeth MicroNormal Strength")); /*float specular = matJson.GetFloatValue("Custom Shader/Variable/Front Specular"); @@ -1808,15 +1808,15 @@ private void ConnectHQEyeMaterial(GameObject obj, string sourceName, Material sh //float pupilScale = Mathf.Clamp(1f / Mathf.Pow((depth * 2f + 1f), 2f), 0.1f, 2.0f); mat.SetFloatIf("_IrisDepth", depth); //mat.SetFloat("_PupilScale", pupilScale); - mat.SetFloatIf("_PupilScale", 1f * matJson.GetFloatValue("Custom Shader/Variable/Pupil Scale")); + mat.SetFloatIf("_PupilScale", 0.75f * matJson.GetFloatValue("Custom Shader/Variable/Pupil Scale")); } else { - mat.SetFloatIf("_PupilScale", 1f); + mat.SetFloatIf("_PupilScale", 0.75f); } mat.SetFloatIf("_IrisSmoothness", 0f); // 1f - matJson.GetFloatValue("Custom Shader/Variable/_Iris Roughness")); - mat.SetFloatIf("_IrisBrightness", 1.2f * matJson.GetFloatValue("Custom Shader/Variable/Iris Color Brightness")); + mat.SetFloatIf("_IrisBrightness", 1.5f * matJson.GetFloatValue("Custom Shader/Variable/Iris Color Brightness")); mat.SetFloatIf("_IOR", matJson.GetFloatValue("Custom Shader/Variable/_IoR")); float irisScale = matJson.GetFloatValue("Custom Shader/Variable/Iris UV Radius") / 0.16f; mat.SetFloatIf("_IrisScale", irisScale); @@ -1843,9 +1843,7 @@ private void ConnectHQEyeMaterial(GameObject obj, string sourceName, Material sh private void ConnectHQHairMaterial(GameObject obj, string sourceName, Material sharedMat, Material mat, MaterialType materialType, QuickJSON matJson) - { - bool isFacialHair = FacialProfileMapper.MeshHasFacialBlendShapes(obj); - + { if (!ConnectTextureTo(sourceName, mat, "_DiffuseMap", "Diffuse", matJson, "Textures/Base Color", FLAG_SRGB + FLAG_HAIR)) @@ -1905,13 +1903,15 @@ private void ConnectHQHairMaterial(GameObject obj, string sourceName, Material s float specularMin = ValueByPipeline(0.05f, 0f, 0f); float specularMax = ValueByPipeline(0.5f, 0.4f, 0.65f); + bool isFacialHair = MeshUtil.MeshIsFacialHair(obj); if (isFacialHair) { // make facial hair thinner and rougher smoothnessPowerMod = ValueByPipeline(1.5f, 1.5f, 1.5f); specularPowerMod = ValueByPipeline(1f, 1f, 1f); mat.SetFloatIf("_DepthPrepass", 0.75f); - mat.SetFloatIf("_AlphaPower", 1.25f); + mat.SetFloatIf("_AlphaPower", 1.5f); + mat.SetFloatIf("_AlphaRemap", 1.0f); mat.SetFloatIf("_SmoothnessPower", smoothnessPowerMod); } @@ -1976,7 +1976,7 @@ private void ConnectHQHairMaterial(GameObject obj, string sourceName, Material s { SetFloatPowerRange(mat, "_SmoothnessMin", smoothnessStrength, 0f, smoothnessMax, smoothnessPowerMod); SetFloatPowerRange(mat, "_SpecularMultiplier", specMapStrength * specStrength, specularMin, specularMax, specularPowerMod); - mat.SetFloatIf("_RimTransmissionIntensity", ValueByPipeline(2f, 50f, 50f) * rimTransmission); + mat.SetFloatIf("_RimTransmissionIntensity", ValueByPipeline(1f, 75f, 75f) * specMapStrength * Mathf.Pow(rimTransmission, 0.5f)); mat.SetFloatIf("_FlowMapFlipGreen", 1f - matJson.GetFloatValue("Custom Shader/Variable/TangentMapFlipGreen")); mat.SetFloatIf("_SpecularShiftMin", -0.25f + @@ -2334,12 +2334,42 @@ private bool DoneTexture(Texture2D tex) } return true; } + + private Dictionary BuildWrinkleProps(QuickJSON matJson) + { + if (matJson != null) + { + Dictionary wrinkleProps = new Dictionary(); + + QuickJSON wrinkleRulesJson = matJson.GetObjectAtPath("Wrinkle/WrinkleRules"); + QuickJSON wrinkleEaseJson = matJson.GetObjectAtPath("Wrinkle/WrinkleEaseStrength"); + QuickJSON wrinkleWeightJson = matJson.GetObjectAtPath("Wrinkle/WrinkleRuleWeights"); + + if (wrinkleRulesJson != null && wrinkleEaseJson != null && wrinkleWeightJson != null) + { + for (int i = 0; i < wrinkleRulesJson.values.Count; i++) + { + string ruleName = wrinkleRulesJson.values[i].StringValue; + float easeStrength = wrinkleEaseJson.values[i].FloatValue; + float weight = wrinkleWeightJson.values[i].FloatValue; + + wrinkleProps.Add(ruleName, new WrinkleProp() { ease = easeStrength, weight = weight }); + } + } + + return wrinkleProps; + } + + return null; + } - private void AddWrinkleManager(GameObject obj, SkinnedMeshRenderer smr, Material mat) + private void AddWrinkleManager(GameObject obj, SkinnedMeshRenderer smr, Material mat, QuickJSON matJson) { WrinkleManager wm = obj.AddComponent(); wm.headMaterial = mat; wm.skinnedMeshRenderer = smr; + float overallWeight = matJson.GetFloatValue("Wrinkle/WrinkleOverallWeight"); + wm.BuildConfig(BuildWrinkleProps(matJson), overallWeight); } private void CopyWrinkleMasks(string folder) diff --git a/Editor/MeshUtil.cs b/Editor/MeshUtil.cs index a534fa3..aaf80d0 100644 --- a/Editor/MeshUtil.cs +++ b/Editor/MeshUtil.cs @@ -21,6 +21,7 @@ using UnityEngine.Rendering; using System.IO; using System.Collections.Generic; +using UnityEngine.Diagnostics; namespace Reallusion.Import { @@ -1094,8 +1095,7 @@ public static GameObject Extract2PassHairMeshes(CharacterInfo info, GameObject p foreach (Renderer r in renderers) { - bool hasHairMaterial = false; - bool isFacialObject = FacialProfileMapper.MeshHasFacialBlendShapes(r.gameObject); + bool hasHairMaterial = false; bool hasScalpMaterial = false; int subMeshCount = 0; int hairMeshCount = 0; @@ -1107,9 +1107,7 @@ public static GameObject Extract2PassHairMeshes(CharacterInfo info, GameObject p hasHairMaterial = true; hairMeshCount++; } - else if (m.name.iContains("scalp_") || - m.name.iContains("_base_") || - m.name.iContains("_transparency")) + else if (Util.NameContainsKeywords(m.name, "scalp", "base")) { hasScalpMaterial = true; } @@ -1117,6 +1115,8 @@ public static GameObject Extract2PassHairMeshes(CharacterInfo info, GameObject p if (hasHairMaterial) { + bool isFacialObject = MeshIsFacialHair(r.gameObject); + List indicesToRemove = new List(); bool dontRemoveMaterials = false; @@ -1132,25 +1132,10 @@ public static GameObject Extract2PassHairMeshes(CharacterInfo info, GameObject p { float alphaClipValue = 0.666f; if (Pipeline.is3D) alphaClipValue = 0.55f; - - // set alpha clip and remap to values that work better - // with the two material system. - if (isFacialObject) - { - oldMat.SetFloatIf("_AlphaClip", alphaClipValue); - oldMat.SetFloatIf("_AlphaClip2", alphaClipValue); - oldMat.SetFloatIf("_AlphaPower", 1.5f); - oldMat.SetFloatIf("_ShadowClip", 0.5f); - oldMat.SetFloatIf("_AlphaRemap", 1.0f); - } - else - { - oldMat.SetFloatIf("_AlphaClip", alphaClipValue); - oldMat.SetFloatIf("_AlphaClip2", alphaClipValue); - oldMat.SetFloatIf("_AlphaPower", 0.7f); - oldMat.SetFloatIf("_ShadowClip", 0.5f); - oldMat.SetFloatIf("_AlphaRemap", 1.0f); - } + + oldMat.SetFloatIf("_AlphaClip", alphaClipValue); + oldMat.SetFloatIf("_AlphaClip2", alphaClipValue); + oldMat.SetFloatIf("_ShadowClip", 0.5f); } bool useTessellation = oldMat.shader.name.iContains("_Tessellation"); @@ -1569,5 +1554,42 @@ public static void FixSkinnedMeshBounds(GameObject prefabInstance) } } + public static bool MeshHasJawWeights(GameObject obj) + { + SkinnedMeshRenderer smr = obj.GetComponent(); + + if (smr) + { + foreach (Transform bone in smr.bones) + { + if (bone.gameObject.name.iContains("JawRoot")) + { + return true; + } + } + } + + return false; + } + + public static bool MeshIsFacialHair(GameObject obj) + { + // if it has facial blend shapes... + if (FacialProfileMapper.MeshHasFacialBlendShapes(obj)) + { + if (Util.HasMaterialKeywords(obj, "scalp")) + { + return false; + } + else if (Util.HasMaterialKeywords(obj, "base", "brow", "beard", + "mustache", "goatee", "stubble", + "bushy", "sword")) + { + return true; + } + } + + return false; + } } } diff --git a/Editor/Physics.cs b/Editor/Physics.cs index a595e1f..ac83df8 100644 --- a/Editor/Physics.cs +++ b/Editor/Physics.cs @@ -580,13 +580,23 @@ private void AddSpringBones() if (hairRoots.Count > 0) { SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Roots", hairRoots); + /* SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Damping", 0.1f); SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Elasticity", 0.05f); SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Stiffness", 0.05f); SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Radius", 0.02f); SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_EndLength", 0f); SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Gravity", new Vector3(0f, -0.0098f, 0f)); - + */ + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Damping", 0.11f); + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Elasticity", 0.04f); + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Stiffness", 0.33f); + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Radius", 0.02f); + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_EndLength", 0f); + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_Gravity", new Vector3(0f, -0.0098f, 0f)); + SetTypeField(dynamicBoneType, dynamicBoneComponent, "m_UpdateMode", 0); + + } Type dynamicBoneColliderType = GetTypeInAssemblies("DynamicBoneColliderBase"); diff --git a/Editor/Pipeline.cs b/Editor/Pipeline.cs index 8e22bc4..f471203 100644 --- a/Editor/Pipeline.cs +++ b/Editor/Pipeline.cs @@ -43,7 +43,7 @@ public enum MaterialQuality { None, Default, High, Baked } public static class Pipeline { - public const string VERSION = "1.4.6"; + public const string VERSION = "1.4.7"; #if HDRP_10_5_0_OR_NEWER // version diff --git a/Editor/Util.cs b/Editor/Util.cs index e95e56f..5eeec1c 100644 --- a/Editor/Util.cs +++ b/Editor/Util.cs @@ -1078,11 +1078,26 @@ public static bool AssetPathIsEmpty(string assetPath) return AssetDatabase.AssetPathToGUID(assetPath).Equals(emptyGuid); } + public static bool HasMaterialKeywords(GameObject obj, params string[] keywords) + { + SkinnedMeshRenderer smr = obj.GetComponent(); + + if (smr) + { + foreach (Material mat in smr.sharedMaterials) + { + if (Util.NameContainsKeywords(mat.name, keywords)) return true; + } + } + + return false; + } + public static bool NameContainsKeywords(string name, params string[] keyword) { foreach (string k in keyword) { - int start = name.IndexOf(k); + int start = name.IndexOf(k, System.StringComparison.InvariantCultureIgnoreCase); int after = start + k.Length; if (start >= 0) diff --git a/README.md b/README.md index 5b9dccb..4f0a68c 100644 --- a/README.md +++ b/README.md @@ -17,16 +17,16 @@ Links [HDRP Version](https://github.com/soupday/cc_unity_tools_HDRP) Note: There are two verions of the HDRP package -- [**CC Unity Tools HDRP10**](https://github.com/soupday/cc_unity_tools_HDRP/releases/tag/1.4.6.HDRP10) for Unity 2020.3 to 2021.1 -- [**CC Unity Tools HDRP12**](https://github.com/soupday/cc_unity_tools_HDRP/releases/tag/1.4.6.HDRP12) for Unity 2021.2 and upwards +- [**CC Unity Tools HDRP10**](https://github.com/soupday/cc_unity_tools_HDRP/releases/tag/1.4.7.HDRP10) for Unity 2020.3 to 2021.1 +- [**CC Unity Tools HDRP12**](https://github.com/soupday/cc_unity_tools_HDRP/releases/tag/1.4.7.HDRP12) for Unity 2021.2 and upwards The main repository contains the HDRP10 version. See the releases page for the HDRP12 version. [URP Version](https://github.com/soupday/cc_unity_tools_URP) Note: There are two verions of the URP package -- [**CC Unity Tools URP10**](https://github.com/soupday/cc_unity_tools_URP/releases/tag/1.4.5.URP10) for Unity 2020.3 to 2021.1 -- [**CC Unity Tools URP12**](https://github.com/soupday/cc_unity_tools_URP/releases/tag/1.4.5.URP12) for Unity 2021.2 and upwards +- [**CC Unity Tools URP10**](https://github.com/soupday/cc_unity_tools_URP/releases/tag/1.4.7.URP10) for Unity 2020.3 to 2021.1 +- [**CC Unity Tools URP12**](https://github.com/soupday/cc_unity_tools_URP/releases/tag/1.4.7.URP12) for Unity 2021.2 and upwards The main repository contains the URP10 version. See the releases page for the URP12 version. diff --git a/Runtime/ColliderManager.cs b/Runtime/ColliderManager.cs index afa4562..338d53a 100644 --- a/Runtime/ColliderManager.cs +++ b/Runtime/ColliderManager.cs @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2021 Victor Soupday + * This file is part of CC_Unity_Tools + * + * CC_Unity_Tools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CC_Unity_Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CC_Unity_Tools. If not, see . + */ + using System.Collections; using System.Collections.Generic; using UnityEngine; diff --git a/Runtime/PhysicsSettingsStore.cs b/Runtime/PhysicsSettingsStore.cs index 3b98a0f..aed41b1 100644 --- a/Runtime/PhysicsSettingsStore.cs +++ b/Runtime/PhysicsSettingsStore.cs @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2021 Victor Soupday + * This file is part of CC_Unity_Tools + * + * CC_Unity_Tools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CC_Unity_Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CC_Unity_Tools. If not, see . + */ + using UnityEngine; using System.Collections; using System.Collections.Generic; diff --git a/Runtime/WeightMapper.cs b/Runtime/WeightMapper.cs index 0acac3b..d54111f 100644 --- a/Runtime/WeightMapper.cs +++ b/Runtime/WeightMapper.cs @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2021 Victor Soupday + * This file is part of CC_Unity_Tools + * + * CC_Unity_Tools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CC_Unity_Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CC_Unity_Tools. If not, see . + */ + using System.Collections; using System.Collections.Generic; using UnityEngine; diff --git a/Runtime/WrinkleManager.cs b/Runtime/WrinkleManager.cs index f650561..236fc4b 100644 --- a/Runtime/WrinkleManager.cs +++ b/Runtime/WrinkleManager.cs @@ -1,12 +1,31 @@ +/* + * Copyright (C) 2021 Victor Soupday + * This file is part of CC_Unity_Tools + * + * CC_Unity_Tools is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CC_Unity_Tools is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CC_Unity_Tools. If not, see . + */ + using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Reallusion.Import { - public enum MaskSet { none = 0, set1A = 1, set1B = 2, set2 = 3, set3 = 4, set12C = 5, set3D = 6 } + public enum MaskSet { none = 0, set1A = 1, set1B = 2, set2 = 3, set3 = 4, set12C = 5, set3D = 6, setBCC = 7} public enum MaskSide { none, left, right, center } + [System.Serializable] public struct WrinkleRule { public MaskSet mask; @@ -21,52 +40,87 @@ public WrinkleRule(MaskSet ms, MaskSide s, int i) } } - public class WrinkleMappings + public struct WrinkleProp { - public string name; - public WrinkleRule rule; - public int blendShapeIndex; + public float weight; + public float ease; + } + + [System.Serializable] + public class WrinkleRuleSet + { + public string ruleName; + public float weight; public bool enabled = false; public float min = 0f, max = 1f; - public WrinkleMappings(Dictionary rules, string bsn, string rn, float min = 0f, float max = 1f) + public WrinkleRuleSet(Dictionary props, + string rn, float min = 0f, float max = 1f) { - name = bsn; - rule = rules[rn]; + ruleName = rn; this.min = min; - this.max = max; + this.max = max; + weight = 1.0f; + if (props != null) + { + if (props.TryGetValue(rn, out WrinkleProp p)) + { + weight = p.weight; + } + } + } + } + + [System.Serializable] + public class WrinkleConfig + { + public string blendShapeName; + public bool enabled; + public int blendShapeIndex; + public List ruleSets; + + public WrinkleConfig(string bsn, List mappings) + { + blendShapeName = bsn; + enabled = false; blendShapeIndex = -1; + this.ruleSets = mappings; } } - + + [System.Serializable] [ExecuteInEditMode] public class WrinkleManager : MonoBehaviour { public SkinnedMeshRenderer skinnedMeshRenderer; - public Material headMaterial; - public bool initialized = false; + public Material headMaterial; [Range(0f, 2f)] public float blendScale = 1f; [Range(0.5f, 2f)] - public float blendCurve = 0.75f; + public float blendCurve = 1.5f; [Range(0.1f, 20f)] public float blendFalloff = 4f; //[Range(0f, 5f)] //public float blendFadeDuration = 2f; [Range(1f, 120f)] - public float updateFrequency = 30f; - public Vector4[] valueSets = new Vector4[11]; + public float updateFrequency = 30f; + [SerializeField] private Dictionary wrinkleRules; - private List mappings; + [SerializeField] + public List config; + + public Vector4[] valueSets = new Vector4[12]; + private Vector4[] valueStore = new Vector4[12]; + private Vector4[] valueTemp = new Vector4[12]; private float updateTimer = 0f; - private float lastTime = 0f; + private float lastTime = 0f; public void BuildRules() - { + { wrinkleRules = new Dictionary() - { + { { "head_wm1_normal_head_wm1_blink_L", new WrinkleRule(MaskSet.set1A, MaskSide.left, 0) }, { "head_wm1_normal_head_wm1_blink_R", new WrinkleRule(MaskSet.set1A, MaskSide.right, 0) }, @@ -130,261 +184,416 @@ public void BuildRules() { "head_wm2_normal_head_wm2_noseCrease_L", new WrinkleRule(MaskSet.set12C, MaskSide.left, 3) }, { "head_wm2_normal_head_wm2_noseCrease_R", new WrinkleRule(MaskSet.set12C, MaskSide.right, 3) }, - + { "head_wm3_normal_head_wm13_lips_DL", new WrinkleRule(MaskSet.set3D, MaskSide.none, 0) }, { "head_wm3_normal_head_wm13_lips_DR", new WrinkleRule(MaskSet.set3D, MaskSide.none, 1) }, { "head_wm3_normal_head_wm13_lips_UL", new WrinkleRule(MaskSet.set3D, MaskSide.none, 2) }, { "head_wm3_normal_head_wm13_lips_UR", new WrinkleRule(MaskSet.set3D, MaskSide.none, 3) }, - }; - - mappings = new List() - { - // MASK 1-1 (Set 1, Mask 1) - - new WrinkleMappings(wrinkleRules, "Brow_Raise_Inner_L", "head_wm1_normal_head_wm1_browRaiseInner_L"), - new WrinkleMappings(wrinkleRules, "Brow_Raise_Inner_L", "head_wm2_normal_head_wm2_browsLateral_L", 0f, 0.03f), - - new WrinkleMappings(wrinkleRules, "Brow_Raise_Inner_R", "head_wm1_normal_head_wm1_browRaiseInner_R"), - new WrinkleMappings(wrinkleRules, "Brow_Raise_Inner_R", "head_wm2_normal_head_wm2_browsLateral_R", 0f, 0.03f), - - new WrinkleMappings(wrinkleRules, "Brow_Raise_Outer_L", "head_wm1_normal_head_wm1_browRaiseOuter_L"), - - new WrinkleMappings(wrinkleRules, "Brow_Raise_Outer_R", "head_wm1_normal_head_wm1_browRaiseOuter_R"), - - new WrinkleMappings(wrinkleRules, "Brow_Drop_L", "head_wm2_normal_head_wm2_browsDown_L", 0f, 0.1f), - new WrinkleMappings(wrinkleRules, "Brow_Drop_L", "head_wm2_normal_head_wm2_browsLateral_L"), - - new WrinkleMappings(wrinkleRules, "Brow_Drop_R", "head_wm2_normal_head_wm2_browsDown_R", 0f, 0.1f), - new WrinkleMappings(wrinkleRules, "Brow_Drop_R", "head_wm2_normal_head_wm2_browsLateral_R"), - - new WrinkleMappings(wrinkleRules, "Brow_Compress_L", "head_wm2_normal_head_wm2_browsLateral_L"), - - new WrinkleMappings(wrinkleRules, "Brow_Compress_R", "head_wm2_normal_head_wm2_browsLateral_R"), - - new WrinkleMappings(wrinkleRules, "Eye_Blink_L", "head_wm1_normal_head_wm1_blink_L"), - new WrinkleMappings(wrinkleRules, "Eye_Blink_L", "head_wm1_normal_head_wm1_squintInner_L", 0f, 0.3f), - - new WrinkleMappings(wrinkleRules, "Eye_Blink_R", "head_wm1_normal_head_wm1_blink_R"), - new WrinkleMappings(wrinkleRules, "Eye_Blink_R", "head_wm1_normal_head_wm1_squintInner_R", 0f, 0.3f), - - new WrinkleMappings(wrinkleRules, "Eye_Squint_L", "head_wm1_normal_head_wm1_squintInner_L"), - - new WrinkleMappings(wrinkleRules, "Eye_Squint_R", "head_wm1_normal_head_wm1_squintInner_R"), - - new WrinkleMappings(wrinkleRules, "Eye_L_Look_Down", "head_wm1_normal_head_wm1_blink_L"), - new WrinkleMappings(wrinkleRules, "Eye_R_Look_Down", "head_wm1_normal_head_wm1_blink_R"), - - new WrinkleMappings(wrinkleRules, "Nose_Sneer_L", "head_wm2_normal_head_wm2_browsDown_L", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Nose_Sneer_L", "head_wm2_normal_head_wm2_browsLateral_L", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Nose_Sneer_L", "head_wm2_normal_head_wm2_noseWrinkler_L"), - - new WrinkleMappings(wrinkleRules, "Nose_Sneer_R", "head_wm2_normal_head_wm2_browsDown_R", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Nose_Sneer_R", "head_wm2_normal_head_wm2_browsLateral_R", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Nose_Sneer_R", "head_wm2_normal_head_wm2_noseWrinkler_R"), - - - - new WrinkleMappings(wrinkleRules, "Nose_Nostril_Raise_L", "head_wm2_normal_head_wm2_noseWrinkler_L", 0f, 0.6f), - - new WrinkleMappings(wrinkleRules, "Nose_Nostril_Raise_R", "head_wm2_normal_head_wm2_noseWrinkler_R", 0f, 0.6f), - - new WrinkleMappings(wrinkleRules, "Nose_Crease_L", "head_wm2_normal_head_wm2_noseCrease_L", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "Nose_Crease_R", "head_wm2_normal_head_wm2_noseCrease_R", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "Cheek_Raise_L", "head_wm3_normal_head_wm3_cheekRaiseInner_L"), - new WrinkleMappings(wrinkleRules, "Cheek_Raise_L", "head_wm3_normal_head_wm3_cheekRaiseOuter_L"), - new WrinkleMappings(wrinkleRules, "Cheek_Raise_L", "head_wm3_normal_head_wm3_cheekRaiseUpper_L"), - new WrinkleMappings(wrinkleRules, "Cheek_Raise_R", "head_wm3_normal_head_wm3_cheekRaiseInner_R"), - new WrinkleMappings(wrinkleRules, "Cheek_Raise_R", "head_wm3_normal_head_wm3_cheekRaiseOuter_R"), - new WrinkleMappings(wrinkleRules, "Cheek_Raise_R", "head_wm3_normal_head_wm3_cheekRaiseUpper_R"), + { "head_wm3_normal_head_wm3_browRaiseCorrection_L", new WrinkleRule(MaskSet.setBCC, MaskSide.none, 0) }, + { "head_wm3_normal_head_wm3_browRaiseCorrection_R", new WrinkleRule(MaskSet.setBCC, MaskSide.none, 1) }, - new WrinkleMappings(wrinkleRules, "Jaw_Open", "head_wm1_normal_head_wm1_jawOpen"), - - new WrinkleMappings(wrinkleRules, "Jaw_L", "head_wm2_normal_head_wm2_neckStretch_L"), - - new WrinkleMappings(wrinkleRules, "Jaw_R", "head_wm2_normal_head_wm2_neckStretch_R"), - - new WrinkleMappings(wrinkleRules, "Mouth_Up", "head_wm1_normal_head_wm1_chinRaise_L"), - new WrinkleMappings(wrinkleRules, "Mouth_Up", "head_wm1_normal_head_wm1_chinRaise_R"), - - new WrinkleMappings(wrinkleRules, "Mouth_L", "head_wm3_normal_head_wm3_smile_L", 0f, 0.8f), - new WrinkleMappings(wrinkleRules, "Mouth_L", "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Mouth_L", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Mouth_L", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Mouth_L", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Mouth_L", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "Mouth_R", "head_wm3_normal_head_wm3_smile_R", 0f, 0.8f), - new WrinkleMappings(wrinkleRules, "Mouth_R", "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Mouth_R", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Mouth_R", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Mouth_R", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Mouth_R", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "Mouth_Smile_L", "head_wm3_normal_head_wm3_cheekRaiseInner_L", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_L", "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_L", "head_wm3_normal_head_wm3_smile_L"), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_L", "head_wm3_normal_head_wm13_lips_DL"), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_L", "head_wm3_normal_head_wm13_lips_UL"), - - new WrinkleMappings(wrinkleRules, "Mouth_Smile_R", "head_wm3_normal_head_wm3_cheekRaiseInner_R", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_R", "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.6f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_R", "head_wm3_normal_head_wm3_smile_R"), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_R", "head_wm3_normal_head_wm13_lips_DR"), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_R", "head_wm3_normal_head_wm13_lips_UR"), - - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_L", "head_wm3_normal_head_wm3_cheekRaiseInner_L", 0f, 0.4f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_L", "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.4f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_L", "head_wm3_normal_head_wm3_smile_L", 0f, 0.8f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_L", "head_wm3_normal_head_wm13_lips_DL", 0f, 0.8f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_L", "head_wm3_normal_head_wm13_lips_UL", 0f, 0.8f), - - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_R", "head_wm3_normal_head_wm3_cheekRaiseInner_R", 0f, 0.4f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_R", "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.4f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_R", "head_wm3_normal_head_wm3_smile_R", 0f, 0.8f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_R", "head_wm3_normal_head_wm13_lips_DR", 0f, 0.8f), - new WrinkleMappings(wrinkleRules, "Mouth_Smile_Sharp_R", "head_wm3_normal_head_wm13_lips_UR", 0f, 0.8f), - - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_L", "head_wm3_normal_head_wm3_cheekRaiseInner_L", 0f, 0.15f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_L", "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.15f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_L", "head_wm3_normal_head_wm3_smile_L", 0f, 0.3f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_L", "head_wm3_normal_head_wm13_lips_DL", 0f, 0.3f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_L", "head_wm3_normal_head_wm13_lips_UL", 0f, 0.3f), + }; + } - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_R", "head_wm3_normal_head_wm3_cheekRaiseInner_R", 0f, 0.15f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_R", "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.15f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_R", "head_wm3_normal_head_wm3_smile_R", 0f, 0.3f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_R", "head_wm3_normal_head_wm13_lips_DR", 0f, 0.3f), - new WrinkleMappings(wrinkleRules, "Mouth_Dimple_R", "head_wm3_normal_head_wm13_lips_UR", 0f, 0.3f), + public void BuildConfig(Dictionary props = null, float overallWeight = 1.0f) + { + BuildRules(); - new WrinkleMappings(wrinkleRules, "Mouth_Stretch_L", "head_wm2_normal_head_wm2_mouthStretch_L"), + config = new List() + { + new WrinkleConfig("Brow_Raise_Inner_L", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_browRaiseInner_L"), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_L", 0f, 0.03f), + }), + + new WrinkleConfig("Brow_Raise_Inner_R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_browRaiseInner_R"), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_R", 0f, 0.03f), + }), + + new WrinkleConfig("Brow_Raise_Outer_L", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_browRaiseOuter_L"), + }), + + new WrinkleConfig("Brow_Raise_Outer_R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_browRaiseOuter_R"), + }), + + new WrinkleConfig("Brow_Drop_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsDown_L", 0f, 0.1f), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_L"), + }), + + new WrinkleConfig("Brow_Drop_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsDown_R", 0f, 0.1f), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_R"), + }), + + new WrinkleConfig("Brow_Compress_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_L"), + }), + + new WrinkleConfig("Brow_Compress_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_R"), + }), + + new WrinkleConfig("Eye_Blink_L", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_blink_L"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_squintInner_L", 0f, 0.3f), + }), + + new WrinkleConfig("Eye_Blink_R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_blink_R"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_squintInner_R", 0f, 0.3f), + }), + + new WrinkleConfig("Eye_Squint_L", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_squintInner_L"), + }), + + new WrinkleConfig("Eye_Squint_R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_squintInner_R"), + }), + + new WrinkleConfig("Eye_L_Look_Down", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_blink_L"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_blink_R"), + }), + + new WrinkleConfig("Nose_Sneer_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsDown_L", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_L", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseWrinkler_L"), + }), + + new WrinkleConfig("Nose_Sneer_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsDown_R", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_browsLateral_R", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseWrinkler_R"), + }), + + new WrinkleConfig("Nose_Nostril_Raise_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseWrinkler_L", 0f, 0.6f), + }), + + new WrinkleConfig("Nose_Nostril_Raise_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseWrinkler_R", 0f, 0.6f), + }), + + new WrinkleConfig("Nose_Crease_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseCrease_L", 0f, 0.7f), + }), + + new WrinkleConfig("Nose_Crease_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseCrease_R", 0f, 0.7f), + }), + + new WrinkleConfig("Cheek_Raise_L", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_L"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_L"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseUpper_L"), + }), + + new WrinkleConfig("Cheek_Raise_R", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_R"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_R"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseUpper_R"), + }), + + new WrinkleConfig("Jaw_Open", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen"), + }), + + new WrinkleConfig("Jaw_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_L"), + }), + + new WrinkleConfig("Jaw_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_R"), + }), + + new WrinkleConfig("Mouth_Up", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_L"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_R"), + }), + + new WrinkleConfig("Mouth_L", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_L", 0f, 0.8f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), + }), + + new WrinkleConfig("Mouth_R", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_R", 0f, 0.8f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), + }), + + new WrinkleConfig("Mouth_Smile_L", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_L", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_L"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DL"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UL"), + }), + + new WrinkleConfig("Mouth_Smile_R", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_R", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.6f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_R"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DR"), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UR"), + }), + + new WrinkleConfig("Mouth_Smile_Sharp_L", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_L", 0f, 0.4f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.4f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_L", 0f, 0.8f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DL", 0f, 0.8f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UL", 0f, 0.8f), + }), + + new WrinkleConfig("Mouth_Smile_Sharp_R", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_R", 0f, 0.4f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.4f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_R", 0f, 0.8f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DR", 0f, 0.8f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UR", 0f, 0.8f), + }), + + new WrinkleConfig("Mouth_Dimple_L", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_L", 0f, 0.15f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_L", 0f, 0.15f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_L", 0f, 0.3f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DL", 0f, 0.3f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UL", 0f, 0.3f), + }), + + new WrinkleConfig("Mouth_Dimple_R", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseInner_R", 0f, 0.15f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_cheekRaiseOuter_R", 0f, 0.15f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm3_smile_R", 0f, 0.3f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DR", 0f, 0.3f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UR", 0f, 0.3f), + }), + + new WrinkleConfig("Mouth_Stretch_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_mouthStretch_L"), + }), + + new WrinkleConfig("Mouth_Stretch_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_mouthStretch_R"), + }), + + new WrinkleConfig("Mouth_Pucker_Up_L", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL"), + }), + + new WrinkleConfig("Mouth_Pucker_Up_R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR"), + }), + + new WrinkleConfig("Mouth_Pucker_Down_L", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_L", 0f, 0.5f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL"), + }), + + new WrinkleConfig("Mouth_Pucker_Down_R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_R", 0f, 0.5f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR"), + }), + + new WrinkleConfig("Mouth_Pucker", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_L", 0f, 0.5f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_R", 0f, 0.5f), + }), + + new WrinkleConfig("Mouth_Chin_Up", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_L"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_R"), + }), + + new WrinkleConfig("Mouth_Up_Upper_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseCrease_L"), + }), + + new WrinkleConfig("Mouth_Up_Upper_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_noseCrease_R"), + }), + + new WrinkleConfig("Neck_Tighten_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_L"), + }), + + new WrinkleConfig("Neck_Tighten_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_R"), + }), + + new WrinkleConfig("Head_Turn_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_R", 0f, 0.6f), + }), + + new WrinkleConfig("Head_Turn_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_L", 0f, 0.6f), + }), + + new WrinkleConfig("Head_Tilt_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_R", 0f, 0.75f), + }), + + new WrinkleConfig("Head_Tilt_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_neckStretch_L", 0f, 0.75f), + }), + + new WrinkleConfig("Head_Backward", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.5f), + }), + + new WrinkleConfig("Mouth_Frown_L", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_mouthStretch_L"), + }), + + new WrinkleConfig("Mouth_Frown_R", new List() { + new WrinkleRuleSet(props, "head_wm2_normal_head_wm2_mouthStretch_R"), + }), + + new WrinkleConfig("Mouth_Shrug_Lower", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_L"), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_chinRaise_R"), + }), + + new WrinkleConfig("V_Open", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.6f), + }), + + new WrinkleConfig("V_Tight_O", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), + }), + + new WrinkleConfig("V_Tight", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), + }), + + new WrinkleConfig("V_Wide", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UR", 0f, 0.7f), + }), + + new WrinkleConfig("AE", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.24f), + }), + + new WrinkleConfig("Ah", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.6f), + }), + + new WrinkleConfig("EE", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UL", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DR", 0f, 0.7f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UR", 0f, 0.7f), + }), + + new WrinkleConfig("Ih", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.15f), + }), + + new WrinkleConfig("K_G_H_NG", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.065f), + }), + + new WrinkleConfig("Oh", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.6025f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.56f), + }), + + new WrinkleConfig("R", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.10f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.63f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.63f), + }), + + new WrinkleConfig("S_Z", new List() { + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DL", 0f, 0.14f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UL", 0f, 0.14f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_DR", 0f, 0.14f), + new WrinkleRuleSet(props, "head_wm3_normal_head_wm13_lips_UR", 0f, 0.14f), + }), + + new WrinkleConfig("T_L_D_N", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.0426f), + }), + + new WrinkleConfig("Th", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_jawOpen", 0f, 0.1212f), + }), + + new WrinkleConfig("W_OO", new List() { + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_DR", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm1_purse_UR", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_DR", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UL", 0f, 0.56f), + new WrinkleRuleSet(props, "head_wm1_normal_head_wm13_lips_UR", 0f, 0.56f), + }), - new WrinkleMappings(wrinkleRules, "Mouth_Stretch_R", "head_wm2_normal_head_wm2_mouthStretch_R"), + }; - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Up_L", "head_wm1_normal_head_wm1_purse_UL"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Up_L", "head_wm1_normal_head_wm13_lips_UL"), + blendScale = overallWeight; - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Up_R", "head_wm1_normal_head_wm1_purse_UR"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Up_R", "head_wm1_normal_head_wm13_lips_UR"), - - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Down_L", "head_wm1_normal_head_wm1_chinRaise_L", 0f, 0.5f), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Down_L", "head_wm1_normal_head_wm1_purse_DL"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Down_L", "head_wm1_normal_head_wm13_lips_DL"), - - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Down_R", "head_wm1_normal_head_wm1_chinRaise_R", 0f, 0.5f), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Down_R", "head_wm1_normal_head_wm1_purse_DR"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker_Down_R", "head_wm1_normal_head_wm13_lips_DR"), - - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm1_purse_DL"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm1_purse_DR"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm1_purse_UL"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm1_purse_UR"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm13_lips_DL"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm13_lips_DR"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm13_lips_UL"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm13_lips_UR"), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm1_chinRaise_L", 0f, 0.5f), - new WrinkleMappings(wrinkleRules, "Mouth_Pucker", "head_wm1_normal_head_wm1_chinRaise_R", 0f, 0.5f), - - new WrinkleMappings(wrinkleRules, "Mouth_Chin_Up", "head_wm1_normal_head_wm1_chinRaise_L"), - new WrinkleMappings(wrinkleRules, "Mouth_Chin_Up", "head_wm1_normal_head_wm1_chinRaise_R"), - - new WrinkleMappings(wrinkleRules, "Mouth_Up_Upper_L", "head_wm2_normal_head_wm2_noseCrease_L"), - - new WrinkleMappings(wrinkleRules, "Mouth_Up_Upper_R", "head_wm2_normal_head_wm2_noseCrease_R"), - - new WrinkleMappings(wrinkleRules, "Neck_Tighten_L", "head_wm2_normal_head_wm2_neckStretch_L"), - - new WrinkleMappings(wrinkleRules, "Neck_Tighten_R", "head_wm2_normal_head_wm2_neckStretch_R"), - - new WrinkleMappings(wrinkleRules, "Head_Turn_L", "head_wm2_normal_head_wm2_neckStretch_R", 0f, 0.6f), - - new WrinkleMappings(wrinkleRules, "Head_Turn_R", "head_wm2_normal_head_wm2_neckStretch_L", 0f, 0.6f), - - new WrinkleMappings(wrinkleRules, "Head_Tilt_L", "head_wm2_normal_head_wm2_neckStretch_R", 0f, 0.75f), - - new WrinkleMappings(wrinkleRules, "Head_Tilt_R", "head_wm2_normal_head_wm2_neckStretch_L", 0f, 0.75f), - - new WrinkleMappings(wrinkleRules, "Head_Backward", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.5f), - - new WrinkleMappings(wrinkleRules, "Mouth_Frown_L", "head_wm2_normal_head_wm2_mouthStretch_L"), - new WrinkleMappings(wrinkleRules, "Mouth_Frown_R", "head_wm2_normal_head_wm2_mouthStretch_R"), - new WrinkleMappings(wrinkleRules, "Mouth_Shrug_Lower", "head_wm1_normal_head_wm1_chinRaise_L"), - new WrinkleMappings(wrinkleRules, "Mouth_Shrug_Lower", "head_wm1_normal_head_wm1_chinRaise_R"), - - new WrinkleMappings(wrinkleRules, "V_Open", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.6f), - - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm1_purse_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm1_purse_DR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm1_purse_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm1_purse_UR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight_O", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm1_purse_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm1_purse_DR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm1_purse_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm1_purse_UR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Tight", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "V_Wide", "head_wm3_normal_head_wm13_lips_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Wide", "head_wm3_normal_head_wm13_lips_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Wide", "head_wm3_normal_head_wm13_lips_DR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "V_Wide", "head_wm3_normal_head_wm13_lips_UR", 0f, 0.7f), - - new WrinkleMappings(wrinkleRules, "AE", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.24f), - new WrinkleMappings(wrinkleRules, "Ah", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.6f), - - new WrinkleMappings(wrinkleRules, "EE", "head_wm3_normal_head_wm13_lips_DL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "EE", "head_wm3_normal_head_wm13_lips_UL", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "EE", "head_wm3_normal_head_wm13_lips_DR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "EE", "head_wm3_normal_head_wm13_lips_UR", 0f, 0.7f), - new WrinkleMappings(wrinkleRules, "Ih", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.15f), - new WrinkleMappings(wrinkleRules, "K_G_H_NG", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.065f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.6025f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm1_purse_DL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm1_purse_DR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm1_purse_UL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm1_purse_UR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "Oh", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.10f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm1_purse_DL", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm1_purse_DR", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm1_purse_UL", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm1_purse_UR", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.63f), - new WrinkleMappings(wrinkleRules, "R", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.63f), - - new WrinkleMappings(wrinkleRules, "S_Z", "head_wm3_normal_head_wm13_lips_DL", 0f, 0.14f), - new WrinkleMappings(wrinkleRules, "S_Z", "head_wm3_normal_head_wm13_lips_UL", 0f, 0.14f), - new WrinkleMappings(wrinkleRules, "S_Z", "head_wm3_normal_head_wm13_lips_DR", 0f, 0.14f), - new WrinkleMappings(wrinkleRules, "S_Z", "head_wm3_normal_head_wm13_lips_UR", 0f, 0.14f), - - new WrinkleMappings(wrinkleRules, "T_L_D_N", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.0426f), - new WrinkleMappings(wrinkleRules, "Th", "head_wm1_normal_head_wm1_jawOpen", 0f, 0.1212f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm1_purse_DL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm1_purse_DR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm1_purse_UL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm1_purse_UR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm13_lips_DL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm13_lips_DR", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm13_lips_UL", 0f, 0.56f), - new WrinkleMappings(wrinkleRules, "W_OO", "head_wm1_normal_head_wm13_lips_UR", 0f, 0.56f), - }; + UpdateBlendShapeIndices(); } private void UpdateBlendShapeIndices() @@ -393,37 +602,46 @@ private void UpdateBlendShapeIndices() { Mesh mesh = skinnedMeshRenderer.sharedMesh; - foreach (WrinkleMappings wm in mappings) + foreach (WrinkleConfig wc in config) { - wm.blendShapeIndex = mesh.GetBlendShapeIndex(wm.name); - wm.enabled = wm.blendShapeIndex >= 0; - } + wc.blendShapeIndex = mesh.GetBlendShapeIndex(wc.blendShapeName); + wc.enabled = wc.blendShapeIndex >= 0; - updateTimer = 1f / updateFrequency; - lastTime = Time.time; + foreach (WrinkleRuleSet wm in wc.ruleSets) + { + if (wrinkleRules.TryGetValue(wm.ruleName, out WrinkleRule rule)) + { + wm.enabled = true; + } + else + { + wm.enabled = false; + } + } + } } } void CheckInit() { - if (wrinkleRules == null || mappings == null || !initialized) + if (valueSets == null || valueSets.Length != 12) valueSets = new Vector4[12]; + if (valueStore == null || valueStore.Length != 12) valueStore = new Vector4[12]; + if (valueTemp == null || valueTemp.Length != 12) valueTemp = new Vector4[12]; + + if (wrinkleRules == null) { - initialized = false; - BuildRules(); - if (wrinkleRules != null || mappings != null) - { - UpdateBlendShapeIndices(); - initialized = true; - } + BuildRules(); + } + + if (config == null) + { + BuildConfig(); } } void Start() { - initialized = false; - wrinkleRules = null; - mappings = null; - + updateTimer = 0f; CheckInit(); } @@ -431,7 +649,7 @@ void Update() { CheckInit(); - if (initialized && headMaterial && skinnedMeshRenderer) + if (config != null && headMaterial && skinnedMeshRenderer) { if (updateTimer <= 0f) { @@ -440,48 +658,82 @@ void Update() //float fadeScale = delay / blendFadeDuration; lastTime = time; - for (int i = 0; i < 11; i++) - { + for (int i = 0; i < valueSets.Length; i++) + { + valueSets[i] = valueStore[i]; + valueTemp[i] = Vector4.zero; + if (valueSets[i].sqrMagnitude > 0.0001f) valueSets[i] = Vector4.Lerp(valueSets[i], Vector4.zero, blendFalloff * delay); else valueSets[i] = Vector4.zero; } - foreach (WrinkleMappings wm in mappings) + foreach (WrinkleConfig wc in config) { - if (wm.blendShapeIndex >= 0) + if (wc.blendShapeIndex >= 0 && wc.enabled) { - float weight = skinnedMeshRenderer.GetBlendShapeWeight(wm.blendShapeIndex) / 100f; - weight = Mathf.Pow( - Mathf.Max(0f, Mathf.Min(1f, weight * blendScale)), blendCurve + float blendShapeWeight = skinnedMeshRenderer.GetBlendShapeWeight(wc.blendShapeIndex) / 100f; + blendShapeWeight = Mathf.Pow( + Mathf.Max(0f, Mathf.Min(1f, blendShapeWeight * blendScale)), blendCurve ); - weight = Mathf.Lerp(wm.min, wm.max, weight); - - - int il = ((int)wm.rule.mask) - 1; - int ir = il + 5; - int inone = il + 5; - - if (wm.rule.side == MaskSide.left || wm.rule.side == MaskSide.center) - { - if (weight > valueSets[il][wm.rule.index]) - valueSets[il][wm.rule.index] = weight; - } - if (wm.rule.side == MaskSide.right || wm.rule.side == MaskSide.center) + foreach (WrinkleRuleSet wm in wc.ruleSets) { - if (weight > valueSets[ir][wm.rule.index]) - valueSets[ir][wm.rule.index] = weight; + if (wm.enabled) + { + float weight = Mathf.Lerp(wm.min, wm.max, blendShapeWeight) * wm.weight; + WrinkleRule rule = wrinkleRules[wm.ruleName]; + + int il = ((int)rule.mask) - 1; + int ir = il + 5; + int inone = il + 5; + + if (rule.side == MaskSide.left || rule.side == MaskSide.center) + { + valueTemp[il][rule.index] += weight; + } + + if (rule.side == MaskSide.right || rule.side == MaskSide.center) + { + valueTemp[ir][rule.index] += weight; + } + + if (rule.side == MaskSide.none) + { + valueTemp[inone][rule.index] += weight; + } + } } + } + } - if (wm.rule.side == MaskSide.none) - { - if (weight > valueSets[inone][wm.rule.index]) - valueSets[inone][wm.rule.index] = weight; - } + // store the uncorrected value sets + for (int i = 0; i < valueSets.Length; i++) + { + for (int j = 0; j < 4; j++) + { + if (valueTemp[i][j] > valueSets[i][j]) valueSets[i][j] = Mathf.Min(1f, valueTemp[i][j]); } - } + + valueStore[i] = valueSets[i]; + } + + // brow correction, when browRaiseInner and browDrop are used together + // redirect them to browRaiseCorrection + //float bri_bd_L_Diff = Mathf.Abs(valueSets[0].y - valueSets[2].y); + //float bri_bd_L_Avg = (valueSets[0].y + valueSets[2].y) * 0.5f; + float bri_bd_L_Min = Mathf.Min(valueSets[0].y, valueSets[2].y); + valueSets[0].y -= bri_bd_L_Min; + valueSets[2].y -= bri_bd_L_Min; + valueSets[11].x = bri_bd_L_Min; + + //float bri_bd_R_Diff = Mathf.Abs(valueSets[5].y - valueSets[7].y); + //float bri_bd_R_Avg = (valueSets[5].y + valueSets[7].y) * 0.5f; + float bri_bd_R_Min = Mathf.Min(valueSets[5].y, valueSets[7].y); + valueSets[5].y -= bri_bd_R_Min; + valueSets[7].y -= bri_bd_R_Min; + valueSets[11].y = bri_bd_R_Min; headMaterial.SetVector("_WrinkleValueSet1AL", valueSets[0]); headMaterial.SetVector("_WrinkleValueSet1BL", valueSets[1]); @@ -494,6 +746,7 @@ void Update() headMaterial.SetVector("_WrinkleValueSet3R", valueSets[8]); headMaterial.SetVector("_WrinkleValueSet12CR", valueSets[9]); headMaterial.SetVector("_WrinkleValueSet3DB", valueSets[10]); + headMaterial.SetVector("_WrinkleValueSetBCCB", valueSets[11]); updateTimer = 1f / updateFrequency; } diff --git a/package.json b/package.json index ec9993f..5ac1333 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "com.soupday.cc3_unity_tools", - "version": "1.4.6", + "version": "1.4.7", "displayName": "CC/iC Unity Tools 3D", "description": "Unity importer for Character Creator 3 & 4 and iClone 7 and 8.", "unity": "2019.4",