1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-01 17:36:21 +03:00
occt/resources/Shaders/PhongDirectionalLight.glsl
Pasukhin Dmitry df4b931988
Configuration - Resource structure reorganization #429
Reorganized resources to keep source part in src and real-time scripts in resource folder.
For the installation result no changes, still installed to src for windows.
2025-03-18 22:54:43 +00:00

30 lines
1.0 KiB
GLSL

//! Function computes contribution of directional light source
//! into global variables Diffuse and Specular (Phong shading).
//! @param theId light source index
//! @param theNormal surface normal
//! @param theView view direction
//! @param theIsFront front/back face flag
//! @param theShadow shadow attenuation
void occDirectionalLight (in int theId,
in vec3 theNormal,
in vec3 theView,
in bool theIsFront,
in float theShadow)
{
vec3 aLight = occLight_Position (theId);
vec3 aHalf = normalize (aLight + theView);
vec3 aFaceSideNormal = theIsFront ? theNormal : -theNormal;
float aNdotL = max (0.0, dot (aFaceSideNormal, aLight));
float aNdotH = max (0.0, dot (aFaceSideNormal, aHalf ));
float aSpecl = 0.0;
if (aNdotL > 0.0)
{
aSpecl = pow (aNdotH, occMaterial_Shininess (theIsFront));
}
Diffuse += occLight_Diffuse (theId) * aNdotL * theShadow;
Specular += occLight_Specular (theId) * aSpecl * theShadow;
}