diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d23e5997e09a2f853811be64a12a0c449e25482..c0607d054e17e2ef030315724ed9d3b935c889dd 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 5366aaae108f4f98d631edb538c53b9b8151cd45..db145d3edcf2eeff50f53b50d2eb07134fd8e5c4 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 533235e9cdcb45b3bf36d94f95916785c6ffdd21..2b449fb262ed3a865e18634dc6b58ad338f28c72 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 a385e1922c585c3690e5612ed421129319209716..021ebba99d6fffad2d420da91de73128970c9ea1 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 c3da8f71d52720e5123d31f40419a0506946e241..5b04ba32bdc7b444443f4f92f5b4c10067d0d19d 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 6880287cbf44de7927555000c09b8a04b38487cf..116d56bdf57af4940b00f94b50ac7e8bf5062a3c 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 60e316d81fefdb9d947c5dd961c451708b616a14..73c0e750754cb7617e34d23d32b2c9c6bf261012 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 8f6e145e659b8197c8e2ae17069546afb4b0e6c9..364d07c5b07017aa419eefb668e8ae4601942686 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 e997a9bb7c5c0e390d77f6e80d77d730c376533a..48cd5ce006a3140a4d1b3d982c59ce562aac1c66 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