summaryrefslogtreecommitdiffstats
path: root/yum_pbr.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-02-11 16:54:10 -0800
committeryum <yum.food.vr@gmail.com>2025-02-11 16:54:10 -0800
commit20c32dcb055058b770062b7e9dd07f79d33a8caa (patch)
treea712206014334ab41a012c2cc27086c5f0591c45 /yum_pbr.cginc
parent2dcf39113fab3aac8fe280f3b0ead9cf87fa958d (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.cginc39
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
+