UNPKG

polygonjs-engine

Version:

node-based webgl 3D engine https://polygonjs.com

39 lines (36 loc) 1.2 kB
/** * Adds An AfterImage effect, where the previous render remains and only slowly fades away. * * */ import {TypedPostProcessNode, TypedPostNodeContext, PostParamOptions} from './_Base'; import {AfterimagePass} from '../../../modules/three/examples/jsm/postprocessing/AfterimagePass'; import {IUniformN} from '../utils/code/gl/Uniforms'; interface AfterImagePassWithUniforms extends AfterimagePass { uniforms: { damp: IUniformN; }; } import {NodeParamsConfig, ParamConfig} from '../utils/params/ParamsConfig'; class AfterImagePostParamsConfig extends NodeParamsConfig { damp = ParamConfig.FLOAT(0.96, { range: [0, 1], rangeLocked: [true, true], ...PostParamOptions, }); } const ParamsConfig = new AfterImagePostParamsConfig(); export class AfterImagePostNode extends TypedPostProcessNode<AfterImagePassWithUniforms, AfterImagePostParamsConfig> { params_config = ParamsConfig; static type() { return 'afterImage'; } protected _create_pass(context: TypedPostNodeContext) { const pass = new AfterimagePass() as AfterImagePassWithUniforms; this.update_pass(pass); return pass; } update_pass(pass: AfterImagePassWithUniforms) { pass.uniforms.damp.value = this.pv.damp; } }