From 0bdd12598e22932d14fb71b16f9ad840d544d12d Mon Sep 17 00:00:00 2001 From: yum Date: Sat, 15 Mar 2025 20:02:27 -0700 Subject: begin sketching out harnack tracer --- 2ner.cginc | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to '2ner.cginc') diff --git a/2ner.cginc b/2ner.cginc index 548ec87..1382903 100644 --- a/2ner.cginc +++ b/2ner.cginc @@ -8,6 +8,7 @@ #include "face_me.cginc" #include "features.cginc" #include "globals.cginc" +#include "harnack_tracing.cginc" #include "interpolators.cginc" #include "matcaps.cginc" #include "poi.cginc" @@ -141,7 +142,11 @@ v2f vert(appdata v) { return o; } -float4 frag(v2f i) : SV_Target { +float4 frag(v2f i +#if defined(_HARNACK_TRACING) + , out float depth : SV_DepthLessEqual +#endif +) : SV_Target { UNITY_APPLY_DITHER_CROSSFADE(i.pos.xy); UNITY_SETUP_INSTANCE_ID(i); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i); @@ -156,6 +161,15 @@ float4 frag(v2f i) : SV_Target { YumPbr pbr = GetYumPbr(i); +#if defined(_HARNACK_TRACING) + HarnackTracingOutput harnack_output = HarnackTracing(i); + pbr.albedo = float4(1, 1, 1, 0.2); + pbr.smoothness = 0.95; + pbr.roughness_perceptual = 0.05; + pbr.roughness = pbr.roughness_perceptual * pbr.roughness_perceptual; + pbr.metallic = 0; +#endif + #if defined(_SSFD) float ssfd_mask = ssfd(i.uv01.xy, _SSFD_Scale, _SSFD_Max_Fwidth, 0, _SSFD_Noise); pbr.albedo *= (ssfd_mask > _SSFD_Threshold); @@ -194,6 +208,25 @@ float4 frag(v2f i) : SV_Target { float4 lit = YumBRDF(i, l, pbr); +#if defined(_HARNACK_TRACING) + pbr.albedo = harnack_output.color; + pbr.smoothness = 0; + pbr.roughness = 1; + pbr.roughness_perceptual = 1; + pbr.metallic = 0; + pbr.normal = harnack_output.normal; + l.NoL = saturate(dot(pbr.normal, l.dir)); + l.NoL_wrapped_s = l.NoL; + l.NoL_wrapped_d = l.NoL; + float4 harnack_lit = YumBRDF(i, l, pbr); + //lit = alphaBlend(harnack_lit, lit); + lit = harnack_lit; + { + float4 clip_pos = mul(UNITY_MATRIX_VP, float4(harnack_output.worldPos, 1.0)); + depth = clip_pos.z / clip_pos.w; + } +#endif + #if defined(_EMISSION) || (defined(_GLITTER) && defined(FORWARD_BASE_PASS)) lit.rgb += pbr.emission; #endif -- cgit v1.2.3