Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2018-06-08 17:12:25 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-06-08 17:13:49 +0300
commitcbbf8bbbb4fac21d5148201d45053e4f85ed778f (patch)
tree534b9db9a2aab00e01753a85390919c2cff35749 /source/blender/draw/engines/workbench
parentfc85096dc8e12e3c83621d153e13cab7bdf1860d (diff)
Workbench: XFlip Matcap per 3D View
Note: Icons are not yet updated.
Diffstat (limited to 'source/blender/draw/engines/workbench')
-rw-r--r--source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl4
-rw-r--r--source/blender/draw/engines/workbench/shaders/workbench_deferred_composite_frag.glsl6
-rw-r--r--source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl3
-rw-r--r--source/blender/draw/engines/workbench/workbench_data.c1
-rw-r--r--source/blender/draw/engines/workbench/workbench_deferred.c2
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h6
6 files changed, 14 insertions, 8 deletions
diff --git a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl
index 8d648ce7d7b..f67d2ff6745 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_data_lib.glsl
@@ -16,12 +16,12 @@ struct WorldData {
vec4 light_direction_vs;
LightData lights[3];
int num_lights;
- int pad[3];
+ int matcap_orientation;
+ int pad[2];
};
struct MaterialData {
vec4 diffuse_color;
vec4 specular_color;
float roughness;
- int matcap_texture_index;
};
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 9116e2e7ef5..e5ee272e7fd 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
@@ -62,7 +62,11 @@ void main()
#endif
#ifdef STUDIOLIGHT_ORIENTATION_VIEWNORMAL
- diffuse_color = texture(matcapImage, normal_viewport.xy / 2.0 + 0.5);
+ vec2 matcap_uv = normal_viewport.xy / 2.0 + 0.5;
+ if (world_data.matcap_orientation != 0) {
+ matcap_uv.x = 1.0 - matcap_uv.x;
+ }
+ diffuse_color = texture(matcapImage, matcap_uv);
#endif
#ifdef V3D_SHADING_SPECULAR_HIGHLIGHT
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 d33ef9a0abb..200850e3036 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_prepass_frag.glsl
@@ -43,7 +43,8 @@ void main()
#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);
+
+ specularColor = vec4(material_data.diffuse_color.rgb, 0.0);
# endif
#endif /* OB_SOLID */
diff --git a/source/blender/draw/engines/workbench/workbench_data.c b/source/blender/draw/engines/workbench/workbench_data.c
index 3a4bb1db749..df0a2bf4684 100644
--- a/source/blender/draw/engines/workbench/workbench_data.c
+++ b/source/blender/draw/engines/workbench/workbench_data.c
@@ -35,6 +35,7 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
wpd->shadow_multiplier = 1.0 - wpd->shading.shadow_intensity;
WORKBENCH_UBO_World *wd = &wpd->world_data;
+ wd->matcap_orientation = (wpd->shading.flag & V3D_SHADING_MATCAP_FLIP_X) > 0;
if ((v3d->flag3 & V3D_SHOW_WORLD) &&
(scene->world != NULL))
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c
index 428e5d4f7c8..c4fa82d39b7 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -464,7 +464,7 @@ static void workbench_composite_uniforms(WORKBENCH_PrivateData *wpd, DRWShadingG
if (STUDIOLIGHT_ORIENTATION_VIEWNORMAL_ENABLED(wpd)) {
BKE_studiolight_ensure_flag(wpd->studio_light, STUDIOLIGHT_EQUIRECTANGULAR_RADIANCE_GPUTEXTURE);
- DRW_shgroup_uniform_texture(grp, "matcapImage", wpd->studio_light->equirectangular_radiance_gputexture);
+ DRW_shgroup_uniform_texture(grp, "matcapImage", wpd->studio_light->equirectangular_radiance_gputexture); DRW_shgroup_uniform_texture(grp, "matcapImage", wpd->studio_light->equirectangular_radiance_gputexture);
}
workbench_material_set_normal_world_matrix(grp, wpd, e_data.normal_world_matrix);
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 758cc2be826..9c5f97729bf 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -128,7 +128,8 @@ typedef struct WORKBENCH_UBO_World {
float light_direction_vs[4];
WORKBENCH_UBO_Light lights[3];
int num_lights;
- int pad[3];
+ int matcap_orientation;
+ int pad[2];
} WORKBENCH_UBO_World;
BLI_STATIC_ASSERT_ALIGN(WORKBENCH_UBO_World, 16)
@@ -136,8 +137,7 @@ typedef struct WORKBENCH_UBO_Material {
float diffuse_color[4];
float specular_color[4];
float roughness;
- int matcap_texture_index;
- float pad[2];
+ float pad[3];
} WORKBENCH_UBO_Material;
BLI_STATIC_ASSERT_ALIGN(WORKBENCH_UBO_Material, 16)