This is an addon for Godot 4.4+ that adds the Burley node to the visual shader system. This node outputs the Diffuse Light based on the Disney Principled PBS diffuse light model.


Godot Shader Language:

const float INV_PI = 0.31830988618379067154; // 1.0 / PI.

float schlick_fresnel(float u)
{
    float m = clamp(1.0 - u, 0.0, 1.0);
    return m * m * m * m * m; // pow(m, 5.0).
}

float diffuse_burley(
    in vec3 n,
    in vec3 l,
    in vec3 v,
    in float roughness
)
{
    float NdotL = dot(n, l); // cos(theta_l) == cos(theta_i).
    
    if(NdotL < 0.0)
    {
        return 0.0;
    }
    
    vec3 h = normalize(v + l);
    
    float NdotV = min(max(dot(n, v), 1e-3), 1.0); // cos(theta_v) == cos(theta_r).
    float HdotL = dot(h, v); // cos(theta_d).
    
    float FD_l = schlick_fresnel(NdotL), FD_v = schlick_fresnel(NdotV);
    float FD90 = 0.5 + 2.0 * roughness * HdotL * HdotL;
    
    return INV_PI * mix(1.0, FD90, FD_l) * mix(1.0, FD90, FD_v) * NdotL;
}


ko-fi | InterDreamSoft

Burley Diffuse Reflectance Model (Node).


Links & Support


[ Support Email: interdreamsoft@gmail.com ]

Download

Download NowName your own price

Click download now to get access to the following files:

diffuse_burley_v1.0.3.zip 100 kB

Development log

Leave a comment

Log in with itch.io to leave a comment.