diff options
| author | yum <yum.food.vr@gmail.com> | 2025-02-24 17:06:06 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-02-24 17:06:06 -0800 |
| commit | 6017d2d8bad7dde020121259cba5cb614c11f761 (patch) | |
| tree | cbe54fd89d69537ac6da9399e985a8f77f98e850 /2ner.cginc | |
| parent | 6b6920cfde43d84c59d757b7b96ccabe46d6d75a (diff) | |
Add focal length multiplier
Diffstat (limited to '2ner.cginc')
| -rw-r--r-- | 2ner.cginc | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -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;
|
