diff options
| -rw-r--r-- | Editor/tooner.cs | 30 | ||||
| -rw-r--r-- | feature_macros.cginc | 3 | ||||
| -rw-r--r-- | globals.cginc | 12 | ||||
| -rw-r--r-- | tooner.shader | 8 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 16 |
5 files changed, 51 insertions, 18 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs index f35090d..9248f37 100644 --- a/Editor/tooner.cs +++ b/Editor/tooner.cs @@ -396,16 +396,28 @@ public class ToonerGUI : ShaderGUI { } void DoEmission() { - MaterialProperty bc = FindProperty("_EmissionTex"); - MaterialProperty bct = FindProperty("_EmissionStrength"); - editor.TexturePropertySingleLine( - MakeLabel(bct, "Emission map"), - bc, - bct); - SetKeyword("_EMISSION", bc.textureValue); + MaterialProperty bc; + MaterialProperty bct; + for (int i = 0; i < 2; i++) { + EditorGUILayout.LabelField($"Slot {i}", EditorStyles.boldLabel); + EditorGUI.indentLevel += 1; + { + bc = FindProperty($"_Emission{i}Tex"); + bct = FindProperty($"_Emission{i}Strength"); + editor.TexturePropertySingleLine( + MakeLabel(bct, "Map"), + bc, + bct); + SetKeyword($"_EMISSION{i}", bc.textureValue); + + bc = FindProperty($"_Emission{i}Multiplier"); + editor.RangeProperty(bc, "Multiplier"); + } + EditorGUI.indentLevel -= 1; + } - bc = FindProperty("_Global_Emission_Factor"); - editor.FloatProperty(bc, "Global emissions multiplier"); + bc = FindProperty("_Global_Emission_Factor"); + editor.FloatProperty(bc, "Global emissions multiplier"); } enum MatcapMode { diff --git a/feature_macros.cginc b/feature_macros.cginc index 2cd9965..cf39cfc 100644 --- a/feature_macros.cginc +++ b/feature_macros.cginc @@ -6,7 +6,8 @@ #pragma shader_feature_local _ _METALLIC_MAP #pragma shader_feature_local _ _ROUGHNESS_MAP #pragma shader_feature_local _ _CUBEMAP -#pragma shader_feature_local _ _EMISSION +#pragma shader_feature_local _ _EMISSION0 +#pragma shader_feature_local _ _EMISSION1 #pragma shader_feature_local _ _RENDERING_CUTOUT #pragma shader_feature_local _ _RENDERING_CUTOUT_STOCHASTIC #pragma shader_feature_local _ _RENDERING_FADE diff --git a/globals.cginc b/globals.cginc index c09bf04..8697ec3 100644 --- a/globals.cginc +++ b/globals.cginc @@ -254,9 +254,15 @@ float _Decal3_Angle; float _Decal3_UV_Select; #endif -#if defined(_EMISSION) -texture2D _EmissionTex; -float _EmissionStrength; +#if defined(_EMISSION0) +texture2D _Emission0Tex; +float _Emission0Strength; +float _Emission0Multiplier; +#endif +#if defined(_EMISSION1) +texture2D _Emission1Tex; +float _Emission1Strength; +float _Emission1Multiplier; #endif float _Global_Emission_Factor; diff --git a/tooner.shader b/tooner.shader index fefff33..82f62a3 100644 --- a/tooner.shader +++ b/tooner.shader @@ -148,8 +148,12 @@ Shader "yum_food/tooner" _Decal3_Angle("Emission strength", Range(0,1)) = 0 _Decal3_UV_Select("UV channel", Range(0,3)) = 0 - [NoScaleOffset] _EmissionTex("Emission map", 2D) = "black" {} - _EmissionStrength("Emission strength", Range(0, 2)) = 0 + [NoScaleOffset] _Emission0Tex("Emission map", 2D) = "black" {} + _Emission0Strength("Emission strength", Range(0, 2)) = 0 + _Emission0Multiplier("Emission multiplier", Range(0, 2)) = 1 + [NoScaleOffset] _Emission1Tex("Emission map", 2D) = "black" {} + _Emission1Strength("Emission strength", Range(0, 2)) = 0 + _Emission1Multiplier("Emission multiplier", Range(0, 2)) = 1 _Global_Emission_Factor("Global emission factor", Float) = 1 [NoScaleOffset] _Tex_NormalStr("Normal texture strength", Range(0, 10)) = 1 diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc index 7d8ec72..dd4ac3c 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -1858,9 +1858,19 @@ float4 effect(inout v2f i) glitter_mask, _Glitter_Brightness, _Glitter_Angle, _Glitter_Power); result.rgb += glitter; #endif -#if defined(_EMISSION) - float emission = _EmissionTex.SampleBias(linear_repeat_s, i.uv0, _Global_Sample_Bias); - result.rgb += albedo.rgb * emission * _EmissionStrength * _Global_Emission_Factor; +#if defined(_EMISSION0) + { + float emission = _Emission0Tex.SampleBias(linear_repeat_s, i.uv0, _Global_Sample_Bias); + result.rgb += albedo.rgb * emission * _Emission0Strength * + _Global_Emission_Factor * _Emission0Multiplier; + } +#endif +#if defined(_EMISSION1) + { + float emission = _Emission1Tex.SampleBias(linear_repeat_s, i.uv0, _Global_Sample_Bias); + result.rgb += albedo.rgb * emission * _Emission1Strength * + _Global_Emission_Factor * _Emission1Multiplier; + } #endif #if defined(_EXPLODE) && defined(_AUDIOLINK) if (AudioLinkIsAvailable() && _Explode_Phase > 1E-6) { |
