summaryrefslogtreecommitdiffstats
path: root/tooner_outline_pass.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-07-18 16:50:14 -0700
committeryum <yum.food.vr@gmail.com>2024-07-18 16:50:14 -0700
commite97073efc2c960ad2d28c0649615ef0d6b69a93b (patch)
tree2cc15e0b83b13111af01158d254782b8b8db3b60 /tooner_outline_pass.cginc
parent82b36c1c14013e82e15ca48dc766eb7aa4198e63 (diff)
Add spherize vertex location gimmick
Diffstat (limited to 'tooner_outline_pass.cginc')
-rw-r--r--tooner_outline_pass.cginc24
1 files changed, 23 insertions, 1 deletions
diff --git a/tooner_outline_pass.cginc b/tooner_outline_pass.cginc
index 40e725f..479194c 100644
--- a/tooner_outline_pass.cginc
+++ b/tooner_outline_pass.cginc
@@ -51,6 +51,14 @@ v2f vert(appdata v)
objPos.xyz += v.normal * _Outline_Width * outline_mask * _Outline_Width_Multiplier;
#endif
+#if !defined(_SCROLL) && defined(_GIMMICK_SPHERIZE_LOCATION)
+ if (_Gimmick_Spherize_Location_Enable_Dynamic) {
+ float r = _Gimmick_Spherize_Location_Radius;
+ float s = _Gimmick_Spherize_Location_Strength;
+ float l = length(objPos.xyz);
+ objPos.xyz *= lerp(1, (r / l), s);
+ }
+#endif
#if !defined(_SCROLL) && defined(_GIMMICK_SHEAR_LOCATION)
if (_Gimmick_Shear_Location_Enable_Dynamic) {
objPos = mul(float4x4(
@@ -276,6 +284,18 @@ void geom(triangle v2f tri_in[3],
float3 v1_objPos = mul(unity_WorldToObject, float4(v1.worldPos, 1));
float3 v2_objPos = mul(unity_WorldToObject, float4(v2.worldPos, 1));
+#if defined(_GIMMICK_SPHERIZE_LOCATION)
+ if (_Gimmick_Spherize_Location_Enable_Dynamic) {
+ float r = _Gimmick_Spherize_Location_Radius;
+ float s = _Gimmick_Spherize_Location_Strength;
+ float l0 = length(v0_objPos);
+ float l1 = length(v1_objPos);
+ float l2 = length(v2_objPos);
+ v0_objPos *= lerp(1, (r / l0), s);
+ v1_objPos *= lerp(1, (r / l1), s);
+ v2_objPos *= lerp(1, (r / l2), s);
+ }
+#endif
#if defined(_GIMMICK_SHEAR_LOCATION)
if (_Gimmick_Shear_Location_Enable_Dynamic) {
v0_objPos = mul(float3x3(
@@ -293,10 +313,12 @@ void geom(triangle v2f tri_in[3],
0, _Gimmick_Shear_Location_Strength.y, 0,
0, 0, _Gimmick_Shear_Location_Strength.z),
v2_objPos);
+ }
+#endif
+#if defined(_GIMMICK_SHEAR_LOCATION) || defined(_GIMMICK_SPHERIZE_LOCATION)
v0.worldPos.xyz = mul(unity_ObjectToWorld, v0_objPos);
v1.worldPos.xyz = mul(unity_ObjectToWorld, v1_objPos);
v2.worldPos.xyz = mul(unity_ObjectToWorld, v2_objPos);
- }
#endif
v0.pos = UnityObjectToClipPos(v0_objPos);