declare const _default: "\n// Anisotropic GGX\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 viewDir, vec3 h, vec3 lightDirNorm, mat3 tbn) {\n float PI = 3.141592653589793;\n float roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n float anisotropy = material_anisotropy * roughness;\n \n float at = max((roughness + anisotropy), roughness / 4.0);\n float ab = max((roughness - anisotropy), roughness / 4.0);\n\n float NoH = dot(worldNormal, h);\n float ToH = dot(tbn[0], h);\n float BoH = dot(tbn[1], h);\n\n float a2 = at * ab;\n vec3 v = vec3(ab * ToH, at * BoH, a2 * NoH);\n float v2 = dot(v, v);\n float w2 = a2 / v2;\n float D = a2 * w2 * w2 * (1.0 / PI);\n\n float ToV = dot(tbn[0], viewDir);\n float BoV = dot(tbn[1], viewDir);\n float ToL = dot(tbn[0], -lightDirNorm);\n float BoL = dot(tbn[1], -lightDirNorm);\n float NoV = dot(worldNormal, viewDir);\n float NoL = dot(worldNormal, -lightDirNorm);\n\n float lambdaV = NoL * length(vec3(at * ToV, ab * BoV, NoV));\n float lambdaL = NoV * length(vec3(at * ToL, ab * BoL, NoL));\n float G = 0.5 / (lambdaV + lambdaL);\n\n return D * G;\n}\n\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n return calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn);\n}\n"; export default _default;