summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Editor/tooner.cs30
-rw-r--r--feature_macros.cginc3
-rw-r--r--globals.cginc12
-rw-r--r--tooner.shader8
-rw-r--r--tooner_lighting.cginc16
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) {