diff options
| author | yum <yum.food.vr@gmail.com> | 2024-07-20 13:19:53 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-07-20 13:19:53 -0700 |
| commit | 50699410bf33f143531eae080e1e0e068da504cd (patch) | |
| tree | 4bbaa5aad8258881171188595e545932a903ff3d /poi.cginc | |
| parent | 68ca46b15f6a7185a03060070d24b350102fafe6 (diff) | |
Switch to poi-style direct lighting
Diffstat (limited to 'poi.cginc')
| -rw-r--r-- | poi.cginc | 28 |
1 files changed, 27 insertions, 1 deletions
@@ -4,7 +4,7 @@ /* MIT License -Copyright (c) 2018 King Arthur +Copyright (c) 2023 Poiyomi Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -97,4 +97,30 @@ half3 BetterSH9(half4 normal) return indirect; } +float calculateluminance(float3 color) +{ + return color.r * 0.299 + color.g * 0.587 + color.b * 0.114; +} + +float3 getPoiLightingDirect(float3 normal) { + float3 magic = max(BetterSH9(normalize(unity_SHAr + unity_SHAg + unity_SHAb)), 0); + float3 normalLight = _LightColor0.rgb + BetterSH9(float4(0, 0, 0, 1)); + + float magiLumi = calculateluminance(magic); + float normaLumi = calculateluminance(normalLight); + float maginormalumi = magiLumi + normaLumi; + + float magiratio = magiLumi / maginormalumi; + float normaRatio = normaLumi / maginormalumi; + + float target = calculateluminance(magic * magiratio + normalLight * normaRatio); + float3 properLightColor = magic + normalLight; + float properLuminance = calculateluminance(magic + normalLight); + return properLightColor * max(0.0001, (target / properLuminance)); +} + +float3 getPoiLightingIndirect() { + return BetterSH9(float4(0, 0, 0, 1)); +} + #endif // __POI_INC |
