diff options
| author | yum <yum.food.vr@gmail.com> | 2025-03-15 20:02:27 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-03-15 20:02:27 -0700 |
| commit | 0bdd12598e22932d14fb71b16f9ad840d544d12d (patch) | |
| tree | bb1f20a88e04836463e06a8b5e0c70adfa5fd36b /2ner.cginc | |
| parent | df77089d90024f229e4dd27a25a9b97645b614d1 (diff) | |
begin sketching out harnack tracer
Diffstat (limited to '2ner.cginc')
| -rw-r--r-- | 2ner.cginc | 35 |
1 files changed, 34 insertions, 1 deletions
@@ -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
|
