EEVEE: Intel Shader Compiler Bug
authorJeroen Bakker <j.bakker@atmind.nl>
Thu, 16 May 2019 11:35:02 +0000 (13:35 +0200)
committerJeroen Bakker <j.bakker@atmind.nl>
Thu, 16 May 2019 11:35:02 +0000 (13:35 +0200)
When using Intel GPU EEVEE did not display anything. This was due to an
internal shader compilation bug inside the intel drivers. We had fixed
this for other vertex shaders. The same change we have to apply to other
vert shaders that want to limit the need of Matrix multiplications.

source/blender/draw/engines/eevee/shaders/prepass_vert.glsl
source/blender/draw/engines/eevee/shaders/shadow_vert.glsl

index fe274f5..d133889 100644 (file)
@@ -13,6 +13,13 @@ in vec3 pos;
 
 void main()
 {
+#ifdef GPU_INTEL
+  /* Due to some shader compiler bug, we somewhat
+   * need to access gl_VertexID to make it work. even
+   * if it's actually dead code. */
+  gl_Position.x = float(gl_VertexID);
+#endif
+
 #ifdef HAIR_SHADER
   float time, thick_time, thickness;
   vec3 worldPosition, tan, binor;
index 7dd9af3..6b06aab 100644 (file)
@@ -11,6 +11,13 @@ out vec3 viewNormal;
 
 void main()
 {
+#ifdef GPU_INTEL
+  /* Due to some shader compiler bug, we somewhat
+   * need to access gl_VertexID to make it work. even
+   * if it's actually dead code. */
+  gl_Position.x = float(gl_VertexID);
+#endif
+
   vec3 world_pos = point_object_to_world(pos);
   gl_Position = point_world_to_ndc(world_pos);
 #ifdef MESH_SHADER