From fb48528cbb1881ff8ac96a1cd05c2c7aa326b203 Mon Sep 17 00:00:00 2001 From: yum Date: Tue, 11 Nov 2025 16:20:14 -0800 Subject: add detail map feature --- pbr.cginc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'pbr.cginc') diff --git a/pbr.cginc b/pbr.cginc index cb6b079..73ff970 100644 --- a/pbr.cginc +++ b/pbr.cginc @@ -4,6 +4,7 @@ #include "filamented.cginc" #include "globals.cginc" #include "interpolators.cginc" +#include "texture_utils.cginc" struct Pbr { float4 albedo; @@ -63,6 +64,16 @@ Pbr getPbr(v2f i) { float3 normal_tangent = UnpackNormal(_BumpMap.Sample(aniso16_trilinear_repeat_s, i.uv01.xy * _BumpMap_ST.xy)); normal_tangent.xy *= _BumpScale; + +#if defined(_DETAILS) + float2 detail_uv = get_uv_by_channel(i, _Details_UV_Channel); + float3 detail_normal = UnpackNormal(_DetailNormalMap.Sample(aniso16_trilinear_repeat_s, detail_uv * _DetailNormalMap_ST.xy)); + detail_normal.xy *= _DetailNormalMapScale; + float detail_mask = _DetailMask.Sample(aniso16_trilinear_repeat_s, detail_uv * _DetailMask_ST.xy).r; + detail_normal.xy *= detail_mask; + normal_tangent = blendNormalsHill12(normal_tangent, detail_normal); +#endif + // Map from tangent space to world space. float3 bitangent = cross(i.normal, i.tangent.xyz) * i.tangent.w; pbr.tbn = float3x3(i.tangent.xyz, bitangent, i.normal); -- cgit v1.2.3