From 20c32dcb055058b770062b7e9dd07f79d33a8caa Mon Sep 17 00:00:00 2001 From: yum Date: Tue, 11 Feb 2025 16:54:10 -0800 Subject: Add code Implement basic diffuse and specular BRDF based heavily on silent's filamented shader. --- yum_pbr.cginc | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 yum_pbr.cginc (limited to 'yum_pbr.cginc') diff --git a/yum_pbr.cginc b/yum_pbr.cginc new file mode 100644 index 0000000..b895cd0 --- /dev/null +++ b/yum_pbr.cginc @@ -0,0 +1,39 @@ +#ifndef __YUM_PBR +#define __YUM_PBR + +#include "filamented.cginc" +#include "globals.cginc" + +struct YumPbr { + float4 albedo; + float3 normal; + float smoothness; + float roughness; + float roughness_perceptual; + float metallic; + float ao; +}; + +YumPbr GetYumPbr(v2f i) { + YumPbr result; + + result.albedo = tex2D(_MainTex, i.uv) * _Color; + + float3 normal_raw = UnpackScaleNormal(tex2D(_BumpMap, i.uv), _BumpScale); + float3x3 tangentToWorld = float3x3(i.tangent, i.bitangent, i.normal); + result.normal = normalize(mul(normal_raw, tangentToWorld)); + + result.smoothness = _Smoothness; + result.roughness_perceptual = + normalFiltering(1.0 - result.smoothness, result.normal); + result.roughness = result.roughness_perceptual * result.roughness_perceptual; + + result.metallic = _Metallic; + + result.ao = lerp(1, tex2D(_OcclusionMap, i.uv), _OcclusionStrength); + + return result; +} + +#endif + -- cgit v1.2.3