summaryrefslogtreecommitdiffstats
path: root/res/effectlib/funcspecularBSDF.glsllib
blob: f774b0b92ae17f5324bdea87a559b0471a65a651 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "luminance.glsllib"

#ifndef scatter_reflect
#define scatter_reflect           0
#define scatter_transmit          1
#define scatter_reflect_transmit  2
#endif

vec4 specularBSDF(in vec3 N, in vec3 L, in vec3 viewDir, in vec3 lightSpecular, in float shininess)
{
    vec4 rgba = vec4(0.0, 0.0, 0.0, 1.0);
    float cosTheta = dot(N, L);
    if (0.0 < cosTheta) {
        vec3 R = reflect(-L, N);
        float cosAlpha = max(0.0, dot(R, viewDir));
        float shine = pow(cosAlpha, shininess);
        rgba.rgb = shine * lightSpecular;
    }
    return rgba;
}