diff options
| author | yum <yum.food.vr@gmail.com> | 2024-11-03 15:35:40 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-11-03 15:35:40 -0800 |
| commit | 4adbc6dfbf2409f34e11e001db2b434feeeb435f (patch) | |
| tree | ce49b708f24bb0d3d6c76016393af5e7f0ec11a6 /tooner_lighting.cginc | |
| parent | b7d3cb5d759feab1e44f4cdb01a0c8922bf4f1cb (diff) | |
Add interleaved gradient noise cutout mode
Based on screen space uvs.
Diffstat (limited to 'tooner_lighting.cginc')
| -rw-r--r-- | tooner_lighting.cginc | 15 |
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)) { |
