diff options
| author | yum <yum.food.vr@gmail.com> | 2026-01-16 15:35:54 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2026-01-16 15:35:54 -0800 |
| commit | 02c32fcc30e753da96f0aa072ed1d74ca300979c (patch) | |
| tree | a580f5ec83ea23ec3b6b1c5e9c94266e531bb9e6 /3ner.cginc | |
| parent | 5731b075b2ffa40b4f059a01ec0c105e681bf43e (diff) | |
Impostors: fix bounding sphere scale
Diffstat (limited to '3ner.cginc')
| -rw-r--r-- | 3ner.cginc | 35 |
1 files changed, 25 insertions, 10 deletions
@@ -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 |
