From 5f7d99025d766d82ed21ab5165d659474afc8e1c Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Wed, 31 May 2023 12:06:41 +0200 Subject: [PATCH 1/4] add a verbose parameter to disable the warning messages in the console --- .gitignore | 3 +++ package/src/types.ts | 4 +++- package/src/vanilla.ts | 25 ++++++++++++++----------- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 6704566..759b05e 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,6 @@ dist # TernJS port file .tern-port + +# Webstorm project config folder +.idea diff --git a/package/src/types.ts b/package/src/types.ts index 0fb98e4..a698bc9 100644 --- a/package/src/types.ts +++ b/package/src/types.ts @@ -15,6 +15,7 @@ export type iCSMParams = { fragmentShader?: string cacheKey?: () => string patchMap?: iCSMPatchMap + verbose?: boolean uniforms?: { [key: string]: THREE.IUniform } } & (MaterialParams extends undefined ? {} : MaterialParams) @@ -29,7 +30,8 @@ export interface iCSMInternals { instanceID: string type: string isAlreadyExtended: boolean - cacheHash: string + cacheHash: string, + verbose: boolean } export type Uniform = { [key: string]: THREE.IUniform } diff --git a/package/src/vanilla.ts b/package/src/vanilla.ts index 9f6ac42..54cbfd0 100644 --- a/package/src/vanilla.ts +++ b/package/src/vanilla.ts @@ -47,7 +47,7 @@ function isConstructor(f: T | InstanceType): f return true } -function copyObject(target: any, source: any) { +function copyObject(target: any, source: any, verbose = true) { Object.assign(target, source) const proto = Object.getPrototypeOf(source) @@ -63,7 +63,7 @@ function copyObject(target: any, source: any) { .forEach((val) => { // If function exists on target, rename it with "base_" prefix if (typeof target[val[0]] === 'function') { - console.warn(`Function ${val[0]} already exists on CSM, renaming to base_${val[0]}`) + if (verbose) console.warn(`Function ${val[0]} already exists on CSM, renaming to base_${val[0]}`) const baseName = `base_${val[0]}` target[baseName] = val[1].value.bind(target) return @@ -99,14 +99,15 @@ export default class CustomShaderMaterial< private __csm: iCSMInternals constructor({ - baseMaterial, // - fragmentShader, - vertexShader, - uniforms, - patchMap, - cacheKey, - ...opts - }: iCSMParams) { + baseMaterial, // + fragmentShader, + vertexShader, + uniforms, + patchMap, + cacheKey, + verbose, + ...opts + }: iCSMParams) { let base: THREE.Material if (isConstructor(baseMaterial)) { // If base material is a constructor, instantiate it @@ -127,7 +128,7 @@ export default class CustomShaderMaterial< // Copy all properties from base material onto this material // Rename any functions that already exist on this material with "base_" prefix super() - copyObject(this, base) + copyObject(this, base, verbose) // Set up private internals this.__csm = { @@ -140,6 +141,7 @@ export default class CustomShaderMaterial< type: base.type, isAlreadyExtended: !isFunctionEmpty(base.onBeforeCompile), cacheHash: ``, + verbose: verbose === undefined ? true : verbose, } this.uniforms = { @@ -196,6 +198,7 @@ export default class CustomShaderMaterial< fragmentShader: this.__csm.fragmentShader, vertexShader: this.__csm.vertexShader, uniforms: this.uniforms, + verbose: this.__csm.verbose, patchMap: this.__csm.patchMap, cacheKey: this.__csm.cacheKey, } From 61623af3da2a33876bcac41b1e07c79abfdd98b3 Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Thu, 1 Jun 2023 19:08:45 +0200 Subject: [PATCH 2/4] change the verbose parameter for the reverse, silent and preserve the default warning behaviour --- package/src/types.ts | 4 ++-- package/src/vanilla.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package/src/types.ts b/package/src/types.ts index a698bc9..d8f26e4 100644 --- a/package/src/types.ts +++ b/package/src/types.ts @@ -15,7 +15,7 @@ export type iCSMParams = { fragmentShader?: string cacheKey?: () => string patchMap?: iCSMPatchMap - verbose?: boolean + silent?: boolean uniforms?: { [key: string]: THREE.IUniform } } & (MaterialParams extends undefined ? {} : MaterialParams) @@ -31,7 +31,7 @@ export interface iCSMInternals { type: string isAlreadyExtended: boolean cacheHash: string, - verbose: boolean + silent?: boolean } export type Uniform = { [key: string]: THREE.IUniform } diff --git a/package/src/vanilla.ts b/package/src/vanilla.ts index 54cbfd0..dccd209 100644 --- a/package/src/vanilla.ts +++ b/package/src/vanilla.ts @@ -47,7 +47,7 @@ function isConstructor(f: T | InstanceType): f return true } -function copyObject(target: any, source: any, verbose = true) { +function copyObject(target: any, source: any, silent = false) { Object.assign(target, source) const proto = Object.getPrototypeOf(source) @@ -63,7 +63,7 @@ function copyObject(target: any, source: any, verbose = true) { .forEach((val) => { // If function exists on target, rename it with "base_" prefix if (typeof target[val[0]] === 'function') { - if (verbose) console.warn(`Function ${val[0]} already exists on CSM, renaming to base_${val[0]}`) + if (!silent) console.warn(`Function ${val[0]} already exists on CSM, renaming to base_${val[0]}`) const baseName = `base_${val[0]}` target[baseName] = val[1].value.bind(target) return @@ -105,7 +105,7 @@ export default class CustomShaderMaterial< uniforms, patchMap, cacheKey, - verbose, + silent, ...opts }: iCSMParams) { let base: THREE.Material @@ -128,7 +128,7 @@ export default class CustomShaderMaterial< // Copy all properties from base material onto this material // Rename any functions that already exist on this material with "base_" prefix super() - copyObject(this, base, verbose) + copyObject(this, base, silent) // Set up private internals this.__csm = { @@ -141,7 +141,7 @@ export default class CustomShaderMaterial< type: base.type, isAlreadyExtended: !isFunctionEmpty(base.onBeforeCompile), cacheHash: ``, - verbose: verbose === undefined ? true : verbose, + silent: silent, } this.uniforms = { @@ -198,7 +198,7 @@ export default class CustomShaderMaterial< fragmentShader: this.__csm.fragmentShader, vertexShader: this.__csm.vertexShader, uniforms: this.uniforms, - verbose: this.__csm.verbose, + silent: this.__csm.silent, patchMap: this.__csm.patchMap, cacheKey: this.__csm.cacheKey, } From e6cce065f9e42229a7a30230cc71d98a2454eff8 Mon Sep 17 00:00:00 2001 From: Adam NAILI Date: Thu, 1 Jun 2023 19:19:53 +0200 Subject: [PATCH 3/4] add some documentation on the parameter 'silent' in the readme --- package/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package/README.md b/package/README.md index 4b1aa43..d46bae9 100644 --- a/package/README.md +++ b/package/README.md @@ -45,6 +45,7 @@ function Box() { baseMaterial: THREE.MeshPhysicalMaterial, vertexShader: /* glsl */ ` ... `, fragmentShader: /* glsl */ ` ... `, + silent: true, // Disables the default warning if true uniforms: { uTime: { value: 0, @@ -83,6 +84,8 @@ function Cube() { baseMaterial={THREE.MeshPhysicalMaterial} vertexShader={/* glsl */ ` ... `} fragmentShader={/* glsl */ ` ... `} + {/*silent parameter to true disables the default warning if needed*/} + silent uniforms={{ uTime: { value: 0, From 29c22322291d4d14402d6db856cacde1d084368c Mon Sep 17 00:00:00 2001 From: Faraz Shaikh Date: Mon, 19 Jun 2023 22:17:58 +0400 Subject: [PATCH 4/4] lint; Fix Env map URLs --- examples/debug/src/App.tsx | 2 +- examples/instances/src/App.js | 2 +- examples/points/src/App.js | 2 +- examples/waves/src/App.tsx | 2 +- package/src/keywords.ts | 2 +- package/src/types.ts | 2 +- package/src/vanilla.ts | 18 +++++++++--------- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/examples/debug/src/App.tsx b/examples/debug/src/App.tsx index 54ccce2..ca73cb4 100644 --- a/examples/debug/src/App.tsx +++ b/examples/debug/src/App.tsx @@ -31,7 +31,7 @@ export default function App() { - + {/* */} diff --git a/examples/instances/src/App.js b/examples/instances/src/App.js index 566976b..3a918e9 100644 --- a/examples/instances/src/App.js +++ b/examples/instances/src/App.js @@ -115,7 +115,7 @@ function App() { }} > - + diff --git a/examples/points/src/App.js b/examples/points/src/App.js index dd258cf..4f9912f 100644 --- a/examples/points/src/App.js +++ b/examples/points/src/App.js @@ -95,7 +95,7 @@ function App() { }} > - + diff --git a/examples/waves/src/App.tsx b/examples/waves/src/App.tsx index b18be14..6b93d0c 100644 --- a/examples/waves/src/App.tsx +++ b/examples/waves/src/App.tsx @@ -60,7 +60,7 @@ export default function App() { {['MeshPhysicalMaterial', 'MeshStanderedMaterial'].includes(Base.name) ? ( - + ) : ( )} diff --git a/package/src/keywords.ts b/package/src/keywords.ts index 5385dab..2332991 100644 --- a/package/src/keywords.ts +++ b/package/src/keywords.ts @@ -11,5 +11,5 @@ export default { metalness: 'csm_Metalness', // Metalness emissive: 'csm_Emissive', // Emissive ao: 'csm_AO', // AO - bump: 'csm_Bump' // Bump + bump: 'csm_Bump', // Bump } diff --git a/package/src/types.ts b/package/src/types.ts index d8f26e4..15ae60b 100644 --- a/package/src/types.ts +++ b/package/src/types.ts @@ -30,7 +30,7 @@ export interface iCSMInternals { instanceID: string type: string isAlreadyExtended: boolean - cacheHash: string, + cacheHash: string silent?: boolean } diff --git a/package/src/vanilla.ts b/package/src/vanilla.ts index dccd209..ff32e72 100644 --- a/package/src/vanilla.ts +++ b/package/src/vanilla.ts @@ -99,15 +99,15 @@ export default class CustomShaderMaterial< private __csm: iCSMInternals constructor({ - baseMaterial, // - fragmentShader, - vertexShader, - uniforms, - patchMap, - cacheKey, - silent, - ...opts - }: iCSMParams) { + baseMaterial, // + fragmentShader, + vertexShader, + uniforms, + patchMap, + cacheKey, + silent, + ...opts + }: iCSMParams) { let base: THREE.Material if (isConstructor(baseMaterial)) { // If base material is a constructor, instantiate it