import { CustomShader } from '@realsee/five'; export declare class PointCloudExpandShader extends CustomShader { constructor(); get progress(): number; set progress(value: number); } /** float pointEffectSizeScale = 1.0; float pointEffectSizeBasis = 0.0; ==== start effect 1 ===== vec4 basis = vec4((modelBoundingMax + modelBoundingMin) / 2.0, 1.0); float boundingRadius = length(modelBoundingMax - modelBoundingMin) / 2.0; vec4 rPosition1 = vWorldPosition - basis; vec4 rPosition2 = normalize(rPosition1) * (boundingRadius * 20.0) * gln_simplex(vWorldPosition.xyz * 20.0); float progress = clamp(pointEffect * pointEffect * pointEffect, 0.0, 1.0); vec4 rPosition = mix(rPosition1, rPosition2, progress); float rLength = length(rPosition.xz); float rad = atan(rPosition.z, rPosition.x) + sqrt(length(rPosition - rPosition1) / 100.0); rPosition.x = cos(rad) * rLength; rPosition.z = sin(rad) * rLength; vWorldPosition = basis + rPosition; ==== end effect 1 ===== ==== start effect 2 ===== vec4 basis = vec4((modelBoundingMax + modelBoundingMin) / 2.0, 1.0); float boundingRadius = length(modelBoundingMax - modelBoundingMin) / 2.0; float p = length(vWorldPosition - basis) / boundingRadius; float progress = smoothstep(p, p - 0.03, 1.0 - pointEffect); float noise = gln_simplex(vWorldPosition.xyz * 10.0); progress = step(abs(noise), progress); pointEffectSizeScale = mix(pointEffectSizeScale, 0.0, progress); float progress2 = step(pointEffect, 1.0 - p); pointEffectSizeBasis = mix(0.1 * step(abs(noise), 0.5 / boundingRadius), pointEffectSizeBasis, progress2); ==== end effect 2 ===== ==== start effect 3 ===== vec4 basis = vec4((modelBoundingMax + modelBoundingMin) / 2.0, 1.0); float boundingRadius = length(modelBoundingMax - modelBoundingMin) / 2.0; float boundingSizeZ = length(modelBoundingMax.z - modelBoundingMin.z); float p = 1.0 - length(vWorldPosition.z - modelBoundingMin.z) / boundingSizeZ; float progress = 1.0 - pointEffect; progress = progress * 0.9 + 0.1; progress = smoothstep(p, p - 0.03, 1.0 - pointEffect); float noise = gln_simplex(vWorldPosition.xyz * 10.0); progress = step(abs(noise), progress); pointEffectSizeScale = mix(pointEffectSizeScale, 0.0, progress); float progress2 = step(pointEffect, 1.0 - p); float noise2 = gln_simplex(vWorldPosition.xyz * 10.0); pointEffectSizeBasis = mix(0.7 * step(abs(noise2), 0.2 / boundingRadius), pointEffectSizeBasis, progress2); pointEffectSizeBasis = mix(0.0, pointEffectSizeBasis, step(p - 0.3, (1.0 - pointEffect) * 0.9)); ==== end effect 3 ===== */