diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-05-31 14:32:53 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-01 12:01:55 +0300 |
commit | c450966e9562eb352b869f3b554d60a42dea2fa1 (patch) | |
tree | 8cdf507041087221dbf07c66f476b8618312872d /source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl | |
parent | 3b2d3a3cd11d07945b18252359378ffadddfe3bd (diff) |
Workbench: Material specific settings for the specular
- Uses the roughness setting of the basic eevee material
- renamed gloss_mir to roughness
- set default of roughness to 0.25
- renamed ray_mirror to metallic
- cleaned up material rna (BI mirror struct)
- use BLINN phong model
- normalize incoming/outgoing specular light
- when using camera oriented studiolight, the SolidLight will be used
for specular highlights
- EXPERIMENT: when in world oriented studiolight only the shadow direction will be used.
- change the settings of the internal light to make scenes more
readable
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl index 7374dfbe79e..269911189fa 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl @@ -2,6 +2,7 @@ out vec4 fragColor; uniform usampler2D objectId; uniform sampler2D colorBuffer; +uniform sampler2D specularBuffer; uniform sampler2D normalBuffer; /* normalBuffer contains viewport normals */ uniform vec2 invertedViewportSize; @@ -54,6 +55,14 @@ void main() #endif /* WORKBENCH_ENCODE_NORMALS */ #endif +#ifdef V3D_SHADING_SPECULAR_HIGHLIGHT + /* XXX Should calculate the correct VS Incoming direction */ + vec3 I_vs = vec3(0.0, 0.0, 1.0); + vec4 specular_data = texelFetch(specularBuffer, texel, 0); + vec3 specular_color = get_world_specular_lights(world_data, specular_data, normal_viewport, I_vs); +#else + vec3 specular_color = vec3(0.0); +#endif #ifdef V3D_LIGHTING_STUDIO #ifdef STUDIOLIGHT_ORIENTATION_CAMERA @@ -64,20 +73,11 @@ void main() vec3 normal_world = normalWorldMatrix * normal_viewport; vec3 diffuse_light = get_world_diffuse_light(world_data, normal_world); #endif - - vec3 specular_color = get_world_specular_light(world_data, normal_viewport, vec3(0.0, 0.0, 1.0)); vec3 shaded_color = diffuse_light * diffuse_color.rgb + specular_color; #else /* V3D_LIGHTING_STUDIO */ - #ifdef V3D_SHADING_SPECULAR_HIGHLIGHT - vec3 specular_color = get_world_specular_light(world_data, normal_viewport, vec3(0.0, 0.0, 1.0)); vec3 shaded_color = diffuse_color.rgb + specular_color; - #else /* V3D_SHADING_SPECULAR_HIGHLIGHT */ - vec3 shaded_color = diffuse_color.rgb; - - #endif /* V3D_SHADING_SPECULAR_HIGHLIGHT */ - #endif /* V3D_LIGHTING_STUDIO */ #ifdef V3D_SHADING_SHADOW |