playcanvas
Version:
Open-source WebGL/WebGPU 3D engine for the web
26 lines (25 loc) • 947 B
JavaScript
var particleUpdaterAABB_default = `
uniform spawnBounds: mat3x3f;
uniform spawnPosInnerRatio: vec3f;
fn calcSpawnPosition(inBounds: vec3f, rndFactor: f32) -> vec3f {
var pos = inBounds - vec3f(0.5);
let posAbs = abs(pos);
let maxComp = max(posAbs.x, max(posAbs.y, posAbs.z));
let maxPos = vec3f(maxComp);
let edge = maxPos + (vec3f(0.5) - maxPos) * uniform.spawnPosInnerRatio;
pos.x = edge.x * select(2.0 * pos.x, sign(pos.x), maxPos.x == posAbs.x);
pos.y = edge.y * select(2.0 * pos.y, sign(pos.y), maxPos.y == posAbs.y);
pos.z = edge.z * select(2.0 * pos.z, sign(pos.z), maxPos.z == posAbs.z);
return uniform.emitterPos + uniform.spawnBounds * pos;
return uniform.spawnBounds * pos;
}
fn addInitialVelocity(localVelocity: ptr<function, vec3f>, inBounds: vec3f) {
*localVelocity = *localVelocity - vec3f(0.0, 0.0, uniform.initialVelocity);
}
`;
export {
particleUpdaterAABB_default as default
};