UNPKG

@polygonjs/polygonjs

Version:

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

42 lines (39 loc) 1.19 kB
/** * Adds a blur effect. * * */ import {TypedPostNode, TypedPostNodeContext, PostParamOptions} from './_Base'; import {NodeParamsConfig, ParamConfig} from '../utils/params/ParamsConfig'; import {KawaseBlurPass, KernelSize} from 'postprocessing'; import {KERNEL_SIZES, KERNEL_SIZE_MENU_OPTIONS} from '../../../core/post/KernelSize'; class BlurPostParamsConfig extends NodeParamsConfig { /** @param amount */ amount = ParamConfig.FLOAT(1, { range: [0, 2], rangeLocked: [true, false], step: 0.01, ...PostParamOptions, }); /** @param kernel size */ kernelSize = ParamConfig.INTEGER(KernelSize.LARGE, { ...PostParamOptions, ...KERNEL_SIZE_MENU_OPTIONS, }); } const ParamsConfig = new BlurPostParamsConfig(); export class BlurPostNode extends TypedPostNode<KawaseBlurPass, BlurPostParamsConfig> { override paramsConfig = ParamsConfig; static override type() { return 'blur'; } override createPass(context: TypedPostNodeContext) { const pass = new KawaseBlurPass(); this.updatePass(pass); return pass; } override updatePass(pass: KawaseBlurPass) { pass.scale = this.pv.amount; (pass.blurMaterial as any).kernelSize = KERNEL_SIZES[this.pv.kernelSize]; } }