diff options
| author | yum <yum.food.vr@gmail.com> | 2025-02-11 16:54:10 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-02-11 16:54:10 -0800 |
| commit | 20c32dcb055058b770062b7e9dd07f79d33a8caa (patch) | |
| tree | a712206014334ab41a012c2cc27086c5f0591c45 /yum_pbr.cginc | |
| parent | 2dcf39113fab3aac8fe280f3b0ead9cf87fa958d (diff) | |
Add code
Implement basic diffuse and specular BRDF based heavily on silent's
filamented shader.
Diffstat (limited to 'yum_pbr.cginc')
| -rw-r--r-- | yum_pbr.cginc | 39 |
1 files changed, 39 insertions, 0 deletions
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 + |
