summaryrefslogtreecommitdiffstats
path: root/3ner.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-01-16 15:35:54 -0800
committeryum <yum.food.vr@gmail.com>2026-01-16 15:35:54 -0800
commit02c32fcc30e753da96f0aa072ed1d74ca300979c (patch)
treea580f5ec83ea23ec3b6b1c5e9c94266e531bb9e6 /3ner.cginc
parent5731b075b2ffa40b4f059a01ec0c105e681bf43e (diff)
Impostors: fix bounding sphere scale
Diffstat (limited to '3ner.cginc')
-rw-r--r--3ner.cginc35
1 files changed, 25 insertions, 10 deletions
diff --git a/3ner.cginc b/3ner.cginc
index a6900d3..1788116 100644
--- a/3ner.cginc
+++ b/3ner.cginc
@@ -30,9 +30,7 @@ v2f vert(appdata v) {
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
#if defined(_IMPOSTORS)
- float3 impostorWorldPos = mul(unity_ObjectToWorld, v.vertex);
- impostor_vert(v.vertex, impostorWorldPos);
- v.vertex = mul(unity_WorldToObject, float4(impostorWorldPos, 1));
+ impostor_vert(v.vertex.xyz);
#endif
#if defined(_TESSELLATION)
@@ -253,10 +251,19 @@ void geom(triangle v2f tri_in[3],
}
//endex
-float4 frag(v2f i, uint facing : SV_IsFrontFace) : SV_Target {
+struct FragOut {
+ float4 color;
+#if defined(_IMPOSTORS)
+ float depth : SV_DepthLessEqual;
+#endif
+};
+
+FragOut frag(v2f i, uint facing : SV_IsFrontFace) : SV_Target {
+ FragOut result = (FragOut) 0;
+
UNITY_SETUP_INSTANCE_ID(i);
#if defined(SHADOW_CASTER_PASS)
- return 0;
+ return result;
#endif
#if defined(_RAY_MARCHING)
@@ -276,14 +283,20 @@ float4 frag(v2f i, uint facing : SV_IsFrontFace) : SV_Target {
#if defined(_IMPOSTORS)
i.normal = pbr.normal;
+ i.objPos = pbr.objPos;
+ propagateObjPos(i);
+ result.depth = i.pos.z;
#endif
#if defined(_DEBUG_VIEW_UNLIT)
- return pbr.albedo;
+ result.color = pbr.albedo;
+ return result;
#elif defined(_DEBUG_VIEW_WORLD_SPACE_NORMALS)
- return float4((pbr.normal + 1.0f) * 0.5f, 1);
+ result.color = float4((pbr.normal + 1.0f) * 0.5f, 1);
+ return result;
#elif defined(_DEBUG_VIEW_METALLIC_GLOSS)
- return float4(pbr.metallic, pbr.smoothness, 0, 1);
+ result.color = float4(pbr.metallic, pbr.smoothness, 0, 1);
+ return result;
#endif
LightData light_data;
@@ -291,9 +304,11 @@ float4 frag(v2f i, uint facing : SV_IsFrontFace) : SV_Target {
#if 0
float c = light_data.common.NoV;
- return float4(c,c,c,1);
+ result.color = float4(c,c,c,1);
+ return result;
#endif
- return brdf(pbr, light_data);
+ result.color = brdf(pbr, light_data);
+ return result;
}
#endif // __3NER_INC