From 2e99a2275ce3d0d9eef7892cf7485a5f278cacb4 Mon Sep 17 00:00:00 2001 From: yum Date: Thu, 15 Jan 2026 00:02:57 -0800 Subject: Impostors: dilate baked textures --- impostor.cginc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'impostor.cginc') diff --git a/impostor.cginc b/impostor.cginc index f271612..1623681 100644 --- a/impostor.cginc +++ b/impostor.cginc @@ -105,8 +105,13 @@ ImpostorSample SampleImpostorCell(float2 cell, float3 frameDir, float3 pivotToCa ImpostorSample BlendImpostorSamples(ImpostorSample s00, ImpostorSample s01, ImpostorSample s10, ImpostorSample s11, float4 bw) { ImpostorSample result; result.albedo = s00.albedo * bw.x + s01.albedo * bw.y + s10.albedo * bw.z + s11.albedo * bw.w; - result.normal = s00.normal * bw.x + s01.normal * bw.y + s10.normal * bw.z + s11.normal * bw.w; - result.metallicGloss = s00.metallicGloss * bw.x + s01.metallicGloss * bw.y + s10.metallicGloss * bw.z + s11.metallicGloss * bw.w; + + // Weight normal/metallicGloss by alpha to avoid blending with transparent (zero) pixels + float4 alphaBw = float4(s00.albedo.a, s01.albedo.a, s10.albedo.a, s11.albedo.a) * bw; + alphaBw /= max(dot(alphaBw, 1), 0.001); + + result.normal = s00.normal * alphaBw.x + s01.normal * alphaBw.y + s10.normal * alphaBw.z + s11.normal * alphaBw.w; + result.metallicGloss = s00.metallicGloss * alphaBw.x + s01.metallicGloss * alphaBw.y + s10.metallicGloss * alphaBw.z + s11.metallicGloss * alphaBw.w; return result; } -- cgit v1.2.3