Revision control
++ // Copyright (C) 2023 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
++
++ #ifndef FRESNEL_GLSLLIB
++ #define FRESNEL_GLSLLIB 1
++
++ float qt_schlick(float value)
++ {
++ float n = 1.0 - value;
++ float n2 = n * n;
++ return n2 * n2 * n;
++ }
++
++ vec3 qt_F0_ior(float ior, float metalness, vec3 baseColor)
++ {
++ float f0 = ((ior - 1.0) * (ior - 1.0)) / ((ior + 1.0) * (ior + 1.0));
++ return (vec3(f0) * (1.0 - metalness)) + (baseColor * metalness);
++ }
++
++ vec3 qt_principledMaterialFresnel(in vec3 N, in vec3 viewDir, in vec3 f0, in float roughness, in float fresnelPower)
++ {
++ float nDotV = clamp(dot(N, viewDir), 0.0, 1.0);
++ vec3 F = f0 + (max(vec3(1.0 - roughness), f0) - f0) * pow(1.0 - nDotV, fresnelPower);
++ return F;
++ }
++
++ #endif