summaryrefslogtreecommitdiffstats
path: root/tooner_lighting.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-08-19 16:04:47 -0700
committeryum <yum.food.vr@gmail.com>2024-08-19 16:04:47 -0700
commitbf9496af5f27d548224689a123e97546fc2053b7 (patch)
tree0110d78690ff0bafd0e1b698c5287badde74a398 /tooner_lighting.cginc
parentcc4347e460a445f60e6e5b03d055c65b5cdfdbd6 (diff)
Add HSV, global emissions multiplier
Also bugfix overlays 1-3 ifdefs.
Diffstat (limited to 'tooner_lighting.cginc')
-rw-r--r--tooner_lighting.cginc43
1 files changed, 32 insertions, 11 deletions
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index 0166104..1f840b7 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -885,10 +885,10 @@ void mixOverlayAlbedoRoughnessMetallic(inout float4 albedo,
#if defined(_PBR_OVERLAY1)
#if defined(_PBR_OVERLAY1_MIX_ALPHA_BLEND)
albedo.rgb = lerp(albedo.rgb, ov.ov1_albedo.rgb, a1);
-#if defined(_PBR_OVERLAY0_ROUGHNESS)
+#if defined(_PBR_OVERLAY1_ROUGHNESS)
roughness = lerp(roughness, ov.ov1_roughness, a1);
#endif
-#if defined(_PBR_OVERLAY0_METALLIC)
+#if defined(_PBR_OVERLAY1_METALLIC)
metallic = lerp(metallic, ov.ov1_metallic, a1);
#endif
albedo.a = max(albedo.a, a1);
@@ -904,10 +904,10 @@ void mixOverlayAlbedoRoughnessMetallic(inout float4 albedo,
#if defined(_PBR_OVERLAY2)
#if defined(_PBR_OVERLAY2_MIX_ALPHA_BLEND)
albedo.rgb = lerp(albedo.rgb, ov.ov2_albedo.rgb, ov.ov2_albedo.a);
-#if defined(_PBR_OVERLAY0_ROUGHNESS)
+#if defined(_PBR_OVERLAY2_ROUGHNESS)
roughness = lerp(roughness, ov.ov2_roughness, a2);
#endif
-#if defined(_PBR_OVERLAY0_METALLIC)
+#if defined(_PBR_OVERLAY2_METALLIC)
metallic = lerp(metallic, ov.ov2_metallic, a2);
#endif
albedo.a = max(albedo.a, a2);
@@ -923,10 +923,10 @@ void mixOverlayAlbedoRoughnessMetallic(inout float4 albedo,
#if defined(_PBR_OVERLAY3)
#if defined(_PBR_OVERLAY3_MIX_ALPHA_BLEND)
albedo.rgb = lerp(albedo.rgb, ov.ov3_albedo.rgb, a3);
-#if defined(_PBR_OVERLAY0_ROUGHNESS)
+#if defined(_PBR_OVERLAY3_ROUGHNESS)
roughness = lerp(roughness, ov.ov3_roughness, a3);
#endif
-#if defined(_PBR_OVERLAY0_METALLIC)
+#if defined(_PBR_OVERLAY3_METALLIC)
metallic = lerp(metallic, ov.ov3_metallic, a3);
#endif
albedo.a = max(albedo.a, a3);
@@ -1650,6 +1650,27 @@ float4 effect(inout v2f i)
}
#endif
+#if defined(_HSV)
+ // Do hue shift in perceptually uniform color space so it doesn't look like
+ // shit.
+ float hsv_mask = _HSV_Mask.SampleGrad(linear_repeat_s, i.uv0, iddx, iddy);
+ if (_HSV_Mask_Invert) {
+ hsv_mask = 1 - hsv_mask;
+ }
+ if (hsv_mask > 0.01 &&
+ (_HSV_Hue_Shift > 1E-6 ||
+ abs(_HSV_Sat_Shift) > 1E-6 ||
+ abs(_HSV_Val_Shift) > 1E-6)) {
+ float3 c = albedo.rgb;
+ c = RGBtoHSV(c);
+ c += float3(_HSV_Hue_Shift, _HSV_Sat_Shift, _HSV_Val_Shift);
+ c.x = glsl_mod(c.x, 1.0);
+ c.yz = saturate(c.yz);
+ c = HSVtoRGB(c);
+ albedo.rgb = c;
+ }
+#endif
+
#if defined(_AMBIENT_OCCLUSION)
float ao = _Ambient_Occlusion.SampleGrad(linear_repeat_s, i.uv0, iddx, iddy);
ao = 1 - (1 - ao) * _Ambient_Occlusion_Strength;
@@ -1679,16 +1700,16 @@ float4 effect(inout v2f i)
albedo.a = 1;
#endif
- return float4(lit.rgb + _Gimmick_Flat_Color_Emission, albedo.a);
+ return float4(lit.rgb + _Gimmick_Flat_Color_Emission * _Global_Emission_Factor, albedo.a);
}
#endif
float4 result = lit;
#if defined(_MATCAP0) || defined(_MATCAP1) || defined(_RIM_LIGHTING0) || defined(_RIM_LIGHTING1)
- result.rgb += matcap_emission;
+ result.rgb += matcap_emission * _Global_Emission_Factor;
#endif
#if defined(_DECAL0) || defined(_DECAL1) || defined(_DECAL2) || defined(_DECAL3)
- result.rgb += decal_emission;
+ result.rgb += decal_emission * _Global_Emission_Factor;
#endif
#if defined(_GLITTER)
float glitter_mask = _Glitter_Mask.SampleGrad(linear_repeat_s, i.uv0, iddx, iddy);
@@ -1699,7 +1720,7 @@ float4 effect(inout v2f i)
#endif
#if defined(_EMISSION)
float emission = _EmissionTex.SampleGrad(linear_repeat_s, i.uv0, iddx, iddy);
- result.rgb += albedo.rgb * emission * _EmissionStrength;
+ result.rgb += albedo.rgb * emission * _EmissionStrength * _Global_Emission_Factor;
#endif
#if defined(_EXPLODE) && defined(_AUDIOLINK)
if (AudioLinkIsAvailable() && _Explode_Phase > 1E-6) {
@@ -1713,7 +1734,7 @@ float4 effect(inout v2f i)
#if defined(_RENDERING_TRANSPARENT) || defined(_RENDERING_TRANSCLIPPING)
result.rgb *= result.a;
#endif
- result.rgb += getOverlayEmission(ov, i, iddx, iddy);
+ result.rgb += getOverlayEmission(ov, i, iddx, iddy) * _Global_Emission_Factor;
return result;
}