\n \u003CVisuTrackBallControls />\n \u003C/TresPerspectiveCamera>\n \u003C/TresCanvas>\n`\n\n[VisuTrackBallControls.vue.txt](https://github.com/user-attachments/files/18799562/VisuTrackBallControls.vue.txt)\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\n- [x] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\n- [x] Read the [docs](https://cientos.tresjs.org/guide).\n- [x] Check that there isn't [already an issue](https://github.com/tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.",[],595,"Add TrackballControls to Cientos","2025-02-14T13:18:40Z","https://github.com/Tresjs/cientos/issues/595",0.72243327,{"description":3084,"labels":3085,"number":3092,"owner":3019,"repository":3045,"state":3021,"title":3093,"updated_at":3094,"url":3095,"score":3096},"### Description\r\n\r\nAs a developer using TresJS, I want to have a `\u003CPortal>` component that can contain a separate `Scene` and `context`.\r\n\r\n### Suggested solution\r\n\r\nProvide a `\u003CPortal>` component similar to R3F.\r\n\r\n### Requirements\r\n\r\n- [ ] Add override-able pointer to `TresContext` (Also add as prop to TresCanvas: see #581 ); use vanilla `THREE.Vector2`, accept `Vector2` and `UsePointerOptions` as TresCanvas prop\r\n- [ ] Make these fields on `TresContext` swappable and (in some case injectable by the user): scene, camera, cameras, controls, raycaster, eventManager, sizes\r\n\r\n### Validations\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[3086,3089],{"name":3087,"color":3088},"p3-significant","2C78E3",{"name":3090,"color":3091},"v5","EFC959",789,"Portal","2025-02-06T09:59:01Z","https://github.com/Tresjs/tres/issues/789",0.7403908,{"description":3098,"labels":3099,"number":3105,"owner":3019,"repository":3045,"state":3021,"title":3106,"updated_at":3107,"url":3108,"score":3109},"### Description\n\nWebGPU [Three.js r171](https://github.com/mrdoob/three.js/releases) has been released and it’s a major milestone for WebGPU integration with third-party libraries such as React Three Fiber and bundlers like Vite or Next.js. We can now do this with zero configuration:\r\n\r\nThree.js Vanilla Three.js\r\n\r\n```ts\r\nimport * as THREE from 'three'\r\nimport { WebGPURenderer } from 'three/webgpu'\r\n \r\nconst renderer = new WebGPURenderer()\r\n```\r\n\r\nR3F\r\n\r\n```ts\r\nimport { Canvas } from '@react-three/fiber'\r\nimport { WebGPURenderer } from 'three/webgpu'\r\n \r\n\u003CCanvas gl={canvas => new WebGPURenderer({ canvas })}>\r\n```\n\n### Suggested solution\n\nEnable a `renderer` prop to override the renderer, restricted to canvas-based WebGL/WebGPU renderers.\r\n\r\n```vue\r\n\u003Cscript setup>\r\nimport { WebGPURenderer } from 'three/webgpu'\r\n\u003C/script>\r\n\r\n\u003Ctemplate>\r\n \u003CTresCanvas :renderer=\"WebGPURenderer\" />\r\n\u003C/template>\r\n```\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[3100,3103,3104],{"name":3101,"color":3102},"feature","c2e0c6",{"name":3087,"color":3088},{"name":3090,"color":3091},883,"WebGPU support","2025-02-06T09:35:42Z","https://github.com/Tresjs/tres/issues/883",0.74316514,{"description":3111,"labels":3112,"number":3115,"owner":3019,"repository":3045,"state":3021,"title":3116,"updated_at":3117,"url":3118,"score":3119},"### Description\n\nAs a maintainer of TresJS, I would like to clean up the core logic by refactoring it to use VueUse `createInjectionState` https://vueuse.org/shared/createInjectionState/#createinjectionstate instead\n\n### Suggested solution\n\nReplace manual context provider with something like:\n\n```ts\nconst [useTresContextProvider, useTresContext] = createInjectionState((props, emit) => {\n // Create refs with initial null values\n const scene = shallowRef\u003CTresScene | null>(null)\n const renderer = shallowRef\u003CWebGLRenderer | null>(null)\n const camera = shallowRef\u003CPerspectiveCamera | null>(null)\n const loop = createRenderLoop()\n\n // Render mode logic etc\n})\n\nexport { useTresContext, useTresContextProvider }\n```\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [x] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [x] Read the [docs](https://tresjs.org/guide).\n- [x] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[3113,3114],{"name":3087,"color":3088},{"name":3090,"color":3091},961,"Refactor `useTresContextProvider` into `createInjectionState`","2025-03-18T15:30:44Z","https://github.com/Tresjs/tres/issues/961",0.7464757,{"description":3121,"labels":3122,"number":3129,"owner":3019,"repository":3045,"state":3021,"title":3130,"updated_at":3131,"url":3132,"score":3133},"### Description\n\nHow to use vue-cli\n\n### Suggested solution\n\nHow to use vue-cli\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[3123,3126,3127,3128],{"name":3124,"color":3125},"bug","d73a4a",{"name":3033,"color":3034},{"name":3036,"color":3037},{"name":3039,"color":3040},754,"How to use vue-cli","2024-08-21T09:51:50Z","https://github.com/Tresjs/tres/issues/754",0.7500141,{"description":3135,"labels":3136,"number":3140,"owner":3019,"repository":3045,"state":3141,"title":3142,"updated_at":3143,"url":3144,"score":3145},"### Description\n\nAs a maintainer of TresJS, I would like to separate concerns into different composables. The goal is that `useTresContextProvider` unique purpose to orchestrate and return the context state.\n\n\n\n\n### Suggested solution\n\nMove all render-related logic to useRenderer:\n\n- Creation of renderer\n- Render modes logic (mode, invalidate, advance)\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [x] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [x] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [x] Read the [docs](https://tresjs.org/guide).\n- [x] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[3137],{"name":3138,"color":3139},"p1-chore","BFD4F2",979,"closed","Move renderer logic from `useTresContextProvider` to `useRenderer`","2025-04-22T17:09:06Z","https://github.com/Tresjs/tres/issues/979",0.7154823,["Reactive",3147],{},["Set"],["ShallowReactive",3150],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$f6VepYN403-rAP0atTj1cLQrBl8ge3fgNFektpER0qI8":-1},"/Tresjs/tres/445"]