[Bf-blender-cvs] [dedca2c9948] master: Fix T103313: Resolve shader compilation failures when enabling GPU workarounds.

Jason Fielder noreply at git.blender.org
Tue Dec 20 14:22:30 CET 2022


Commit: dedca2c9948af7a65dd78263e37f77052fc03de7
Author: Jason Fielder
Date:   Tue Dec 20 14:18:13 2022 +0100
Branches: master
https://developer.blender.org/rBdedca2c9948af7a65dd78263e37f77052fc03de7

Fix T103313: Resolve shader compilation failures when enabling GPU workarounds.

A number of paths resulted in compilation errors after porting EEVEE to use Create-Info. Namely the fallback path for cubemap support. A number of other strict compilation failures regarding format comparison also required fixing when this mode is enabled.

Authored by Apple: Michael Parkin-White

Ref T96261

Reviewed By: fclem

Maniphest Tasks: T96261, T103313

Differential Revision: https://developer.blender.org/D16819

===================================================================

M	source/blender/draw/engines/eevee/shaders/cubemap_lib.glsl
M	source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
M	source/blender/draw/engines/eevee/shaders/surface_vert.glsl
M	source/blender/draw/engines/eevee_next/shaders/eevee_attributes_lib.glsl
M	source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_common_lib.glsl
M	source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_vert.glsl
M	source/blender/draw/engines/overlay/shaders/overlay_edit_uv_edges_vert.glsl
M	source/blender/draw/engines/overlay/shaders/overlay_edit_uv_faces_vert.glsl
M	source/blender/draw/engines/overlay/shaders/overlay_edit_uv_verts_vert.glsl
M	source/blender/draw/engines/overlay/shaders/overlay_motion_path_point_vert.glsl
M	source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl
M	source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
M	source/blender/gpu/shaders/metal/mtl_shader_defines.msl
M	source/blender/gpu/shaders/opengl/glsl_shader_defines.glsl

===================================================================

diff --git a/source/blender/draw/engines/eevee/shaders/cubemap_lib.glsl b/source/blender/draw/engines/eevee/shaders/cubemap_lib.glsl
index cde52af39e0..30e11d57c9b 100644
--- a/source/blender/draw/engines/eevee/shaders/cubemap_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/cubemap_lib.glsl
@@ -1,12 +1,7 @@
 
