summaryrefslogtreecommitdiffstats
path: root/2ner.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-02-24 17:06:06 -0800
committeryum <yum.food.vr@gmail.com>2025-02-24 17:06:06 -0800
commit6017d2d8bad7dde020121259cba5cb614c11f761 (patch)
treecbe54fd89d69537ac6da9399e985a8f77f98e850 /2ner.cginc
parent6b6920cfde43d84c59d757b7b96ccabe46d6d75a (diff)
Add focal length multiplier
Diffstat (limited to '2ner.cginc')
-rw-r--r--2ner.cginc21
1 files changed, 21 insertions, 0 deletions
diff --git a/2ner.cginc b/2ner.cginc
index e814fd8..f0efe83 100644
--- a/2ner.cginc
+++ b/2ner.cginc
@@ -64,7 +64,28 @@ v2f vert(appdata v) {
v.tangent.xyz = tangent_tmp;
#endif
+#if defined(_FOCAL_LENGTH_CONTROL)
+ UNITY_BRANCH
+ if (_Focal_Length_Enabled_Dynamic) {
+ float4 fl_worldPos_unscaled = mul(unity_ObjectToWorld, v.vertex);
+ float4 fl_viewPos_unscaled = mul(UNITY_MATRIX_V, fl_worldPos_unscaled);
+
+ float4 fl_objPos = float4(v.vertex.xyz * _Focal_Length_Multiplier, v.vertex.w);
+ float4 fl_worldPos = mul(unity_ObjectToWorld, fl_objPos);
+ float4 fl_viewPos = mul(UNITY_MATRIX_V, fl_worldPos);
+ fl_viewPos.xy /= _Focal_Length_Multiplier;
+
+ float2 fl_compensation = fl_viewPos_unscaled.xy - fl_viewPos.xy;
+ fl_viewPos.xy += fl_compensation;
+
+ o.pos = mul(UNITY_MATRIX_P, fl_viewPos);
+ } else {
+ o.pos = UnityObjectToClipPos(v.vertex);
+ }
+#else
o.pos = UnityObjectToClipPos(v.vertex);
+#endif
+
o.uv01 = v.uv01;
o.worldPos = mul(unity_ObjectToWorld, v.vertex);
o.objPos = v.vertex;