Skip to content
Snippets Groups Projects
Commit 4c93f01c authored by Alexander Rose's avatar Alexander Rose
Browse files

improve temporal multi-smaple handling

- add forceOn arg
- instead of letting temporal converge do full sampling
- saves one geometry pass
parent 0a18412d
No related branches found
No related tags found
No related merge requests found
...@@ -404,11 +404,8 @@ namespace Canvas3D { ...@@ -404,11 +404,8 @@ namespace Canvas3D {
const ctx = { renderer, camera: cam, scene, helper }; const ctx = { renderer, camera: cam, scene, helper };
if (MultiSamplePass.isEnabled(p.multiSample)) { if (MultiSamplePass.isEnabled(p.multiSample)) {
if (!cameraChanged && allowMulti && !controls.props.spin) { const forceOn = !cameraChanged && allowMulti && !controls.props.spin;
while (!multiSampleHelper.render(ctx, p, true)); multiSampleHelper.render(ctx, p, true, forceOn);
} else {
multiSampleHelper.render(ctx, p, true);
}
} else { } else {
passes.draw.render(ctx, p, true); passes.draw.render(ctx, p, true);
} }
......
...@@ -105,12 +105,12 @@ export class MultiSamplePass { ...@@ -105,12 +105,12 @@ export class MultiSamplePass {
} }
} }
render(sampleIndex: number, ctx: RenderContext, props: Props, toDrawingBuffer: boolean) { render(sampleIndex: number, ctx: RenderContext, props: Props, toDrawingBuffer: boolean, forceOn: boolean) {
if (props.multiSample.mode === 'temporal') { if (props.multiSample.mode === 'temporal' && !forceOn) {
return this.renderTemporalMultiSample(sampleIndex, ctx, props, toDrawingBuffer); return this.renderTemporalMultiSample(sampleIndex, ctx, props, toDrawingBuffer);
} else { } else {
this.renderMultiSample(ctx, toDrawingBuffer, props); this.renderMultiSample(ctx, toDrawingBuffer, props);
return sampleIndex; return -2;
} }
} }
...@@ -335,8 +335,8 @@ export class MultiSampleHelper { ...@@ -335,8 +335,8 @@ export class MultiSampleHelper {
} }
/** Return `true` while more samples are needed */ /** Return `true` while more samples are needed */
render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean) { render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean, forceOn?: boolean) {
this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, ctx, props, toDrawingBuffer); this.sampleIndex = this.multiSamplePass.render(this.sampleIndex, ctx, props, toDrawingBuffer, !!forceOn);
return this.sampleIndex < 0; return this.sampleIndex < 0;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment