From d6cfd23ae5cb397f16a5079ccbfa9a5f3af282bb Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Sat, 16 Jul 2022 12:31:38 -0700 Subject: [PATCH] fix missing material annotation for some uniforms - causing unnecessary uniform updates --- CHANGELOG.md | 1 + src/mol-gl/renderable/cylinders.ts | 6 +++--- src/mol-gl/renderable/direct-volume.ts | 4 ++-- src/mol-gl/renderable/lines.ts | 4 ++-- src/mol-gl/renderable/mesh.ts | 6 +++--- src/mol-gl/renderable/schema.ts | 12 ++++++------ src/mol-gl/renderable/spheres.ts | 6 +++--- src/mol-gl/renderable/text.ts | 16 ++++++++-------- src/mol-gl/renderable/texture-mesh.ts | 6 +++--- 9 files changed, 31 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d23e5997..c0607d054 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Note that since we don't clearly distinguish between a public and private interf ## [Unreleased] - 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 ## [v3.11.0] - 2022-07-04 diff --git a/src/mol-gl/renderable/cylinders.ts b/src/mol-gl/renderable/cylinders.ts index 5366aaae1..db145d3ed 100644 --- a/src/mol-gl/renderable/cylinders.ts +++ b/src/mol-gl/renderable/cylinders.ts @@ -23,12 +23,12 @@ export const CylindersSchema = { elements: ElementsSpec('uint32'), padding: ValueSpec('number'), - uDoubleSided: UniformSpec('b'), + uDoubleSided: UniformSpec('b', 'material'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), - uBumpFrequency: UniformSpec('f'), - uBumpAmplitude: UniformSpec('f'), + uBumpFrequency: UniformSpec('f', 'material'), + uBumpAmplitude: UniformSpec('f', 'material'), }; export type CylindersSchema = typeof CylindersSchema export type CylindersValues = Values<CylindersSchema> diff --git a/src/mol-gl/renderable/direct-volume.ts b/src/mol-gl/renderable/direct-volume.ts index 533235e9c..2b449fb26 100644 --- a/src/mol-gl/renderable/direct-volume.ts +++ b/src/mol-gl/renderable/direct-volume.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ @@ -26,7 +26,7 @@ export const DirectVolumeSchema = { uTransform: UniformSpec('m4'), uGridDim: UniformSpec('v3'), tTransferTex: TextureSpec('image-uint8', 'alpha', 'ubyte', 'linear'), - uTransferScale: UniformSpec('f'), + uTransferScale: UniformSpec('f', 'material'), dGridTexType: DefineSpec('string', ['2d', '3d']), uGridTexDim: UniformSpec('v3'), diff --git a/src/mol-gl/renderable/lines.ts b/src/mol-gl/renderable/lines.ts index a385e1922..021ebba99 100644 --- a/src/mol-gl/renderable/lines.ts +++ b/src/mol-gl/renderable/lines.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ @@ -20,7 +20,7 @@ export const LinesSchema = { aEnd: AttributeSpec('float32', 3, 0), elements: ElementsSpec('uint32'), dLineSizeAttenuation: DefineSpec('boolean'), - uDoubleSided: UniformSpec('b'), + uDoubleSided: UniformSpec('b', 'material'), dFlipSided: DefineSpec('boolean'), }; export type LinesSchema = typeof LinesSchema diff --git a/src/mol-gl/renderable/mesh.ts b/src/mol-gl/renderable/mesh.ts index c3da8f71d..5b04ba32b 100644 --- a/src/mol-gl/renderable/mesh.ts +++ b/src/mol-gl/renderable/mesh.ts @@ -18,13 +18,13 @@ export const MeshSchema = { aNormal: AttributeSpec('float32', 3, 0), elements: ElementsSpec('uint32'), dFlatShaded: DefineSpec('boolean'), - uDoubleSided: UniformSpec('b'), + uDoubleSided: UniformSpec('b', 'material'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), - uBumpFrequency: UniformSpec('f'), - uBumpAmplitude: UniformSpec('f'), + uBumpFrequency: UniformSpec('f', 'material'), + uBumpAmplitude: UniformSpec('f', 'material'), meta: ValueSpec('unknown') } as const; export type MeshSchema = typeof MeshSchema diff --git a/src/mol-gl/renderable/schema.ts b/src/mol-gl/renderable/schema.ts index 6880287cb..116d56bdf 100644 --- a/src/mol-gl/renderable/schema.ts +++ b/src/mol-gl/renderable/schema.ts @@ -194,7 +194,7 @@ export const SizeSchema = { uSizeTexDim: UniformSpec('v2'), tSize: TextureSpec('image-uint8', 'rgb', 'ubyte', 'nearest'), dSizeType: DefineSpec('string', ['uniform', 'attribute', 'instance', 'group', 'groupInstance']), - uSizeFactor: UniformSpec('f'), + uSizeFactor: UniformSpec('f', 'material'), } as const; export type SizeSchema = typeof SizeSchema export type SizeValues = Values<SizeSchema> @@ -273,11 +273,11 @@ export const BaseSchema = { dClipObjectCount: DefineSpec('number'), dClipVariant: DefineSpec('string', ['instance', 'pixel']), - uClipObjectType: UniformSpec('i[]'), - uClipObjectInvert: UniformSpec('b[]'), - uClipObjectPosition: UniformSpec('v3[]'), - uClipObjectRotation: UniformSpec('v4[]'), - uClipObjectScale: UniformSpec('v3[]'), + uClipObjectType: UniformSpec('i[]', 'material'), + uClipObjectInvert: UniformSpec('b[]', 'material'), + uClipObjectPosition: UniformSpec('v3[]', 'material'), + uClipObjectRotation: UniformSpec('v4[]', 'material'), + uClipObjectScale: UniformSpec('v3[]', 'material'), aInstance: AttributeSpec('float32', 1, 1), /** diff --git a/src/mol-gl/renderable/spheres.ts b/src/mol-gl/renderable/spheres.ts index 60e316d81..73c0e7507 100644 --- a/src/mol-gl/renderable/spheres.ts +++ b/src/mol-gl/renderable/spheres.ts @@ -20,12 +20,12 @@ export const SpheresSchema = { elements: ElementsSpec('uint32'), padding: ValueSpec('number'), - uDoubleSided: UniformSpec('b'), + uDoubleSided: UniformSpec('b', 'material'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), - uBumpFrequency: UniformSpec('f'), - uBumpAmplitude: UniformSpec('f'), + uBumpFrequency: UniformSpec('f', 'material'), + uBumpAmplitude: UniformSpec('f', 'material'), }; export type SpheresSchema = typeof SpheresSchema export type SpheresValues = Values<SpheresSchema> diff --git a/src/mol-gl/renderable/text.ts b/src/mol-gl/renderable/text.ts index 8f6e145e6..364d07c5b 100644 --- a/src/mol-gl/renderable/text.ts +++ b/src/mol-gl/renderable/text.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2019 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2019-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ @@ -24,13 +24,13 @@ export const TextSchema = { tFont: TextureSpec('image-uint8', 'alpha', 'ubyte', 'linear'), padding: ValueSpec('number'), - uBorderWidth: UniformSpec('f'), - uBorderColor: UniformSpec('v3'), - uOffsetX: UniformSpec('f'), - uOffsetY: UniformSpec('f'), - uOffsetZ: UniformSpec('f'), - uBackgroundColor: UniformSpec('v3'), - uBackgroundOpacity: UniformSpec('f'), + uBorderWidth: UniformSpec('f', 'material'), + uBorderColor: UniformSpec('v3', 'material'), + uOffsetX: UniformSpec('f', 'material'), + uOffsetY: UniformSpec('f', 'material'), + uOffsetZ: UniformSpec('f', 'material'), + uBackgroundColor: UniformSpec('v3', 'material'), + uBackgroundOpacity: UniformSpec('f', 'material'), }; export type TextSchema = typeof TextSchema export type TextValues = Values<TextSchema> diff --git a/src/mol-gl/renderable/texture-mesh.ts b/src/mol-gl/renderable/texture-mesh.ts index e997a9bb7..48cd5ce00 100644 --- a/src/mol-gl/renderable/texture-mesh.ts +++ b/src/mol-gl/renderable/texture-mesh.ts @@ -19,13 +19,13 @@ export const TextureMeshSchema = { tNormal: TextureSpec('texture', 'rgb', 'float', 'nearest'), dFlatShaded: DefineSpec('boolean'), - uDoubleSided: UniformSpec('b'), + uDoubleSided: UniformSpec('b', 'material'), dFlipSided: DefineSpec('boolean'), dIgnoreLight: DefineSpec('boolean'), dXrayShaded: DefineSpec('boolean'), dTransparentBackfaces: DefineSpec('string', ['off', 'on', 'opaque']), - uBumpFrequency: UniformSpec('f'), - uBumpAmplitude: UniformSpec('f'), + uBumpFrequency: UniformSpec('f', 'material'), + uBumpAmplitude: UniformSpec('f', 'material'), meta: ValueSpec('unknown') }; export type TextureMeshSchema = typeof TextureMeshSchema -- GitLab