diff options
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 ; |