Materializr
開源參數式 3D CAD 給創客 — 受限草圖、實體建模、螺紋、SVG 與文字雕刻、STL/STEP 匯出。Android、iPad、Linux、Mac、Windows。Vibe 編碼。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A web-based fractal generator 100% written by AI tooling, an experiment into as to how far existing AI can get us in 2025.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A web-based fractal generator using regl and WebGL. This project demonstrates interactive fractal visualization with real-time rendering capabilities, machine learning-powered discovery, and extensive performance optimizations.
AI coding agents: See AGENTS.md for build commands, conventions, and subtree-specific guidance. Nested files live in tests/AGENTS.md and static/js/AGENTS.md.
FractalAI includes a comprehensive collection of fractals organized into families:檢視完整 README ↗A web-based fractal generator using regl and WebGL. This project demonstrates interactive fractal visualization with real-time rendering capabilities, machine learning-powered discovery, and extensive performance optimizations.
Version: 7.1.0
AI coding agents: See AGENTS.md for build commands, conventions, and subtree-specific guidance. Nested files live in
tests/AGENTS.mdandstatic/js/AGENTS.md.
FractalAI includes a comprehensive collection of fractals organized into families:
FractalAI includes a mobile-first minimal UI for phones and tablets:
FractalAI includes an intelligent discovery system that uses machine learning to find interesting fractal views:
FractalAI includes extensive performance optimizations for smooth, responsive rendering:
If you use nvm, run nvm use to automatically switch to the correct Node.js version.
Note: Cloudflare Pages (build image v3) uses Node.js 22 by default. This repo pins
22.16.0in.nvmrcto keep local development and Pages builds consistent.
npm install
npm start
(npm run dev is equivalent.)
http://localhost:5173)npm run build
The built files will be in the dist/ directory. The build process includes:
This project is configured for deployment on Cloudflare Pages using the v3 build system.
Connect your repository to Cloudflare Pages:
Configure build settings:
npm run build (⚠️ Do NOT use npm install && npm run build - Cloudflare Pages already runs npm clean-install automatically)dist/ (leave empty or use /)22 (recommended to pin 22.16.0 to match .nvmrc)Deploy! Cloudflare Pages will automatically build and deploy on every push to your main branch.
Install Wrangler CLI (if not already installed):
npm install -g wrangler
Build the project:
npm run build
Deploy to Cloudflare Pages:
wrangler pages deploy dist
_routes.json - Handles SPA routing (automatically copied to dist/ during build)wrangler.toml - Cloudflare Pages configuration for local developmentThe _routes.json file ensures that all routes are handled by the client-side application, which is essential for single-page applications.
FractalAI includes comprehensive testing infrastructure:
npm test # Run all tests
npm run test:unit # Run unit tests only
npm run test:watch # Watch mode
npm run test:visual # Run visual tests
npm run test:visual:update # Update snapshots
npm run test:visual:ui # Interactive UI mode
npm run test:visual:report # View test report
npm run lint # Check linting
npm run lint:fix # Fix linting issues
npm run format # Format code
npm run format:check # Check formatting
npm run stylelint # Check CSS styles
npm run check # Run all checks
FractalAI includes various performance optimizations and experimental features that can be enabled or disabled via feature flags. All feature flags are located in static/js/core/config.js under the CONFIG.features object.
These features are enabled by default and will automatically activate when browser support is detected:
offscreenCanvas: true)static/js/core/config.js → CONFIG.features.offscreenCanvasstatic/js/rendering/offscreen-renderer.jsOffscreenCanvas API availableOffscreenCanvas, then transfers results using transferToImageBitmap() for non-blocking, smoother renderingOffscreenCanvas APIocclusionQueries: true)static/js/core/config.js → CONFIG.features.occlusionQueriesstatic/js/rendering/occlusion-query.jsadaptiveQuality: true)static/js/core/config.js → CONFIG.features.adaptiveQualitystatic/js/rendering/adaptive-quality.jsmultiResolution: true)static/js/core/config.js → CONFIG.features.multiResolutionstatic/js/rendering/multi-resolution.jstimerQuery: true)static/js/core/config.js → CONFIG.features.timerQuerystatic/js/rendering/gpu-timer.jsEXT_disjoint_timer_query extension (WebGL1) or EXT_disjoint_timer_query_webgl2 extension (WebGL2)These features are implemented but disabled by default. Enable them by setting the flag to true in static/js/core/config.js:
webgpu: false)static/js/core/config.js → CONFIG.features.webgpustatic/js/rendering/webgpu-renderer.jsnavigator.gpu availablecomputeShaders: false)static/js/core/config.js → CONFIG.features.computeShadersstatic/js/rendering/webgl-compute-renderer.jsWEBGL_compute_shader extension availableWEBGL_compute_shader extension becomes widely availablesharedArrayBuffer: false)static/js/core/config.js → CONFIG.features.sharedArrayBufferstatic/js/workers/shared-array-buffer-utils.jsSharedArrayBuffer availablepredictiveRendering: false)static/js/core/config.js → CONFIG.features.predictiveRenderingstatic/js/rendering/predictive-rendering.jswebCodecs: false)static/js/core/config.js → CONFIG.features.webCodecsstatic/js/export/video-encoder.jswasmSimd: false)static/js/core/config.js → CONFIG.features.wasmSimdstatic/js/workers/wasm-simd-utils.jsWorker-based optimizations are controlled separately in CONFIG.workers:
workers.enabled: true (auto-detected based on hardware)workers.minCores: 2 (minimum CPU cores required)workers.maxWorkers: 4 (maximum worker threads)workers.requireSharedArrayBuffer: false (optional, requires COOP/COEP headers)Workers are automatically enabled when:
minCores)static/js/workers/feature-detection.js)To modify feature flags, edit static/js/core/config.js:
export const CONFIG = {
features: {
// Enable an experimental feature
webgpu: true, // Change from false to true
// Disable a default feature
multiResolution: false, // Change from true to false
},
};
After changing feature flags, restart the development server or rebuild for production.
The application automatically detects browser capabilities and enables features when available. You can check which features are active by:
FractalAI/
├── index.html # Main HTML file
├── static/
│ ├── css/
│ │ └── styles.css # All application styles
│ ├── js/
│ │ ├── main.js # Main application entry point
│ │ ├── core/ # Core application logic
│ │ │ ├── app-state.js # Application state management
│ │ │ ├── config.js # Configuration and feature flags
│ │ │ ├── initialization.js # App initialization
│ │ │ ├── logger.js # Development logging
│ │ │ ├── lifecycle-manager.js # Session lifecycle management
│ │ │ └── idle-cleanup.js # Idle resource cleanup
│ │ ├── fractals/ # Fractal implementations
│ │ │ ├── 2d/ # 2D fractal implementations (100+ files)
│ │ │ │ └── families/ # Fractal family groupings
│ │ │ ├── loader.js # Fractal loading system
│ │ │ ├── utils.js # Shared fractal utilities
│ │ │ ├── fractal-config.js # Fractal configuration
│ │ │ └── fractal-info.js # Fractal metadata
│ │ ├── rendering/ # Rendering engine and optimizations
│ │ │ ├── engine.js # Main rendering engine
│ │ │ ├── canvas-renderer.js # Canvas setup
│ │ │ ├── adaptive-quality.js # Adaptive quality management
│ │ │ ├── multi-resolution.js # Multi-resolution rendering
│ │ │ ├── occlusion-query.js # Occlusion query optimization
│ │ │ ├── predictive-rendering.js # Predictive rendering
│ │ │ ├── tile-renderer.js # Tile-based rendering
│ │ │ ├── gpu-timer.js # GPU timing
│ │ │ ├── context-loss-handler.js # Context loss recovery
│ │ │ └── uniform-buffer.js # WebGL2 UBO support
│ │ ├── discovery/ # ML-based discovery system
│ │ │ ├── discovery-manager.js # Discovery system manager
│ │ │ ├── discovery-algorithm.js # Discovery algorithms
│ │ │ ├── ml-trainer.js # ML model training
│ │ │ └── favorites-manager.js # Favorites management
│ │ ├── workers/ # Web Worker implementations
│ │ │ ├── pool.js # Worker pool management
│ │ │ ├── feature-detection.js # Worker capability detection
│ │ │ └── tile-protocol.js # Tile rendering protocol
│ │ ├── ui/ # UI components
│ │ │ ├── controls.js # UI controls
│ │ │ ├── panels.js # Panel management
│ │ │ ├── presets.js # Presets UI
│ │ │ ├── discovery-ui.js # Discovery UI
│ │ │ └── exif-editor.js # EXIF metadata editor
│ │ ├── sharing/ # Sharing and state management
│ │ │ ├── state-manager.js # URL state management
│ │ │ ├── encoder.js # State encoding
│ │ │ └── decoder.js # State decoding
│ │ ├── export/ # Export functionality
│ │ │ └── video-encoder.js # Video export
│ │ └── performance/ # Performance monitoring
│ │ ├── fps-tracker.js # FPS tracking
│ │ ├── instrumentation.js # Performance instrumentation
│ │ └── long-task-detector.js # Long task detection
│ └── presets/ # Fractal presets
│ ├── presets.json # Preset configurations
│ └── images/ # Preset preview images
├── tests/
│ ├── unit/ # Unit tests (62 test files, 941+ tests)
│ └── visual/ # Visual regression tests
├── scripts/ # Build scripts
│ ├── generate-presets-manifest.js
│ └── compress-brotli.js
├── package.json # Dependencies and scripts
├── vite.config.js # Vite configuration
├── vitest.config.js # Vitest configuration
└── playwright.config.js # Playwright configuration
Requires a modern browser with WebGL support:
We welcome contributions! Please see CONTRIBUTING.md for guidelines on:
AI coding agents should read AGENTS.md first (with nested guidance in tests/AGENTS.md and static/js/AGENTS.md).
This work is licensed under a Creative Commons Attribution 4.0 International License.
See LICENSE file for full legal text.