mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
39 lines
1.5 KiB
GLSL
39 lines
1.5 KiB
GLSL
|
|
uniform vec3 u_ecLightPosition;
|
|
uniform vec3 u_ecLightPosition2;
|
|
uniform float u_ambientIntensity;
|
|
|
|
varying vec3 v_ecPosition;
|
|
varying vec3 v_ecNormal;
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
/// lightFragment() - inShadowFactor: 0..1 (1 not in shadow, 0 totally in shadow)
|
|
//--------------------------------------------------------------------------------------------------
|
|
vec4 lightFragment(vec4 srcFragColor, float shadowFactor)
|
|
{
|
|
const float specularIntensity = 0.5;
|
|
|
|
// Viewing vector (from point to eye)
|
|
// Since we are in eye space, the eye pos is at (0, 0, 0)
|
|
vec3 V = normalize(-v_ecPosition);
|
|
vec3 N = normalize(v_ecNormal);
|
|
|
|
// Light vector (from point to light source)
|
|
vec3 L1 = normalize(u_ecLightPosition - v_ecPosition);
|
|
vec3 L2 = normalize(u_ecLightPosition2 - v_ecPosition);
|
|
|
|
vec3 R1 = normalize(reflect(-L1, N));
|
|
vec3 R2 = normalize(reflect(-L2, N));
|
|
|
|
vec3 ambient = srcFragColor.rgb*u_ambientIntensity;
|
|
|
|
vec3 diffuse = (0.25 + shadowFactor*0.75)*0.8*srcFragColor.rgb*(1.0 - u_ambientIntensity)*max(dot(N, L1), 0.0);
|
|
diffuse += (0.25 + shadowFactor*0.75)*0.2*srcFragColor.rgb*(1.0 - u_ambientIntensity)*max(dot(N, L2), 0.0);
|
|
|
|
//vec3 specular = vec3(0,0,0);
|
|
vec3 specular = shadowFactor*0.8*vec3(specularIntensity*pow(max(dot(R1, V), 0.0), 20.0));
|
|
specular += shadowFactor*0.2*vec3(specularIntensity*pow(max(dot(R2, V), 0.0), 20.0));
|
|
|
|
return vec4(ambient + diffuse + specular, srcFragColor.a);
|
|
}
|