{"full_name":"mrdoob/three.js","owner":"mrdoob","name":"three.js","url":"https://github.com/mrdoob/three.js","description":"JavaScript 3D Library.","homepage":"https://threejs.org/","topics":[],"language":"JavaScript","license":"MIT","avatar":"https://avatars.githubusercontent.com/u/97088?u=95046da3776175b5f3d1ad2137704cd123e04d9e&v=4","created_at":"2010-03-23T18:58:01Z","pushed_at":"2026-11-10T09:25:05Z","metrics":{"stars":118013,"forks":36936,"watchers":2517,"issues":13930,"prs":21213,"releases":179,"issues_open":null,"issues_closed":null,"prs_open":null,"prs_closed":null,"prs_merged":null,"discussions":0},"growth":{"day":{"stars":91,"forks":14,"base_day":"2026-11-09"}},"history":{"dates":["2026-11-09","2026-11-10"],"stars":[117922,118013],"forks":[36922,36936],"watchers":[2517,2517],"issues_open":[null,null],"prs_open":[null,null]},"boards":{"total":109},"same_owner":[{"full_name":"mrdoob/stats.js","name":"stats.js","boards":{}}],"issues":[{"number":5524,"title":"Loaders","comments":74,"created_at":"2014-10-27T23:36:37Z"},{"number":14161,"title":"Add shadow map support for RectAreaLights (brainstorming, R&D)","comments":62,"created_at":"2018-05-28T13:45:29Z"},{"number":28776,"title":"Significant Performance Drop and High CPU Usage with BatchedMesh","comments":52,"created_at":"2024-07-01T08:19:17Z"},{"number":30560,"title":"WebGPURenderer: Current UBO system has severe performance issues with many render items.","comments":50,"created_at":"2025-02-19T09:16:21Z"},{"number":9373,"title":"Compress RectAreaLight BRDF Data and include in three.js build files","comments":48,"created_at":"2016-07-21T20:38:43Z"},{"number":4903,"title":"CSS based size by default?","comments":41,"created_at":"2014-06-09T05:54:01Z"},{"number":18565,"title":"Seams with normal map and mirrored uvs","comments":37,"created_at":"2020-02-06T21:07:16Z"},{"number":10600,"title":"The shadow of a partially transparent object","comments":35,"created_at":"2017-01-18T08:50:30Z"}],"discussions":[],"latest_release":{"name":"r187","tag":"r187","published_at":"2026-10-30T08:03:18Z","body":"https://github.com/mrdoob/three.js/wiki/Migration-Guide#186--187\r\nhttps://github.com/mrdoob/three.js/milestone/100?closed=1\r\n\r\n- Global\r\n  - Remove code deprecated in r177. #34517 (@linbingquan, @Mugen87)\r\n- AnimationUtils\r\n  - Fix cubic spline additive reference sampling. #34860 (@gjija)\r\n- Backend\r\n  - Keep occlusion query results per camera. #35066 (@arodic, @claude)\r\n- BatchedMesh\r\n  - Clarify geometry compatibility requirements. #34675 (@MikeFernandez-Pro, @Mugen87)\r\n  - Fix sort corruption. #34828 (@Mugen87)\r\n  - Make shadows more node compatible. #34829 (@Mugen87)\r\n  - Fix draw ranges after `setGeometrySize()`. #34983 (@MikeFernandez-Pro)\r\n  - Fix memory leak of previous matrix data. #35272 (@Mugen87)\r\n- Bindings\r\n  - Avoid recreating initial texture bind groups. #34657 (@mrdoob)\r\n  - Avoid cache key allocations in `_update()`. #35120 (@Snuble-bot, @Mugen87, @claude)\r\n  - Avoid cache key collision with similar IDs. #35226 (@Mugen87)\r\n- Box3\r\n  - Use BatchedMesh bounds in precise mode. #34863 (@gjija)\r\n- BufferAttribute\r\n  - (Interleaved)BufferAttribute: Optimize normalized data access. #34992 (@zeux)\r\n- BufferGeometry\r\n  - Finalize tangents once per vertex. #34624 (@mrdoob)\r\n- Color\r\n  - Accept negative hues and decimal percentages in `setStyle()`. #34849 (@ewraj)\r\n- ColorManagement\r\n  - Fix order of color space conversion matrix. #34952 (@michaelcrosato, @claude)\r\n- CompressedTexture\r\n  - Default `mipmaps` to an empty array. #35081 (@arodic, @Mugen87, @claude)\r\n- Core\r\n  - Make `copy()` methods more robust. #34691 (@Mugen87)\r\n  - Fix reversed depth function mapping. #35264 (@WilliamLiu-1997)\r\n- Curves\r\n  - Invalidate cached lengths when copying or deserializing. #35118 (@dewanshshekhar, @Mugen87)\r\n- EdgesGeometry\r\n  - Use a Map for edge lookups. #34805 (@sarojpahi)\r\n- FramebufferTexture\r\n  - Fix `source` copy. #34636 (@Mugen87)\r\n- Geometries\r\n  - Add missing delete. #34648 (@Mugen87)\r\n- Inspector\r\n  - Auto-render non-texture nodes in the Viewer and fix `toInspector()` registration. #35253 (@sunag)\r\n- InterleavedBuffer\r\n  - Fix clone() and toJSON() of views into a shared array buffer. #34755 (@vincentfretin, @claude)\r\n- KeyframeTrack\r\n  - Fix `shift()` ignoring tangent data. #34951 (@kwy404)\r\n- LatheGeometry\r\n  - Normalize the normal of the last point. #35153 (@spokodev)\r\n- LightProbe\r\n  - Fix JSON round trips. #34859 (@gjija, @Mugen87)\r\n- LightShadow\r\n  - Clean up. #35213 (@Mugen87)\r\n- Line\r\n  - Line, Points: Copy morph targets in `copy()`. #35147 (@Enesuygurs)\r\n- Line3\r\n  - Fix closest point for degenerate segments in `distanceSqToLine3()`. #34673 (@kwy404)\r\n- Math\r\n  - Improve tree-shaking of unused classes. #34619 (@mrdoob)\r\n- MeshPhysicalMaterial\r\n  - Add EON rough diffuse BRDF. #34379 (@Ryan-G7, @Mugen87)\r\n  - Add iridescence thickness min/max properties. #35039 (@Mugen87)\r\n- Object3D\r\n  - Honor pivot when decomposing local matrices. #34811 (@gjija, @mrdoob)\r\n- ObjectLoader\r\n  - Fix loading of BatchedMesh available ids. #34652 (@gjija, @Mugen87)\r\n  - Restore `SpotLight.map`. #35128 (@HEOJUNFO, @claude)\r\n- PMREM\r\n  - Restore minimal roughness, improve roughness ramp. #34645 (@Mugen87)\r\n- PMREMGenerator\r\n  - Replace the CubeUV atlas with cube render targets. #34585 (@mrdoob, @claude)\r\n- RenderContexts\r\n  - Simplify comment. 121e626bb5d58ddd4f1d975010997f73688e665f (@Mugen87)\r\n  - Add the camera type to the state key. #35123 (@arodic, @claude, @sunag)\r\n- Renderer\r\n  - Fix edge cases in `dispose()`. #34765 (@Mugen87)\r\n  - Improve canvas target disposal. #34969 (@Mugen87)\r\n  - Track the source material in override passes. #35232 (@mrdoob)\r\n- Renderers\r\n  - Fix polygon offset with reveresed depth buffer. #34606 (@Mugen87)\r\n  - Preallocate wireframe indices. #34621 (@mrdoob)\r\n  - Fix blit region in `copyTextureToTexture()`. #35167 (@batuhansalkim)\r\n  - Ignore logarithmic depth buffer when reversed depth buffer is enabled. #35276 (@mrdoob, @claude)\r\n- RendererUtils\r\n  - Preserve additional renderer state. #35233 (@kemchen"},"readme":true,"readme_zh":false,"news":[{"title":"Three.js Shading Language","url":"https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language","hn":"https://news.ycombinator.com/item?id=40510468","source":"Hacker News","lang":"en","date":"2024-05-29","points":160,"comments":47},{"title":"PR converts the Three.js codebase to ES2015 modules","url":"https://github.com/mrdoob/three.js/pull/9310","hn":"https://news.ycombinator.com/item?id=12149048","source":"Hacker News","lang":"en","date":"2016-07-23","points":134,"comments":38},{"title":"Three.js: Javascript 3D engine","url":"http://github.com/mrdoob/three.js","hn":"https://news.ycombinator.com/item?id=1293544","source":"Hacker News","lang":"en","date":"2010-04-25","points":118,"comments":17},{"title":"Three.js: JavaScript 3D engine for canvas, svg, and WebGL","url":"http://github.com/mrdoob/three.js#readme","hn":"https://news.ycombinator.com/item?id=1709249","source":"Hacker News","lang":"en","date":"2010-09-20","points":93,"comments":25},{"title":"Mrdoob on \"What were you hoping to achieve with Three.js\"","url":"https://github.com/mrdoob/three.js/issues/1960#issuecomment-5850890","hn":"https://news.ycombinator.com/item?id=4008455","source":"Hacker News","lang":"en","date":"2012-05-22","points":5,"comments":0},{"title":"Making the world better commit by commit","url":"https://github.com/mrdoob/three.js/pull/29798","hn":"https://news.ycombinator.com/item?id=42079840","source":"Hacker News","lang":"en","date":"2024-11-07","points":3,"comments":0},{"title":"Fast JavaScript Base64 decode is 2x faster, 3x smaller than JSON.Parse.","url":"https://news.ycombinator.com/item?id=5640367","hn":"https://news.ycombinator.com/item?id=5640367","source":"Hacker News","lang":"en","date":"2013-05-01","points":3,"comments":0},{"title":"Three.js r187 shows the browser is now a serious home for 3D graphics","url":"https://startupfortune.com/threejs-r187-shows-the-browser-is-now-a-serious-home-for-3d-graphics/","source":"Startup Fortune","lang":"en","date":"2026-10-31"},{"title":"GitHub热榜解读：实时地球与AI编码代理的2026风向标","url":"https://news.google.com/rss/articles/CBMiYEFVX3lxTE9hTnJUVTh1dzJmVnczZ1dBdC1TTXNTRm9pYklRY3FrN0J2a2FoN1NPX3lURkF5WjhKMGNsWVVTVHFNeEdBdTJxc214NTE3R1M2dXFhaTJjdlNtYUxoTC1Cdw?oc=5","source":"CSDN","lang":"zh","date":"2026-11-09"},{"title":"实时地球与AI编码代理：GitHub热榜双雄技术拆解","url":"https://news.google.com/rss/articles/CBMiX0FVX3lxTE15UUdBZUtFVEdBbHZjM1dtaU8zUWFDUTlpZHZMTXhZUlNUNUdLRmFtY3BjdUx0M180VDhSbmNQOFU3Nm4xczZreTJFUnJSMF8yWG00TFN6aXNjWXFMWnFR?oc=5","source":"CSDN","lang":"zh","date":"2026-11-08"},{"title":"Google Built a Three.js Compiler Because It Does Not Trust the Code an AI Writes","url":"https://news.google.com/rss/articles/CBMiiAFBVV95cUxPTE9ZendVX1VoakR2WGlnUVhrbWJ6T1FVa2pNS1hWVXNzUUdQTVdCNVJJUXZuaTFHaExYWlRHTFFzVnZuejZfdlFHUG0zZW9CRlhMa1VyOHRDUXBLaFZ0YTc2TlFucG5qYy1HUjJPQU1nN2ExVGgzckFwY3cwZ0ZWTkR4R2pXa24y?oc=5","source":"https://vr.org/","lang":"en","date":"2026-11-04"},{"title":"Introducing Three-Live: turning AI-generated Three.js into interactive 3D, AR, and WebXR across web and mobile","url":"https://news.google.com/rss/articles/CBMimgFBVV95cUxPR0w5SXFhWEpzbm5obVZpR2NMS0RNb2pkOHJ4ckJONVdlUi1HNzBzU0JwVTdyUWJ3RTlCUnpPU0p4UGxyU1l1aUhWWmR1WERZYmRQNm1TbGxLbFVDVllxTHM5Q0trSGozTVhxR2l2NVhTN2VvWGMxU2tsRGdGWVR3QmZjcXQzSlhnNFcwM2dKY1hmb3Z0VC1ualFB?oc=5","source":"Google Open Source Blog","lang":"en","date":"2026-11-03"},{"title":"399 美元的鸭子机器人开源了，今年最让人想立刻掏钱的硬件产品","url":"https://news.google.com/rss/articles/CBMif0FVX3lxTE56dUNZMGZGeG5GZ1RfN29zZlQ1Y1VSMjBzenpuM0xjbzZaeHRfV0dUQTNfR084TVNFMWk3eTJvVVVRR21uTjdZSkxHbk45MnZOamFPbzF2M1Y5cFlUZ2RWRzR1U3VMN0tOZ0JlUTNsT2RJM3lyVDc0UkQta3UySW8?oc=5","source":"OSCHINA","lang":"zh","date":"2026-09-01"},{"title":"Artist Shares Real-Time Snowfall System Built with Three.js & WebGL","url":"https://news.google.com/rss/articles/CBMikgFBVV95cUxQby1QeWtJTEtJWEN3aDN4XzFwdWo0WXFCU2oxWm9tX0VvNzdhQnFMMG5MUTVaQnhpMWw2S01BRXJ3cDdvcGpUWGpyd1o5VVVkblFvVkRLNVBQWjRTVzdkRkw0bUx1cFlKajlWTGZiOE5rM3ZVejIwakhmeEZxeUF0bFQ3Uk5yWDRIU1dlUVZMWWhVQQ?oc=5","source":"80 Level","lang":"en","date":"2026-06-30"},{"title":"We Built This GitHub City On Rock And Roll","url":"https://news.google.com/rss/articles/CBMiigFBVV95cUxQRmFQTXJSRUU1YzZsYmFBQ1JIdlBNcTVMenpfVU1TamZYU25iYm5SZFdwM2VTYlBFS2pIMUhXcmw1cy00NmVHOEZ3YjcydUk1aDAtd1ItalJMMF8wVTNsYUFPSnpBVWloM25HR1lKZjV6Uy1Ic3BXeDNJeFZFWkdseEhrd05NcGZpR0E?oc=5","source":"Sites@Duke Express","lang":"en","date":"2026-04-13"},{"title":"Top 8 Claude Skills for 3D Modeling, Game Dev, and Shader Programming","url":"https://news.google.com/rss/articles/CBMiiwFBVV95cUxNZmdXb2Z5R3NzR3ZLdURWU25MZDRuUnVkWXJIOGVhdE1ncnM3cnp4R2VvcFdNNGgtTVNvZ2wtVXVHWW8ycllKRjRrTzQ2b01md25CQmp5NGJldlhrV0NHd1M5b051Nkp0WmN3T2R3bFF4aHEzVHpRMWFpX2lSOVE4SkVUQnprVmxHQUFF?oc=5","source":"Snyk","lang":"en","date":"2026-04-01"},{"title":"一个GitHub项目，凭什么让全球数百万人围观？这款3D情报工具太强了","url":"https://news.google.com/rss/articles/CBMiU0FVX3lxTE1wUU14b1VvSXpMUVBQblZMTW5PbzF3QWNwYldPdHNJQ0wwUlJraV9EMm9fN3o4Ykdtczg2bzJYUEJlT0Item9zd3BjS2ZqOWxzcS1F?oc=5","source":"电子工程专辑EE Times China","lang":"zh","date":"2026-03-06"},{"title":"Vue3 + Three.js 首款 3D 数字孪生编辑器！正式开源！","url":"https://news.google.com/rss/articles/CBMiU0FVX3lxTE5YcFRLTG1mWndDUTNkYzZ4d1g2dVdaSlZxLU54UFB0Q0doSWVkeGVudXV4aFFRM3NObDV4TkxCUzJVbzRPa2VJN1hLekpLWGh4bXAw?oc=5","source":"51CTO","lang":"zh","date":"2025-06-30"},{"title":"网页正在改变：用 Three.js 和 WebGL 在浏览器中打造 3D 体验与游戏","url":"https://news.google.com/rss/articles/CBMieEFVX3lxTE9HNEpmQ3p6VXRUem5QaUNVMndOcVJRajZ5UGlfUXJxMG5zdU8tSjg1YWF4R0ZKYmxFX2ZvUC1NWkZ1ZnhyVVRLeDg1OXVyYXZiakg2S3d4dDlja2RvSGpjNTh2b0drb0tVQjFLUERSekUwWGdtSHh1ag?oc=5","source":"Pasquale Pillitteri","lang":"zh","date":"2024-10-31"}],"stale":false,"snapshot_at":"2026-11-10T09:35:25Z","history_start":"2026-09-06"}