UNPKG

@lightningjs/renderer

Version:
58 lines 2.36 kB
export class DynamicShaderController { shader; resolvedProps; props; type; constructor(shader, props, shManager) { this.shader = shader; this.type = 'DynamicShader'; this.resolvedProps = props; const effectConstructors = shManager.getRegisteredEffects(); const definedProps = {}; const effects = props.effects; const effectsLength = effects.length; for (let i = 0; i < effectsLength; i++) { const { name: effectName, props: effectProps, type: effectType, } = effects[i]; if (effectName === undefined) { continue; } const definedEffectProps = {}; const propEntries = Object.keys(effectProps); const propEntriesLength = propEntries.length; for (let j = 0; j < propEntriesLength; j++) { const propName = propEntries[j]; Object.defineProperty(definedEffectProps, propName, { get: () => { return this.resolvedProps.effects[i].props[propName].value; }, set: (value) => { const target = this.resolvedProps.effects[i].props[propName]; target.value = value; if (target.hasValidator) { value = target.validatedValue = effectConstructors[effectType] .uniforms[propName]?.validator(value, effectProps); } if (target.hasProgramValueUpdater) { effectConstructors[effectType].uniforms[propName] ?.updateProgramValue(target); } else { target.programValue = value; } shManager.renderer.stage.requestRender(); }, }); } Object.defineProperty(definedProps, effectName, { get: () => { return definedEffectProps; }, }); } this.props = definedProps; } getResolvedProps() { return this.resolvedProps; } } //# sourceMappingURL=DynamicShaderController.js.map