-#ifdef GPU_ARB_texture_cube_map_array
-
-#  define textureLod_cubemapArray(tex, co, lod) textureLod(tex, co, lod)
-
-#else
-
-/* Fallback implementation for hardware not supporting cubemap arrays. */
-#  define samplerCubeArray sampler2DArray
+/* Fallback implementation for hardware not supporting cubemap arrays.
+ * `samplerCubeArray` fallback declaration as sampler2DArray in `glsl_shader_defines.glsl`*/
+#ifndef GPU_ARB_texture_cube_map_array
 
 float cubemap_face_index(vec3 P)
 {
diff --git a/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl b/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
index 92be7294a11..8a99f2cc5e2 100644
--- a/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
+++ b/source/blender/draw/engines/eevee/shaders/shadow_vert.glsl
@@ -70,7 +70,7 @@ int g_curves_attr_id = 0;
 int curves_attribute_element_id()
 {
   int id = hairStrandID;
-  if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0) {
+  if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0u) {
     id = hair_get_base_id();
   }
 
diff --git a/source/blender/draw/engines/eevee/shaders/surface_vert.glsl b/source/blender/draw/engines/eevee/shaders/surface_vert.glsl
index 212208728a0..a0eddc583b7 100644
--- a/source/blender/draw/engines/eevee/shaders/surface_vert.glsl
+++ b/source/blender/draw/engines/eevee/shaders/surface_vert.glsl
@@ -77,7 +77,7 @@ int g_curves_attr_id = 0;
 int curves_attribute_element_id()
 {
   int id = hairStrandID;
-  if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0) {
+  if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0u) {
     id = hair_get_base_id();
   }
 
diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_attributes_lib.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_attributes_lib.glsl
index ea1b02e56b3..f3bb1e2f490 100644
--- a/source/blender/draw/engines/eevee_next/shaders/eevee_attributes_lib.glsl
+++ b/source/blender/draw/engines/eevee_next/shaders/eevee_attributes_lib.glsl
@@ -133,7 +133,7 @@ int g_curves_attr_id = 0;
 int curves_attribute_element_id()
 {
   int id = interp.curves_strand_id;
-  if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0) {
+  if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0u) {
 #  ifdef COMMON_HAIR_LIB
     id = hair_get_base_id();
 #  endif
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_common_lib.glsl b/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_common_lib.glsl
index 88a976931cc..358a18c88d0 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_common_lib.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_common_lib.glsl
@@ -17,7 +17,7 @@ vec4 EDIT_MESH_edge_color_inner(uint edge_flag)
   color = ((edge_flag & EDGE_SELECTED) != 0u) ? color_select : color;
   color = ((edge_flag & EDGE_ACTIVE) != 0u) ? colorEditMeshActive : color;
 
-  color.a = (selectEdges || (edge_flag & (EDGE_SELECTED | EDGE_ACTIVE)) != 0) ? 1.0 : 0.7;
+  color.a = (selectEdges || (edge_flag & (EDGE_SELECTED | EDGE_ACTIVE)) != 0u) ? 1.0 : 0.7;
   return color;
 }
 
@@ -35,7 +35,7 @@ vec4 EDIT_MESH_edge_vertex_color(uint vertex_flag)
 
 vec4 EDIT_MESH_vertex_color(uint vertex_flag, float vertex_crease)
 {
-  if ((vertex_flag & VERT_ACTIVE) != 0) {
+  if ((vertex_flag & VERT_ACTIVE) != 0u) {
     return vec4(colorEditMeshActive.xyz, 1.0);
   }
   else if ((vertex_flag & VERT_SELECTED) != 0u) {
@@ -57,7 +57,7 @@ vec4 EDIT_MESH_face_color(uint face_flag)
   color = ((face_flag & FACE_FREESTYLE) != 0u) ? colorFaceFreestyle : color;
   color = ((face_flag & FACE_SELECTED) != 0u) ? colorFaceSelect : color;
   color = ((face_flag & FACE_ACTIVE) != 0u) ? color_active : color;
-  color.a *= ((face_flag & (FACE_FREESTYLE | FACE_SELECTED | FACE_ACTIVE)) == 0 || selectFaces) ?
+  color.a *= ((face_flag & (FACE_FREESTYLE | FACE_SELECTED | FACE_ACTIVE)) == 0u || selectFaces) ?
                  1.0 :
                  0.5;
   return color;
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_vert.glsl
index be90399d6b7..2aa9b4e3ac0 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_edit_mesh_vert.glsl
@@ -38,10 +38,10 @@ void main()
   finalColor = EDIT_MESH_vertex_color(m_data.y, vertexCrease);
   gl_PointSize = sizeVertex * ((vertexCrease > 0.0) ? 3.0 : 2.0);
   /* Make selected and active vertex always on top. */
-  if ((data.x & VERT_SELECTED) != 0) {
+  if ((data.x & VERT_SELECTED) != 0u) {
     gl_Position.z -= 5e-7 * abs(gl_Position.w);
   }
-  if ((data.x & VERT_ACTIVE) != 0) {
+  if ((data.x & VERT_ACTIVE) != 0u) {
     gl_Position.z -= 5e-7 * abs(gl_Position.w);
   }
 
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_edges_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_edges_vert.glsl
index fdec1421b66..8f9f416f822 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_edges_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_edges_vert.glsl
@@ -11,9 +11,9 @@ void main()
                    half_pixel_offset;
 
 #ifdef USE_EDGE_SELECT
-  bool is_select = (flag & int(EDGE_UV_SELECT)) != 0u;
+  bool is_select = (flag & int(EDGE_UV_SELECT)) != 0;
 #else
-  bool is_select = (flag & int(VERT_UV_SELECT)) != 0u;
+  bool is_select = (flag & int(VERT_UV_SELECT)) != 0;
 #endif
   geom_in.selectionFac = is_select ? 1.0 : 0.0;
   /* Move selected edges to the top
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_faces_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_faces_vert.glsl
index 80ea6228675..ca5f83501a4 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_faces_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_faces_vert.glsl
@@ -5,8 +5,8 @@ void main()
   vec3 world_pos = point_object_to_world(vec3(au, 0.0));
   gl_Position = point_world_to_ndc(world_pos);
 
-  bool is_selected = (flag & FACE_UV_SELECT) != 0;
-  bool is_active = (flag & FACE_UV_ACTIVE) != 0;
+  bool is_selected = (flag & FACE_UV_SELECT) != 0u;
+  bool is_active = (flag & FACE_UV_ACTIVE) != 0u;
 
   finalColor = (is_selected) ? colorFaceSelect : colorFace;
   finalColor = (is_active) ? colorEditMeshActive : finalColor;
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_verts_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_verts_vert.glsl
index 9f9b02ce19d..2a59a623995 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_verts_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_edit_uv_verts_vert.glsl
@@ -5,8 +5,8 @@ const vec4 pinned_col = vec4(1.0, 0.0, 0.0, 1.0);
 
 void main()
 {
-  bool is_selected = (flag & (VERT_UV_SELECT | FACE_UV_SELECT)) != 0;
-  bool is_pinned = (flag & VERT_UV_PINNED) != 0;
+  bool is_selected = (flag & (VERT_UV_SELECT | FACE_UV_SELECT)) != 0u;
+  bool is_pinned = (flag & VERT_UV_PINNED) != 0u;
   vec4 deselect_col = (is_pinned) ? pinned_col : vec4(color.rgb, 1.0);
   fillColor = (is_selected) ? colorVertexSelect : deselect_col;
   outlineColor = (is_pinned) ? pinned_col : vec4(fillColor.rgb, 0.0);
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_motion_path_point_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_motion_path_point_vert.glsl
index 7305d00c052..e07f0bf3ee9 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_motion_path_point_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_motion_path_point_vert.glsl
@@ -24,7 +24,7 @@ void main()
   }
 
   if (showKeyFrames) {
-    if ((flag & MOTIONPATH_VERT_KEY) != 0) {
+    if ((flag & MOTIONPATH_VERT_KEY) != 0u) {
       gl_PointSize = float(pointSize + 5);
       finalColor = colorVertexSelect;
       /* Bias more to get these on top of regular points */
diff --git a/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl b/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl
index 794af5b69a5..75caf81f9fe 100644
--- a/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_2D_nodelink_vert.glsl
@@ -16,11 +16,11 @@ void main(void)
   const float end_gradient_threshold = 0.65;
 
 #ifdef USE_INSTANCE
-#  define colStart (colid_doarrow[0] < 3 ? start_color : node_link_data.colors[colid_doarrow[0]])
-#  define colEnd (colid_doarrow[1] < 3 ? end_color : node_link_data.colors[colid_doarrow[1]])
+#  define colStart (colid_doarrow[0] < 3u ? start_color : node_link_data.colors[colid_doarrow[0]])
+#  define colEnd (colid_doarrow[1] < 3u ? end_color : node_link_data.colors[colid_doarrow[1]])
 #  define colShadow node_link_data.colors[colid_doarrow[2]]
-#  define doArrow (colid_doarrow[3] != 0)
-#  define doMuted (domuted[0] != 0)
+#  define doArrow (colid_doarrow[3] != 0u)
+#  define doMuted (domuted[0] != 0u)
 #else
   vec2 P0 = node_link_data.bezierPts[0].xy;
   vec2 P1 = node_link_data.bezierPts[1].xy;
diff --git a/source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl b/source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
index 0b1683e93cd..3690dd8d1d2 100644
--- a/source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_keyframe_shape_frag.glsl
@@ -1,13 +1,13 @@
 
 /* Values in GPU_shader.h. */
-#define GPU_KEYFRAME_SHAPE_DIAMOND (1 << 0)
-#define GPU_KEYFRAME_SHAPE_CIRCLE (1 << 1)
-#define GPU_KEYFRAME_SHAPE_CLIPPED_VERTICAL (1 << 2)
-#define GPU_KEYFRAME_SHAPE_CLIPPED_HORIZONTAL (1 << 3)
-#define GPU_KEYFRAME_SHAPE_INNER_DOT (1 << 4)
-#define GPU_KEYFRAME_SHAPE_ARROW_END_MAX (1 << 8)
-#define GPU_KEYFRAME_SHAPE_ARROW_END_MIN (1 << 9)
-#define GPU_KEYFRAME_SHAPE

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list