summaryrefslogtreecommitdiffstats
path: root/3ner.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-10-11 22:08:17 -0700
committeryum <yum.food.vr@gmail.com>2025-10-12 11:14:39 -0700
commitb056c6935128dd7e4a9572a946bab5c4bc08da32 (patch)
tree1de16ab073383a5277a19354fbf0d63feaa5090f /3ner.cginc
parentdc8a6dfb9d78316b8c58c587bc606468377b0fe3 (diff)
gay behavior
Diffstat (limited to '3ner.cginc')
-rw-r--r--3ner.cginc39
1 files changed, 27 insertions, 12 deletions
diff --git a/3ner.cginc b/3ner.cginc
index 1b5e358..4b98812 100644
--- a/3ner.cginc
+++ b/3ner.cginc
@@ -13,6 +13,7 @@
#include "lighting.cginc"
#include "globals.cginc"
#include "interpolators.cginc"
+#include "vertex.cginc"
v2f vert(appdata v) {
v2f o;
@@ -24,14 +25,20 @@ v2f vert(appdata v) {
#if defined(_TESSELLATION)
o.tpos = v.vertex;
#endif
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv0 = v.uv0;
- o.objPos = v.vertex;
- o.worldPos = mul(unity_ObjectToWorld, v.vertex);
- o.eyeVec.xyz = o.worldPos.xyz - _WorldSpaceCameraPos;
- o.normal = UnityObjectToWorldNormal(v.normal);
- o.tangent.xyz = UnityObjectToWorldNormal(v.tangent.xyz);
- o.tangent.w = v.tangent.w;
+ o.uv0 = v.uv0;
+ o.objPos = v.vertex;
+#if defined(_CUSTOM31_FRAGMENT_NORMALS)
+ o.objPos_orig = v.vertex;
+#endif
+
+ // Normal and tangent are in object space.
+ o.normal = v.normal;
+ o.tangent = v.tangent;
+#if !defined(_CUSTOM31_FRAGMENT_NORMALS)
+ deform_normal(o.objPos, o.normal.xyz, o.tangent.xyz);
+#endif
+ deform(o.objPos);
+ propagateObjPos(o);
UNITY_TRANSFER_LIGHTING(o, v.uv1);
UNITY_TRANSFER_FOG_COMBINED_WITH_EYE_VEC(o, o.pos);
@@ -148,13 +155,13 @@ v2f domain(
#else
o.objPos = DOMAIN_INTERP(objPos);
#endif
-
+#if defined(_CUSTOM31_FRAGMENT_NORMALS)
+ o.objPos_orig = DOMAIN_INTERP(objPos_orig);
+#endif
o.normal = DOMAIN_INTERP(normal);
o.tangent = DOMAIN_INTERP(tangent);
- o.worldPos = mul(unity_ObjectToWorld, float4(o.objPos, 1));
- o.pos = UnityObjectToClipPos(o.objPos);
- o.eyeVec.xyz = o.worldPos - _WorldSpaceCameraPos;
+ propagateObjPos(o);
UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
@@ -166,6 +173,14 @@ float4 frag(v2f i, uint facing : SV_IsFrontFace
, out float depth : SV_DepthLessEqual
#endif
) : SV_Target {
+#if defined(_CUSTOM31_FRAGMENT_NORMALS)
+ deform_normal(i.objPos_orig, i.normal, i.tangent.xyz);
+#endif
+
+ // Convert normal and tangent to world space.
+ i.normal = UnityObjectToWorldNormal(i.normal);
+ i.tangent.xyz = UnityObjectToWorldNormal(i.tangent.xyz);
+
i.normal *= facing ? 1 : -1;
i.normal = normalize(i.normal);
i.tangent.xyz = normalize(i.tangent.xyz);