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_forward_transparent_accum_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_forward_transparent_accum_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl index d0e3305cc70..88b32cb9b20 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_forward_transparent_accum_frag.glsl @@ -1,4 +1,3 @@ -uniform vec4 color = vec4(0.0, 0.0, 1.0, 1.0); #ifdef OB_TEXTURE uniform sampler2D image; #endif @@ -15,6 +14,10 @@ layout(std140) uniform world_block { WorldData world_data; }; +layout(std140) uniform material_block { + MaterialData material_data; +}; + layout(location=0) out vec4 transparentAccum; @@ -22,12 +25,18 @@ void main() { vec4 diffuse_color; #ifdef OB_SOLID - diffuse_color = color; + diffuse_color = material_data.diffuse_color; #endif /* OB_SOLID */ #ifdef OB_TEXTURE diffuse_color = texture(image, uv_interp); #endif /* OB_TEXTURE */ +#ifdef V3D_SHADING_SPECULAR_HIGHLIGHT + vec3 specular_color = get_world_specular_lights(world_data, vec4(material_data.specular_color.rgb, material_data.roughness), normal_viewport, vec3(0.0, 0.0, 1.0)); +#else + vec3 specular_color = vec3(0.0); +#endif + #ifdef V3D_LIGHTING_STUDIO #ifdef STUDIOLIGHT_ORIENTATION_CAMERA vec3 diffuse_light = get_camera_diffuse_light(world_data, normal_viewport); @@ -37,19 +46,11 @@ void main() 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 */ float alpha = 0.5 ; |