{"id":34782318,"url":"https://github.com/rmarchet/blackhole-ts","last_synced_at":"2026-04-12T08:32:20.829Z","repository":{"id":289420254,"uuid":"971187392","full_name":"rmarchet/blackhole-ts","owner":"rmarchet","description":"Simulate a Schwarzschild black hole using three.js","archived":false,"fork":false,"pushed_at":"2025-05-15T04:01:54.000Z","size":20986,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-15T04:42:55.971Z","etag":null,"topics":["astronomy","blackhole","glsl","raytracing","reactjs","shader","simulation","threejs","vitejs"],"latest_commit_sha":null,"homepage":"https://rmarchet.github.io/blackhole-ts/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rmarchet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-23T06:34:00.000Z","updated_at":"2025-05-15T04:04:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d3d7f31-3cbb-4bc5-90a1-39b51a08e7a6","html_url":"https://github.com/rmarchet/blackhole-ts","commit_stats":null,"previous_names":["rmarchet/blackhole-ts"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rmarchet/blackhole-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarchet%2Fblackhole-ts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarchet%2Fblackhole-ts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarchet%2Fblackhole-ts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarchet%2Fblackhole-ts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmarchet","download_url":"https://codeload.github.com/rmarchet/blackhole-ts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarchet%2Fblackhole-ts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31709293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T06:22:27.080Z","status":"ssl_error","status_checked_at":"2026-04-12T06:21:52.710Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astronomy","blackhole","glsl","raytracing","reactjs","shader","simulation","threejs","vitejs"],"created_at":"2025-12-25T08:57:21.902Z","updated_at":"2026-04-12T08:32:20.824Z","avatar_url":"https://github.com/rmarchet.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Black Hole Visualization\n\n\u003c!-- vscode-markdown-toc --\u003e\n- 1. [Screenshot](#Screenshot)\n- 2. [Features](#Features)\n- 3. [Technologies Used](#TechnologiesUsed)\n- 4. [Getting Started](#GettingStarted)\n  - 4.1. [Prerequisites](#Prerequisites)\n  - 4.2. [Installation](#Installation)\n- 5. [Controls](#Controls)\n\t- 5.1. [Camera Controls](#CameraControls)\n\t- 5.2. [Visual Controls](#VisualControls)\n- 6. [How It Works](#HowItWorks)\n- 7. [Project Structure](#ProjectStructure)\n- 8. [License](#License)\n- 9. [Acknowledgments](#Acknowledgments)\n- 10. [Docs](https://github.com/rmarchet/blackhole-ts/tree/main/Docs)\n\n\u003c!-- vscode-markdown-toc-config\n\tnumbering=true\n\tautoSave=true\n\t/vscode-markdown-toc-config --\u003e\n\u003c!-- /vscode-markdown-toc --\u003e\n\n\u003cbr /\u003e\n\u003cimg src=\"public/blackhole.svg\" width=\"118\" alt=\"Black Hole Visualization\" align=\"left\" style=\"margin: 0 20px 8px 0\" /\u003e\nA real-time 3D visualization of a black hole using React, Three.js, and GLSL shaders. This project simulates gravitational lensing, accretion disk effects, and relativistic beaming around a black hole, inspired by scientifically accurate black hole renderings.\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\n\n##  1. \u003ca name='Screenshot'\u003e\u003c/a\u003eScreenshot\n\nThis is one of the possible visualizations that can be generated with this app:\n\n\u003cimg src=\"screenshot.jpg\" width=\"400\" alt=\"Black Hole Visualization Screenshot\" /\u003e\n\n##  2. \u003ca name='Features'\u003e\u003c/a\u003eFeatures\n\n- Real-time gravitational lensing simulation\n- Accretion disk with multiple texture options\n  - natural\n  - arrows\n  - stripes\n  - grid\n  - blue\n- Doppler shift effect\n- Relativistic beaming effect\n- Photon ring at the event horizon\n- Rotation to simulate a Kerr black hole\n  - frame dragging effect\n- Customizable glow effects\n- Interactive camera controls with orbit mode\n- Performance quality adjustment\n- Post-processing effects:\n  - Bloom with adjustable intensity\n  - Glow with customizable parameters\n- Background options:\n  - Star field with proper parallax\n  - Milky Way background\n- Persistent settings using local storage\n\n##  3. \u003ca name='TechnologiesUsed'\u003e\u003c/a\u003eTechnologies Used\n\n- React + TypeScript\n- Three.js\n- React Three Fiber\n- GLSL Shaders\n- Vite\n- Local Storage for persistent settings\n\n##  4. \u003ca name='GettingStarted'\u003e\u003c/a\u003eGetting Started\n\n###  4.1. \u003ca name='Prerequisites'\u003e\u003c/a\u003ePrerequisites\n\n- Node.js (v20 or higher)\n- npm or yarn\n\n###  4.2. \u003ca name='Installation'\u003e\u003c/a\u003eInstallation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/rmarchet/blackhole-ts.git\ncd blackhole-ts\n```\n\n2. Install dependencies:\n```bash\nnpm install\n# or\nyarn install\n```\n\n3. Start the development server:\n```bash\nnpm run dev\n# or\nyarn dev\n```\n\n4. Open your browser and navigate to `http://localhost:5173`\n\n##  5. \u003ca name='Controls'\u003e\u003c/a\u003eControls\n\n###  5.1. \u003ca name='CameraControls'\u003e\u003c/a\u003eCamera Controls\n- Left-click + drag: Rotate camera\n- Right-click + drag: Pan camera\n- Mouse wheel: Zoom in/out\n- Toggle orbit mode for automatic camera rotation\n\n###  5.2. \u003ca name='VisualControls'\u003e\u003c/a\u003eVisual Controls\n- Performance Quality:\n  - High quality: More accurate ray marching steps\n  - Low quality: Better performance\n- Bloom Effect:\n  - Adjustable intensity\n  - Configurable threshold and radius\n- Glow Effect:\n  - Toggle glow\n  - Adjustable intensity\n- Accretion Disk:\n  - Multiple texture options\n  - Adjustable intensity\n  - Toggle Doppler shift\n- Background:\n  - Toggle star field\n  - Toggle Milky Way\n  - Adjustable background intensity\n\n##  6. \u003ca name='HowItWorks'\u003e\u003c/a\u003eHow It Works\n\nThe visualization uses advanced ray marching techniques in GLSL shaders to simulate:\n- [Gravitational lensing](docs/Gravitational%20Lensing.md) around the black hole using geodesic calculations\n- Accretion disk with realistic [Doppler and relativistic effects](docs/Doppler%20Shift.md)\n- Photon ring at the event horizon\n- Relativistic beaming and light aberration\n- [Relativistic Jet](docs/Relativistic%20Jet.md) for a rotating black hole\n- Star field and Milky Way background with proper parallax\n- Post-processing effects for enhanced visual quality\n\n\n\n##  7. \u003ca name='ProjectStructure'\u003e\u003c/a\u003eProject Structure\n\n- `src/components/`: React components including the main BlackHole component\n- `src/shaders/`: GLSL shader code for the visualization\n- `src/hooks/`: Custom React hooks for state management\n- `src/constants/`: Configuration and constant values\n- `src/assets/`: Textures and static assets\n\n##  8. \u003ca name='License'\u003e\u003c/a\u003eLicense\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n##  9. \u003ca name='Acknowledgments'\u003e\u003c/a\u003eAcknowledgments\n\n- Inspired by the work of Kip Thorne and the visual effects team of \"Interstellar\"\n- Based on scientific papers about black hole visualization\n- Thanks to the Three.js and React Three Fiber communities\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmarchet%2Fblackhole-ts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmarchet%2Fblackhole-ts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmarchet%2Fblackhole-ts/lists"}