diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-05 09:15:30 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2018-06-05 12:38:33 +0300 |
commit | a3815f87773c7d45740c98c888718424d736870b (patch) | |
tree | 4cd46cb327fe76e1dfcde04dcdd99d1cc4a2e9b5 /source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl | |
parent | ade710500df4f333077daa96e3ab72eb2cdc3b94 (diff) |
Workbench: Matcaps T55291
- users can use their own matcaps
.config/blender/2.80/datafiles/studiolights/matcap/ folder
- upto 100 matcaps can be loaded
- color of the matcap is influenced by the color of the material/single
color etc. To show the plain matcap use single color at 1.0
- chosing a matcap is at lighting level (flat/studio/matcap)
- matcap only possible in solid mode
- also works for X-Ray mode
As the old matcaps are still in used by the clay engine I didn't remove
it yet.
Diffstat (limited to 'source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl index bc7741f853c..5931a11f184 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl @@ -24,19 +24,29 @@ layout(location=0) out uint objectId; layout(location=1) out vec4 diffuseColor; layout(location=2) out vec4 specularColor; #ifdef NORMAL_VIEWPORT_PASS_ENABLED - #ifdef WORKBENCH_ENCODE_NORMALS +# ifdef WORKBENCH_ENCODE_NORMALS layout(location=3) out vec2 normalViewport; - #else /* WORKBENCH_ENCODE_NORMALS */ +# else /* WORKBENCH_ENCODE_NORMALS */ layout(location=3) out vec3 normalViewport; - #endif /* WORKBENCH_ENCODE_NORMALS */ +# endif /* WORKBENCH_ENCODE_NORMALS */ #endif /* NORMAL_VIEWPORT_PASS_ENABLED */ void main() { objectId = uint(object_id); + +#ifdef NORMAL_VIEWPORT_PASS_ENABLED + vec3 n = (gl_FrontFacing) ? normal_viewport : -normal_viewport; + n = normalize(n); +#endif + #ifdef OB_SOLID diffuseColor = vec4(material_data.diffuse_color.rgb, 0.0); +# ifdef STUDIOLIGHT_ORIENTATION_VIEWNORMAL + specularColor = vec4(material_data.diffuse_color.rgb, material_data.matcap_texture_index); +# endif #endif /* OB_SOLID */ + #ifdef OB_TEXTURE diffuseColor = texture(image, uv_interp); #endif /* OB_TEXTURE */ @@ -47,14 +57,12 @@ void main() #ifdef V3D_SHADING_SPECULAR_HIGHLIGHT specularColor = vec4(material_data.specular_color.rgb, material_data.roughness); -#ifdef HAIR_SHADER +# ifdef HAIR_SHADER specularColor.rgb = clamp(specularColor.rgb - hair_color_variation, 0.0, 1.0); -#endif +# endif #endif #ifdef NORMAL_VIEWPORT_PASS_ENABLED - vec3 n = (gl_FrontFacing) ? normal_viewport : -normal_viewport; - n = normalize(n); # ifdef WORKBENCH_ENCODE_NORMALS diffuseColor.a = float(gl_FrontFacing); normalViewport = normal_encode(n); |