fuckingtech/public/assets/glsl/lygia/lighting/specular/cookTorrance.glsl
Elias Rhouzlane bf76c6b086 fix: code
2025-04-06 17:23:52 +02:00

31 lines
No EOL
1 KiB
GLSL

#include "../common/ggx.glsl"
#include "../common/smithGGXCorrelated.glsl"
#include "../../math/saturate.glsl"
#include "../../math/saturateMediump.glsl"
#include "../fresnel.glsl"
#ifndef FNC_SPECULAR_COOKTORRANCE
#define FNC_SPECULAR_COOKTORRANCE
vec3 specularCookTorrance(const in vec3 L, const in vec3 N, const in vec3 H, const in float NoV, const in float NoL, const in float NoH, const in float linearRoughness, const in vec3 specularColor) {
float LoH = saturate(dot(L, H));
float D = GGX(N, H, NoH, linearRoughness);
#if defined(PLATFORM_RPI)
float V = smithGGXCorrelated_Fast(NoV, NoL, linearRoughness);
#else
float V = smithGGXCorrelated(NoV, NoL,linearRoughness);
#endif
vec3 F = fresnel(specularColor, LoH);
return (D * V) * F;
}
vec3 specularCookTorrance(ShadingData shadingData){
return specularCookTorrance(shadingData.L, shadingData.N, shadingData.H, shadingData.NoV, shadingData.NoL, shadingData.NoH, shadingData.linearRoughness, shadingData.specularColor);
}
#endif