UNPKG

@polygonjs/polygonjs

Version:

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

33 lines (32 loc) 1.49 kB
"use strict"; import { clothControllerFromObject } from "./ClothControllerRegister"; import { MaterialUserDataUniforms } from "../../engine/nodes/gl/code/assemblers/materials/OnBeforeCompile"; import { UNIFORM_PARAM_PREFIX, UNIFORM_TEXTURE_PREFIX } from "../material/uniform"; function _addParamPrefix(uniformName) { return `${UNIFORM_PARAM_PREFIX}${uniformName}`; } function _addTexturePrefix(uniformName) { return `${UNIFORM_TEXTURE_PREFIX}${uniformName}`; } export function clothSolverStepSimulation(clothObject, stepsCount, constraintInfluence, viscosity, spring, uniformConfig) { const controller = clothControllerFromObject(clothObject); if (!controller) { console.log("no controller for", clothObject.uuid); return; } controller.stepsCount = stepsCount; controller.constraintInfluence = constraintInfluence; controller.viscosity = viscosity; controller.spring = spring; controller.update(uniformConfig); } export function clothSolverUpdateMaterial(material, uniformConfig, uniformNameConfig) { const uniforms = MaterialUserDataUniforms.getUniforms(material); if (!uniforms) { return; } uniforms[_addParamPrefix(uniformNameConfig.tSize)].value = uniformConfig.tSize; uniforms[_addTexturePrefix(uniformNameConfig.tPosition0)].value = uniformConfig.tPosition0; uniforms[_addTexturePrefix(uniformNameConfig.tPosition1)].value = uniformConfig.tPosition1; uniforms[_addTexturePrefix(uniformNameConfig.tNormal)].value = uniformConfig.tNormal; }