diff options
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl index 6507f1ec707..7e476080b64 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_world_light_lib.glsl @@ -18,3 +18,19 @@ vec3 get_camera_diffuse_light(WorldData world_data, vec3 N) result = mix(result, world_data.diffuse_light_y_neg, clamp(-N.z, 0.0, 1.0)); return result.xyz; } + +/* N And I are in View Space. */ +vec3 get_world_specular_light(WorldData world_data, vec3 N, vec3 I) +{ +#ifdef V3D_SHADING_SPECULAR_HIGHLIGHTS + vec3 reflection_vector = reflect(I, N); + vec3 specular_light = vec3(1.0); + /* Simple frontal specular highlights. */ + float specular_influence = pow(max(0.0, dot(world_data.light_direction_vs.xyz, reflection_vector)), world_data.specular_sharpness); + vec3 specular_color = specular_light * specular_influence; + +#else /* V3D_SHADING_SPECULAR_HIGHLIGHTS */ + vec3 specular_color = vec3(0.0); +#endif /* V3D_SHADING_SPECULAR_HIGHLIGHTS */ + return specular_color; +} |