Browse Source

improve temporal multi-sample rendering

- don't render all when spinning
- only render all when explicitely requested (new allowMulti arg)
Alexander Rose 3 years ago
parent
commit
a2e5fda646
1 changed files with 5 additions and 5 deletions
  1. 5 5
      src/mol-canvas3d/canvas3d.ts

+ 5 - 5
src/mol-canvas3d/canvas3d.ts

@@ -360,12 +360,12 @@ namespace Canvas3D {
                 helper.handle.scene.update(void 0, true);
                 helper.camera.scene.update(void 0, true);
                 const prevPickDirty = pickHelper.dirty;
-                draw(true);
+                draw(true, true);
                 pickHelper.dirty = prevPickDirty; // marking does not change picking buffers
             }
         }
 
-        function render(force: boolean) {
+        function render(force: boolean, allowMulti: boolean) {
             if (webgl.isContextLost) return false;
 
             let resized = false;
@@ -396,7 +396,7 @@ namespace Canvas3D {
                 }
 
                 if (MultiSamplePass.isEnabled(p.multiSample)) {
-                    if (!cameraChanged) {
+                    if (!cameraChanged && allowMulti && !controls.props.spin) {
                         while (!multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p));
                     } else {
                         multiSampleHelper.render(renderer, cam, scene, helper, true, p.transparentBackground, p);
@@ -416,9 +416,9 @@ namespace Canvas3D {
         let currentTime = 0;
         let drawPaused = false;
 
-        function draw(force?: boolean) {
+        function draw(force?: boolean, allowMulti?: boolean) {
             if (drawPaused) return;
-            if (render(!!force) && notifyDidDraw) {
+            if (render(!!force, !!allowMulti) && notifyDidDraw) {
                 didDraw.next(now() - startTime as now.Timestamp);
             }
         }