diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index 4206ac7a82b6b2f4a766d8205f22fc27e3372d2b..743e6bb423b392c2ccd3778b6a8552ad783a5785 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -404,11 +404,8 @@ namespace Canvas3D { const ctx = { renderer, camera: cam, scene, helper }; if (MultiSamplePass.isEnabled(p.multiSample)) { - if (!cameraChanged && allowMulti && !controls.props.spin) { - while (!multiSampleHelper.render(ctx, p, true)); - } else { - multiSampleHelper.render(ctx, p, true); - } + const forceOn = !cameraChanged && allowMulti && !controls.props.spin; + multiSampleHelper.render(ctx, p, true, forceOn); } else { passes.draw.render(ctx, p, true); } diff --git a/src/mol-canvas3d/passes/multi-sample.ts b/src/mol-canvas3d/passes/multi-sample.ts index 965015c2d36eb2f7211094ddcb668908231e1a55..dba08fb53c10aa61c3d792bbb743ed2b7197747d 100644 --- a/src/mol-canvas3d/passes/multi-sample.ts +++ b/src/mol-canvas3d/passes/multi-sample.ts @@ -105,12 +105,12 @@ export class MultiSamplePass { } } - render(sampleIndex: number, ctx: RenderContext, props: Props, toDrawingBuffer: boolean) { - if (props.multiSample.mode === 'temporal') { + render(sampleIndex: number, ctx: RenderContext, props: Props, toDrawingBuffer: boolean, forceOn: boolean) { + if (props.multiSample.mode === 'temporal' && !forceOn) { return this.renderTemporalMultiSample(sampleIndex, ctx, props, toDrawingBuffer); } else { this.renderMultiSample(ctx, toDrawingBuffer, props); - return sampleIndex; + return -2; } } @@ -335,8 +335,8 @@ export class MultiSampleHelper { } /** Return `true` while more samples are needed */ - render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean) { - this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, ctx, props, toDrawingBuffer); + render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean, forceOn?: boolean) { + this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, ctx, props, toDrawingBuffer, !!forceOn); return this.sampleIndex < 0; }