summaryrefslogtreecommitdiffstats
path: root/tooner_lighting.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-11-03 15:35:40 -0800
committeryum <yum.food.vr@gmail.com>2024-11-03 15:35:40 -0800
commit4adbc6dfbf2409f34e11e001db2b434feeeb435f (patch)
treece49b708f24bb0d3d6c76016393af5e7f0ec11a6 /tooner_lighting.cginc
parentb7d3cb5d759feab1e44f4cdb01a0c8922bf4f1cb (diff)
Add interleaved gradient noise cutout mode
Based on screen space uvs.
Diffstat (limited to 'tooner_lighting.cginc')
-rw-r--r--tooner_lighting.cginc15
1 files changed, 14 insertions, 1 deletions
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index 2952f29..c6fd02a 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -1363,6 +1363,16 @@ float4 pixellate_color(int2 px_res, float2 uv, float4 c)
float4 effect(inout v2f i, out float depth)
{
+ ToonerData tdata;
+ {
+ float3 full_vec_eye_to_geometry = i.worldPos - _WorldSpaceCameraPos;
+ float3 world_dir = normalize(i.worldPos - _WorldSpaceCameraPos);
+ float perspective_divide = 1.0 / i.pos.w;
+ float perspective_factor = length(full_vec_eye_to_geometry * perspective_divide);
+ tdata.screen_uv = i.screenPos.xy * perspective_divide;
+ tdata.screen_uv_round = floor(tdata.screen_uv * _ScreenParams.xy);
+ }
+
#if defined(EXPERIMENT__CUSTOM_DEPTH)
{
float4 clip_pos = mul(UNITY_MATRIX_VP, float4(i.worldPos, 1.0));
@@ -1502,6 +1512,9 @@ float4 effect(inout v2f i, out float depth)
#if defined(_RENDERING_CUTOUT_STOCHASTIC)
float ar = rand2(i.uv0);
clip(albedo.a - ar);
+#elif defined(_RENDERING_CUTOUT_IGN)
+ float ar = ign(tdata.screen_uv_round);
+ clip(albedo.a - ar);
#else
clip(albedo.a - _Alpha_Cutoff);
#endif
@@ -2418,7 +2431,7 @@ float4 effect(inout v2f i, out float depth)
float4 lit = getLitColor(vertex_light_color, albedo, i.worldPos, normal,
metallic, 1.0 - roughness, i.uv0, ao, /*enable_direct=*/true,
- diffuse_contrib, i);
+ diffuse_contrib, i, tdata);
#if defined(_GIMMICK_FLAT_COLOR)
if (round(_Gimmick_Flat_Color_Enable_Dynamic)) {