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_outline_pass.cginc | |
| parent | b7d3cb5d759feab1e44f4cdb01a0c8922bf4f1cb (diff) | |
Add interleaved gradient noise cutout mode
Based on screen space uvs.
Diffstat (limited to 'tooner_outline_pass.cginc')
| -rw-r--r-- | tooner_outline_pass.cginc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/tooner_outline_pass.cginc b/tooner_outline_pass.cginc index 1d05763..a318c5f 100644 --- a/tooner_outline_pass.cginc +++ b/tooner_outline_pass.cginc @@ -276,6 +276,16 @@ void geom(triangle v2f tri_in[3], fixed4 frag (v2f i) : SV_Target { + 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); + } + i.normal = -normalize(i.normal); #if defined(_OUTLINES) @@ -331,7 +341,7 @@ fixed4 frag (v2f i) : SV_Target albedo, i.worldPos, i.normal, /*metallic=*/0, /*smoothness=*/0, i.uv0, ao, /*enable_direct=*/false, - /*diffuse_contrib=*/0, i); + /*diffuse_contrib=*/0, i, tdata); result += albedo * _Outline_Emission_Strength; #if defined(_GIMMICK_AL_CHROMA_00) |
