From b563c773c10a5c5e1f9175c9e086c6f7e2afffa6 Mon Sep 17 00:00:00 2001
From: Alexander Rose <alexander.rose@weirdbyte.de>
Date: Sat, 16 Jul 2022 13:01:33 -0700
Subject: [PATCH] avoid using flat qualifier in shaders

- causing slowdown
---
 CHANGELOG.md                                        | 1 +
 src/mol-gl/shader/chunks/common-frag-params.glsl.ts | 8 ++++----
 src/mol-gl/shader/chunks/common-vert-params.glsl.ts | 8 ++++----
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0d9bc61ae..8e61db992 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,7 @@ Note that since we don't clearly distinguish between a public and private interf
 - Bind shared textures only once per pass, not for each render item
 - Fix missing 'material' annotation for some uniforms, causing unnecessary uniform updates
 - Remove use of ``isnan`` in impostor shaders, not needed and causing slowdown
+- Avoid using ``flat`` qualifier in shaders, causing slowdown
 
 ## [v3.11.0] - 2022-07-04
 
diff --git a/src/mol-gl/shader/chunks/common-frag-params.glsl.ts b/src/mol-gl/shader/chunks/common-frag-params.glsl.ts
index 3f49073d4..ed80baa09 100644
--- a/src/mol-gl/shader/chunks/common-frag-params.glsl.ts
+++ b/src/mol-gl/shader/chunks/common-frag-params.glsl.ts
@@ -14,10 +14,10 @@ uniform int uMarkingType;
     uniform vec3 uClipObjectScale[dClipObjectCount];
 
     #if defined(dClipping)
-        #if __VERSION__ == 100
+        #if __VERSION__ == 100 || defined(dClippingType_instance)
             varying float vClipping;
         #else
-            flat in float vClipping;
+            flat in float vClipping; // avoid if possible, causes slowdown, ASR
         #endif
     #endif
 #endif
@@ -32,10 +32,10 @@ uniform int uMarkingType;
 
 #if defined(dNeedsMarker)
     uniform float uMarker;
-    #if __VERSION__ == 100
+    #if __VERSION__ == 100 || defined(dMarkerType_instance)
         varying float vMarker;
     #else
-        flat in float vMarker;
+        flat in float vMarker; // avoid if possible, causes slowdown, ASR
     #endif
 #endif
 
diff --git a/src/mol-gl/shader/chunks/common-vert-params.glsl.ts b/src/mol-gl/shader/chunks/common-vert-params.glsl.ts
index a0175b56a..e93faa764 100644
--- a/src/mol-gl/shader/chunks/common-vert-params.glsl.ts
+++ b/src/mol-gl/shader/chunks/common-vert-params.glsl.ts
@@ -21,10 +21,10 @@ uniform int uPickType;
     #if defined(dClipping)
         uniform vec2 uClippingTexDim;
         uniform sampler2D tClipping;
-        #if __VERSION__ == 100
+        #if __VERSION__ == 100 || defined(dClippingType_instance)
             varying float vClipping;
         #else
-            flat out float vClipping;
+            flat out float vClipping; // avoid if possible, causes slowdown, ASR
         #endif
     #endif
 #endif
@@ -33,10 +33,10 @@ uniform int uPickType;
     uniform float uMarker;
     uniform vec2 uMarkerTexDim;
     uniform sampler2D tMarker;
-    #if __VERSION__ == 100
+    #if __VERSION__ == 100 || defined(dMarkerType_instance)
         varying float vMarker;
     #else
-        flat out float vMarker;
+        flat out float vMarker; // avoid if possible, causes slowdown, ASR
     #endif
 #endif
 
-- 
GitLab