[Bf-blender-cvs] [d51dcaf1041] blender-v2.82-release: Fix T73116 Crash on startup caused by implicit conversion in glsl
Clément Foucault
noreply at git.blender.org
Tue Jan 14 17:26:44 CET 2020
Commit: d51dcaf1041d2bda093b1a6bc688fd4237da0e61
Author: Clément Foucault
Date: Tue Jan 14 17:26:35 2020 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rBd51dcaf1041d2bda093b1a6bc688fd4237da0e61
Fix T73116 Crash on startup caused by implicit conversion in glsl
Old drivers does not support this. Promote everything to uint.
===================================================================
M source/blender/draw/engines/overlay/shaders/outline_prepass_frag.glsl
M source/blender/draw/engines/overlay/shaders/outline_prepass_geom.glsl
M source/blender/draw/engines/overlay/shaders/outline_prepass_vert.glsl
===================================================================
diff --git a/source/blender/draw/engines/overlay/shaders/outline_prepass_frag.glsl b/source/blender/draw/engines/overlay/shaders/outline_prepass_frag.glsl
index 8ef89b89eb3..f6e3724eb51 100644
--- a/source/blender/draw/engines/overlay/shaders/outline_prepass_frag.glsl
+++ b/source/blender/draw/engines/overlay/shaders/outline_prepass_frag.glsl
@@ -1,10 +1,10 @@
-flat in int objectId;
+flat in uint objectId;
/* using uint because 16bit uint can contain more ids than int. */
out uint outId;
void main()
{
- outId = uint(objectId);
+ outId = objectId;
}
diff --git a/source/blender/draw/engines/overlay/shaders/outline_prepass_geom.glsl b/source/blender/draw/engines/overlay/shaders/outline_prepass_geom.glsl
index b32913dcd60..282799e1660 100644
--- a/source/blender/draw/engines/overlay/shaders/outline_prepass_geom.glsl
+++ b/source/blender/draw/engines/overlay/shaders/outline_prepass_geom.glsl
@@ -3,9 +3,9 @@ layout(lines_adjacency) in;
layout(line_strip, max_vertices = 2) out;
in vec3 vPos[];
-in int objectId_g[];
+in uint objectId_g[];
-flat out int objectId;
+flat out uint objectId;
void vert_from_gl_in(int v)
{
diff --git a/source/blender/draw/engines/overlay/shaders/outline_prepass_vert.glsl b/source/blender/draw/engines/overlay/shaders/outline_prepass_vert.glsl
index 8b9854b2d3e..984e55b0c46 100644
--- a/source/blender/draw/engines/overlay/shaders/outline_prepass_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/outline_prepass_vert.glsl
@@ -5,14 +5,14 @@ in vec3 pos;
#ifdef USE_GEOM
out vec3 vPos;
-out int objectId_g;
+out uint objectId_g;
# define objectId objectId_g
#else
-flat out int objectId;
+flat out uint objectId;
#endif
-int outline_colorid_get(void)
+uint outline_colorid_get(void)
{
int flag = int(abs(ObjectInfo.w));
bool is_from_dupli = (flag & DRW_BASE_FROM_DUPLI) != 0;
@@ -20,24 +20,24 @@ int outline_colorid_get(void)
if (is_from_dupli) {
if (isTransform) {
- return 0; /* colorTransform */
+ return 0u; /* colorTransform */
}
else {
- return 2; /* colorDupliSelect */
+ return 2u; /* colorDupliSelect */
}
}
if (isTransform) {
- return 0; /* colorTransform */
+ return 0u; /* colorTransform */
}
else if (is_active) {
- return 3; /* colorActive */
+ return 3u; /* colorActive */
}
else {
- return 1; /* colorSelect */
+ return 1u; /* colorSelect */
}
- return 0;
+ return 0u;
}
/* Replace top 2 bits (of the 16bit output) by outlineId.
@@ -56,13 +56,13 @@ void main()
gl_Position.z -= 1e-3;
/* ID 0 is nothing (background) */
- objectId = resource_handle + 1;
+ objectId = uint(resource_handle + 1);
/* Should be 2 bits only [0..3]. */
- int outline_id = outline_colorid_get();
+ uint outline_id = outline_colorid_get();
/* Combine for 16bit uint target. */
- objectId = (outline_id << 14) | ((objectId << SHIFT) >> SHIFT);
+ objectId = (outline_id << 14u) | ((objectId << SHIFT) >> SHIFT);
#ifdef USE_WORLD_CLIP_PLANES
world_clip_planes_calc_clip_distance(world_pos);
More information about the Bf-blender-cvs
mailing list