diff --git a/CHANGELOG.md b/CHANGELOG.md index a0b3c1390c5c8aa6eeb43ba74a3e40a66a5bcb10..b8b7ff59c381a6a5253ae431b9ec5e47b4a58416 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,7 @@ Note that since we don't clearly distinguish between a public and private interf - Fix and improve ``canRemap`` handling in ``IntraUnitBonds`` - Reuse occlusion for secondary passes during multi-sampling - Check if marking passes are needed before doing them -- Add ``scaleFactor`` parameter to adjust resolution of occlusion calculation +- Add ``resolutionScale`` parameter to allow trading quality of occlusion for performance ## [v3.2.0] - 2022-02-17 diff --git a/src/apps/docking-viewer/viewport.tsx b/src/apps/docking-viewer/viewport.tsx index b988b49e3e3dcf1ae7c89fec944e04bd445dfcfa..78e8412b5ef4dc70f035bf8a3bb03c2f6a379a4e 100644 --- a/src/apps/docking-viewer/viewport.tsx +++ b/src/apps/docking-viewer/viewport.tsx @@ -48,7 +48,7 @@ function occlusionStyle(plugin: PluginContext) { blurKernelSize: 15, radius: 5, samples: 32, - scaleFactor: 1 + resolutionScale: 1 } }, outline: { name: 'on', params: { scale: 1.0, diff --git a/src/examples/lighting/index.ts b/src/examples/lighting/index.ts index 97b2db364e45c6e590f48684f7749207bc674057..b81118dd72a74befa74870f5beb83f810d9efca9 100644 --- a/src/examples/lighting/index.ts +++ b/src/examples/lighting/index.ts @@ -24,7 +24,7 @@ const Canvas3DPresets = { illustrative: { canvas3d: <Preset>{ postprocessing: { - occlusion: { name: 'on', params: { samples: 32, radius: 6, bias: 1.4, blurKernelSize: 15, scaleFactor: 1 } }, + occlusion: { name: 'on', params: { samples: 32, radius: 6, bias: 1.4, blurKernelSize: 15, resolutionScale: 1 } }, outline: { name: 'on', params: { scale: 1, threshold: 0.33, color: Color(0x000000) } } }, renderer: { @@ -36,7 +36,7 @@ const Canvas3DPresets = { occlusion: { canvas3d: <Preset>{ postprocessing: { - occlusion: { name: 'on', params: { samples: 32, radius: 6, bias: 1.4, blurKernelSize: 15, scaleFactor: 1 } }, + occlusion: { name: 'on', params: { samples: 32, radius: 6, bias: 1.4, blurKernelSize: 15, resolutionScale: 1 } }, outline: { name: 'off', params: {} } }, renderer: { diff --git a/src/mol-canvas3d/passes/postprocessing.ts b/src/mol-canvas3d/passes/postprocessing.ts index 2b81018aa0fd8d08d647577a64024c705f368ebe..bf8c53905ee778e46c17fd2e8fa909f3f974e7c2 100644 --- a/src/mol-canvas3d/passes/postprocessing.ts +++ b/src/mol-canvas3d/passes/postprocessing.ts @@ -249,7 +249,7 @@ export const PostprocessingParams = { radius: PD.Numeric(5, { min: 0, max: 10, step: 0.1 }, { description: 'Final occlusion radius is 2^x' }), bias: PD.Numeric(0.8, { min: 0, max: 3, step: 0.1 }), blurKernelSize: PD.Numeric(15, { min: 1, max: 25, step: 2 }), - scaleFactor: PD.Numeric(1, { min: 0.1, max: 1, step: 0.05 }, { description: 'Adjust resolution of occlusion calculation' }), + resolutionScale: PD.Numeric(1, { min: 0.1, max: 1, step: 0.05 }, { description: 'Adjust resolution of occlusion calculation' }), }), off: PD.Group({}) }, { cycle: true, description: 'Darken occluded crevices with the ambient occlusion effect' }), @@ -446,10 +446,10 @@ export class PostprocessingPass { ValueCell.updateIfChanged(this.ssaoBlurSecondPassRenderable.values.dOcclusionKernelSize, this.blurKernelSize); } - if (this.downsampleFactor !== props.occlusion.params.scaleFactor) { + if (this.downsampleFactor !== props.occlusion.params.resolutionScale) { needsUpdateSsao = true; - this.downsampleFactor = props.occlusion.params.scaleFactor; + this.downsampleFactor = props.occlusion.params.resolutionScale; this.ssaoScale = this.calcSsaoScale(); const sw = Math.floor(w * this.ssaoScale); diff --git a/src/mol-plugin-ui/structure/quick-styles.tsx b/src/mol-plugin-ui/structure/quick-styles.tsx index 1449eea3e44c7cabb63573643aa8bcbbb2d1eba0..a0c535acfd2b744d2748585c7a8db80febf23cde 100644 --- a/src/mol-plugin-ui/structure/quick-styles.tsx +++ b/src/mol-plugin-ui/structure/quick-styles.tsx @@ -60,7 +60,7 @@ export class QuickStyles extends PurePluginUIComponent { }, occlusion: { name: 'on', - params: { bias: 0.8, blurKernelSize: 15, radius: 5, samples: 32, scaleFactor: 1 } + params: { bias: 0.8, blurKernelSize: 15, radius: 5, samples: 32, resolutionScale: 1 } }, } }); @@ -84,7 +84,7 @@ export class QuickStyles extends PurePluginUIComponent { name: 'on', params: pp.occlusion.name === 'on' ? pp.occlusion.params - : { bias: 0.8, blurKernelSize: 15, radius: 5, samples: 32, scaleFactor: 1 } + : { bias: 0.8, blurKernelSize: 15, radius: 5, samples: 32, resolutionScale: 1 } }, } }); diff --git a/src/mol-plugin/util/viewport-screenshot.ts b/src/mol-plugin/util/viewport-screenshot.ts index 722c605fdf5cd2fb93fe790fefe0e2d2721b887c..261ae3708d95a5c428b162b35ff69242d306c30c 100644 --- a/src/mol-plugin/util/viewport-screenshot.ts +++ b/src/mol-plugin/util/viewport-screenshot.ts @@ -119,7 +119,7 @@ class ViewportScreenshotHelper extends PluginComponent { postprocessing: { ...c.props.postprocessing, occlusion: aoProps.name === 'on' - ? { name: 'on', params: { ...aoProps.params, samples: 128, scaleFactor: 1 } } + ? { name: 'on', params: { ...aoProps.params, samples: 128, resolutionScale: 1 } } : aoProps }, marking: { ...c.props.marking } @@ -143,7 +143,7 @@ class ViewportScreenshotHelper extends PluginComponent { postprocessing: { ...c.props.postprocessing, occlusion: aoProps.name === 'on' - ? { name: 'on', params: { ...aoProps.params, samples: 128, scaleFactor: 1 } } + ? { name: 'on', params: { ...aoProps.params, samples: 128, resolutionScale: 1 } } : aoProps }, marking: { ...c.props.marking }