diff options
| author | yum <yum.food.vr@gmail.com> | 2025-10-11 22:08:17 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-10-12 11:14:39 -0700 |
| commit | b056c6935128dd7e4a9572a946bab5c4bc08da32 (patch) | |
| tree | 1de16ab073383a5277a19354fbf0d63feaa5090f /3ner.cginc | |
| parent | dc8a6dfb9d78316b8c58c587bc606468377b0fe3 (diff) | |
gay behavior
Diffstat (limited to '3ner.cginc')
| -rw-r--r-- | 3ner.cginc | 39 |
1 files changed, 27 insertions, 12 deletions
@@ -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); |
