Materializr
오픈소스 파라메트릭 3D CAD로 제약 스케치·솔리드 모델·나사·SVG·텍스트 조각·STL/STEP 내보내기를 지원합니다
AI 도움으로 아름다운 2D 프랙탈을 생성, 인터랙티브하게 Mandelbrot·Julia 등 다양한 프랙탈 탐색
Generate beautiful 2D fractals with AI assistance. Explore Mandelbrot sets, Julia sets, and many more fractal types with interactive controls.
디자인JavaScript · HTMLGitHub @Nooshu온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.