1.7 KiB
Executable File
1.7 KiB
Executable File
框架识别特征
Three.js
未混淆:THREE., WebGLRenderer, ShaderMaterial, BufferGeometry
混淆后(通过构造参数推断):
| 调用模式 | 原始类 |
|---|---|
new X({canvas, antialias, alpha}) |
WebGLRenderer |
new X(fov, aspect, near, far) — 4 数字 |
PerspectiveCamera |
new X(-1, 1, 1, -1, 0, 1) — 6 参数 |
OrthographicCamera |
new X(w, h, {wrapS, minFilter}) |
WebGLRenderTarget |
new X(data, w, h, format, type) — Float32Array |
DataTexture |
new X(2, 2) 作为几何体 |
PlaneGeometry |
new X({uniforms, vertexShader, fragmentShader}) |
ShaderMaterial |
X.getElapsedTime() |
Clock |
常量:ClampToEdgeWrapping, NearestFilter, RGBAFormat, FloatType, DoubleSide
2D Canvas
dataEngine: null 时,用 getContext('2d') 有无 + createShader/shaderSource 有无区分:
- 有
getContext('2d'),无 WebGL 调用 → 纯 2D Canvas - 有 WebGL 调用 → Raw WebGL / PixiJS
Raw WebGL
gl.createShader / gl.shaderSource / gl.compileShader / gl.createProgram
gl.bindBuffer / gl.bindFramebuffer / gl.drawArrays
PixiJS
PIXI.Application, PIXI.Filter, new PIXI.Filter(vertSrc, fragSrc, uniforms)
Babylon.js
BABYLON.Engine, BABYLON.ShaderMaterial, BABYLON.Effect.ShadersStore
GPGPU 模式
两个 WebGLRenderTarget(ping-pong)+ OrthographicCamera(-1,1,1,-1,0,1) + PlaneGeometry(2,2) + DataTexture 初始位置 + setRenderTarget 循环
常见噪声
| 函数 | 类型 |
|---|---|
snoise |
Simplex noise (Ashima) |
cnoise |
Classic Perlin |
cellular |
Worley/Voronoi |
fbm |
Fractal Brownian Motion |