diff options
| author | yum <yum.food.vr@gmail.com> | 2024-08-28 16:06:27 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-08-28 16:06:27 -0700 |
| commit | f4d0ad8f349bcf99470b2cfa1e9531c4c0b61d29 (patch) | |
| tree | 0da8ddc3126c4697143ad1068cc4ea0bf60563cf | |
| parent | 86c935309c24b92b8ad66ceb4fc58ed668d39ba6 (diff) | |
Emissions are now UV channel aware
| -rw-r--r-- | Editor/tooner.cs | 11 | ||||
| -rw-r--r-- | globals.cginc | 2 | ||||
| -rw-r--r-- | tooner.shader | 2 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 4 |
4 files changed, 15 insertions, 4 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs index 9248f37..51e13b5 100644 --- a/Editor/tooner.cs +++ b/Editor/tooner.cs @@ -410,8 +410,15 @@ public class ToonerGUI : ShaderGUI { bct); SetKeyword($"_EMISSION{i}", bc.textureValue); - bc = FindProperty($"_Emission{i}Multiplier"); - editor.RangeProperty(bc, "Multiplier"); + if (bc.textureValue) { + bc = FindProperty($"_Emission{i}_UV_Select"); + editor.RangeProperty( + bc, + "UV channel"); + + bc = FindProperty($"_Emission{i}Multiplier"); + editor.RangeProperty(bc, "Multiplier"); + } } EditorGUI.indentLevel -= 1; } diff --git a/globals.cginc b/globals.cginc index 8697ec3..ffd5d69 100644 --- a/globals.cginc +++ b/globals.cginc @@ -258,11 +258,13 @@ float _Decal3_UV_Select; texture2D _Emission0Tex; float _Emission0Strength; float _Emission0Multiplier; +float _Emission0_UV_Select; #endif #if defined(_EMISSION1) texture2D _Emission1Tex; float _Emission1Strength; float _Emission1Multiplier; +float _Emission1_UV_Select; #endif float _Global_Emission_Factor; diff --git a/tooner.shader b/tooner.shader index 6799645..0a0c698 100644 --- a/tooner.shader +++ b/tooner.shader @@ -151,9 +151,11 @@ Shader "yum_food/tooner" [NoScaleOffset] _Emission0Tex("Emission map", 2D) = "black" {} _Emission0Strength("Emission strength", Range(0, 2)) = 0 _Emission0Multiplier("Emission multiplier", Range(0, 2)) = 1 + _Emission0_UV_Select("UV channel", Range(0,3)) = 0 [NoScaleOffset] _Emission1Tex("Emission map", 2D) = "black" {} _Emission1Strength("Emission strength", Range(0, 2)) = 0 _Emission1Multiplier("Emission multiplier", Range(0, 2)) = 1 + _Emission1_UV_Select("UV channel", Range(0,3)) = 0 _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 dd4ac3c..0d12303 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -1860,14 +1860,14 @@ float4 effect(inout v2f i) #endif #if defined(_EMISSION0) { - float emission = _Emission0Tex.SampleBias(linear_repeat_s, i.uv0, _Global_Sample_Bias); + float emission = _Emission0Tex.SampleBias(linear_repeat_s, get_uv_by_channel(i, round(_Emission0_UV_Select)), _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); + float emission = _Emission1Tex.SampleBias(linear_repeat_s, get_uv_by_channel(i, round(_Emission1_UV_Select)), _Global_Sample_Bias); result.rgb += albedo.rgb * emission * _Emission1Strength * _Global_Emission_Factor * _Emission1Multiplier; } |
