[{"data":1,"prerenderedAt":3348},["ShallowReactive",2],{"navigation":3,"/api/composables/use-tres-context":239,"/api/composables/use-tres-context-surround":3343},[4,29,78,173,205,215,219,223,227,231,235],{"title":5,"path":6,"stem":7,"children":8,"icon":27,"titleTemplate":28},"Getting Started","/getting-started","1.getting-started/1.index",[9,12,17,22],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Your First Scene","/getting-started/your-first-scene","1.getting-started/3.your-first-scene","i-lucide-donut",{"title":23,"path":24,"stem":25,"icon":26},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/4.upgrade-guide","i-lucide-circle-arrow-up","i-lucide-rocket","%s · Get Started with TresJS",{"title":30,"path":31,"stem":32,"children":33},"Essentials","/essentials","2.essentials",[34,36,48],{"title":30,"path":31,"stem":35},"2.essentials/index",{"title":37,"icon":38,"open":39,"path":40,"stem":41,"children":42,"page":47},"Core Architecture","i-lucide-cpu",true,"/essentials/core-architecture","2.essentials/1.core-architecture",[43],{"title":44,"path":45,"stem":46},"Custom Vue Renderer","/essentials/core-architecture/custom-vue-renderer","2.essentials/1.core-architecture/2.custom-vue-renderer",false,{"title":49,"icon":50,"open":39,"path":51,"stem":52,"children":53,"page":47},"Key Concepts","i-lucide-medal","/essentials/concepts","2.essentials/2.concepts",[54,58,62,66,70,74],{"title":55,"path":56,"stem":57},"Declarative vs Imperative","/essentials/concepts/declarative-vs-imperative","2.essentials/2.concepts/1.declarative-vs-imperative",{"title":59,"path":60,"stem":61},"Reactivity","/essentials/concepts/reactivity","2.essentials/2.concepts/2.reactivity",{"title":63,"path":64,"stem":65},"Constructor Arguments","/essentials/concepts/constructor-arguments","2.essentials/2.concepts/3.constructor-arguments",{"title":67,"path":68,"stem":69},"Declarative Properties","/essentials/concepts/declarative-properties","2.essentials/2.concepts/4.declarative-properties",{"title":71,"path":72,"stem":73},"Extending the Catalogue","/essentials/concepts/extending-catalogue","2.essentials/2.concepts/5.extending-catalogue",{"title":75,"path":76,"stem":77},"Child Attachments","/essentials/concepts/child-attachments","2.essentials/2.concepts/6.child-attachments",{"title":79,"path":80,"stem":81,"children":82},"API","/api","3.api",[83,86,104,131,141,155],{"title":84,"path":80,"stem":85},"TresJS API Reference","3.api/1.index",{"title":87,"icon":88,"open":39,"path":89,"stem":90,"children":91,"page":47},"Components","i-lucide-box","/api/components","3.api/1.components",[92,96,100],{"title":93,"path":94,"stem":95},"\u003CTresCanvas />","/api/components/tres-canvas","3.api/1.components/tres-canvas",{"title":97,"path":98,"stem":99},"\u003CTresCanvasContext />","/api/components/tres-context","3.api/1.components/tres-context",{"title":101,"path":102,"stem":103},"Tres Components","/api/components/tres-objects","3.api/1.components/tres-objects",{"title":105,"titleTemplate":106,"icon":107,"path":108,"stem":109,"children":110,"page":47},"Composables","%s · TresJS Composables","i-lucide-arrow-right-left","/api/composables","3.api/2.composables",[111,115,119,123,127],{"title":112,"path":113,"stem":114},"useTres","/api/composables/use-tres","3.api/2.composables/1.use-tres",{"title":116,"path":117,"stem":118},"useTresContext","/api/composables/use-tres-context","3.api/2.composables/2.use-tres-context",{"title":120,"path":121,"stem":122},"useLoop","/api/composables/use-loop","3.api/2.composables/3.use-loop",{"title":124,"path":125,"stem":126},"useGraph","/api/composables/use-graph","3.api/2.composables/4.use-graph",{"title":128,"path":129,"stem":130},"useLoader","/api/composables/use-loader","3.api/2.composables/5.use-loader",{"title":132,"icon":133,"path":134,"stem":135,"children":136,"page":47},"Event handling","i-lucide-mouse-pointer-2","/api/events","3.api/3.events",[137],{"title":138,"path":139,"stem":140},"Pointer Events","/api/events/pointer-events","3.api/3.events/1.pointer-events",{"title":142,"icon":143,"path":144,"stem":145,"children":146,"page":47},"Utils","i-lucide-wrench","/api/utils","3.api/4.utils",[147,151],{"title":148,"path":149,"stem":150},"Type Guards","/api/utils/type-guards","3.api/4.utils/1.type-guards",{"title":152,"path":153,"stem":154},"Directives","/api/utils/directives","3.api/4.utils/2.directives",{"title":156,"icon":157,"path":158,"stem":159,"children":160,"page":47},"Advanced","i-lucide-brain-circuit","/api/advanced","3.api/5.advanced",[161,165,169],{"title":162,"path":163,"stem":164},"Scaling Performance 🚀","/api/advanced/performance","3.api/5.advanced/performance",{"title":166,"path":167,"stem":168},"Primitives","/api/advanced/primitives","3.api/5.advanced/primitives",{"title":170,"path":171,"stem":172},"WebGPU","/api/advanced/web-gpu","3.api/5.advanced/web-gpu",{"title":174,"path":175,"stem":176,"children":177},"Cookbook","/cookbook","4.cookbook",[178,181,185,189,193,197,201],{"title":179,"path":175,"stem":180},"Cookbook 🍳🧑‍🍳","4.cookbook/index",{"title":182,"path":183,"stem":184},"OrbitControls","/cookbook/orbit-controls","4.cookbook/1.orbit-controls",{"title":186,"path":187,"stem":188},"Basic Animations","/cookbook/basic-animations","4.cookbook/2.basic-animations",{"title":190,"path":191,"stem":192},"Model Animation","/cookbook/model-animation","4.cookbook/3.model-animation",{"title":194,"path":195,"stem":196},"Advanced GSAP Animations","/cookbook/advanced-gsap-animations","4.cookbook/4.advanced-gsap-animations",{"title":198,"path":199,"stem":200},"Tweakpane","/cookbook/tweakpane","4.cookbook/5.tweakpane",{"title":202,"path":203,"stem":204},"Dynamic components","/cookbook/transition-dynamic","4.cookbook/6.transition-dynamic",{"title":206,"path":207,"stem":208,"children":209},"Community","/community","5.community/1.index",[210,211],{"title":206,"path":207,"stem":208},{"title":212,"path":213,"stem":214},"Awesome Resources","/community/awesome-resources","5.community/awesome-resources",{"title":216,"path":217,"stem":218},"German Translation","/de","de",{"title":220,"path":221,"stem":222},"Spanish Translation","/es","es",{"title":224,"path":225,"stem":226},"French Translation","/fr","fr",{"title":228,"path":229,"stem":230},"Italian Translation","/it","it",{"title":232,"path":233,"stem":234},"Japanese Translation","/jp","jp",{"title":236,"path":237,"stem":238},"Chinese Translation","/zh","zh",{"id":240,"title":116,"body":241,"description":3337,"extension":3338,"links":3339,"meta":3340,"navigation":39,"path":117,"seo":3341,"stem":118,"__hash__":3342},"docs/3.api/2.composables/2.use-tres-context.md",{"type":242,"value":243,"toc":3321},"minimark",[244,252,257,277,596,601,1408,1412,1415,1809,1813,1816,1954,1958,1961,2237,2241,2246,2296,2302,2335,2341,2398,2402,2412,2512,2529,2533,3317],[245,246,247,248,251],"p",{},"The ",[249,250,116],"code",{}," composable provides complete access to the full TresJS context with all internal management systems, including advanced camera management, renderer control, and event handling. It's designed for advanced use cases where you need direct access to all TresJS internals.",[253,254,256],"h2",{"id":255},"usage","Usage",[258,259,260],"warning",{},[245,261,262,264,265,271,272,276],{},[249,263,116],{}," can only be used in child components of a ",[266,267,268],"a",{"href":94},[249,269,270],{},"TresCanvas"," component, as its data is provided by ",[266,273,274],{"href":94},[249,275,270],{},".",[278,279,284],"pre",{"className":280,"code":281,"language":282,"meta":283,"style":283},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useTresContext } from '@tresjs/core'\n\nconst { scene, renderer, camera, sizes, events } = useTresContext()\n\n// Access the camera management system\nconsole.log('Active camera:', camera.activeCamera.value)\nconsole.log('All cameras:', camera.cameras.value)\n\n// Access the complete renderer manager\nconsole.log('Render mode:', renderer.mode)\nconsole.log('Can invalidate:', renderer.canBeInvalidated.value)\n\n// Register a new camera\nconst myCamera = new PerspectiveCamera(75, 1, 0.1, 1000)\ncamera.registerCamera(myCamera, true) // Set as active\n","ts","",[249,285,286,319,325,370,375,382,418,449,454,460,487,518,523,529,570],{"__ignoreMap":283},[287,288,291,295,299,303,306,309,312,316],"span",{"class":289,"line":290},"line",1,[287,292,294],{"class":293},"s7zQu","import",[287,296,298],{"class":297},"sMK4o"," {",[287,300,302],{"class":301},"sTEyZ"," useTresContext",[287,304,305],{"class":297}," }",[287,307,308],{"class":293}," from",[287,310,311],{"class":297}," '",[287,313,315],{"class":314},"sfazB","@tresjs/core",[287,317,318],{"class":297},"'\n",[287,320,322],{"class":289,"line":321},2,[287,323,324],{"emptyLinePlaceholder":39},"\n",[287,326,328,332,334,337,340,343,345,348,350,353,355,358,361,364,367],{"class":289,"line":327},3,[287,329,331],{"class":330},"spNyl","const",[287,333,298],{"class":297},[287,335,336],{"class":301}," scene",[287,338,339],{"class":297},",",[287,341,342],{"class":301}," renderer",[287,344,339],{"class":297},[287,346,347],{"class":301}," camera",[287,349,339],{"class":297},[287,351,352],{"class":301}," sizes",[287,354,339],{"class":297},[287,356,357],{"class":301}," events ",[287,359,360],{"class":297},"}",[287,362,363],{"class":297}," =",[287,365,302],{"class":366},"s2Zo4",[287,368,369],{"class":301},"()\n",[287,371,373],{"class":289,"line":372},4,[287,374,324],{"emptyLinePlaceholder":39},[287,376,378],{"class":289,"line":377},5,[287,379,381],{"class":380},"sHwdD","// Access the camera management system\n",[287,383,385,388,390,393,396,399,402,404,406,408,410,413,415],{"class":289,"line":384},6,[287,386,387],{"class":301},"console",[287,389,276],{"class":297},[287,391,392],{"class":366},"log",[287,394,395],{"class":301},"(",[287,397,398],{"class":297},"'",[287,400,401],{"class":314},"Active camera:",[287,403,398],{"class":297},[287,405,339],{"class":297},[287,407,347],{"class":301},[287,409,276],{"class":297},[287,411,412],{"class":301},"activeCamera",[287,414,276],{"class":297},[287,416,417],{"class":301},"value)\n",[287,419,421,423,425,427,429,431,434,436,438,440,442,445,447],{"class":289,"line":420},7,[287,422,387],{"class":301},[287,424,276],{"class":297},[287,426,392],{"class":366},[287,428,395],{"class":301},[287,430,398],{"class":297},[287,432,433],{"class":314},"All cameras:",[287,435,398],{"class":297},[287,437,339],{"class":297},[287,439,347],{"class":301},[287,441,276],{"class":297},[287,443,444],{"class":301},"cameras",[287,446,276],{"class":297},[287,448,417],{"class":301},[287,450,452],{"class":289,"line":451},8,[287,453,324],{"emptyLinePlaceholder":39},[287,455,457],{"class":289,"line":456},9,[287,458,459],{"class":380},"// Access the complete renderer manager\n",[287,461,463,465,467,469,471,473,476,478,480,482,484],{"class":289,"line":462},10,[287,464,387],{"class":301},[287,466,276],{"class":297},[287,468,392],{"class":366},[287,470,395],{"class":301},[287,472,398],{"class":297},[287,474,475],{"class":314},"Render mode:",[287,477,398],{"class":297},[287,479,339],{"class":297},[287,481,342],{"class":301},[287,483,276],{"class":297},[287,485,486],{"class":301},"mode)\n",[287,488,490,492,494,496,498,500,503,505,507,509,511,514,516],{"class":289,"line":489},11,[287,491,387],{"class":301},[287,493,276],{"class":297},[287,495,392],{"class":366},[287,497,395],{"class":301},[287,499,398],{"class":297},[287,501,502],{"class":314},"Can invalidate:",[287,504,398],{"class":297},[287,506,339],{"class":297},[287,508,342],{"class":301},[287,510,276],{"class":297},[287,512,513],{"class":301},"canBeInvalidated",[287,515,276],{"class":297},[287,517,417],{"class":301},[287,519,521],{"class":289,"line":520},12,[287,522,324],{"emptyLinePlaceholder":39},[287,524,526],{"class":289,"line":525},13,[287,527,528],{"class":380},"// Register a new camera\n",[287,530,532,534,537,540,543,546,548,552,554,557,559,562,564,567],{"class":289,"line":531},14,[287,533,331],{"class":330},[287,535,536],{"class":301}," myCamera ",[287,538,539],{"class":297},"=",[287,541,542],{"class":297}," new",[287,544,545],{"class":366}," PerspectiveCamera",[287,547,395],{"class":301},[287,549,551],{"class":550},"sbssI","75",[287,553,339],{"class":297},[287,555,556],{"class":550}," 1",[287,558,339],{"class":297},[287,560,561],{"class":550}," 0.1",[287,563,339],{"class":297},[287,565,566],{"class":550}," 1000",[287,568,569],{"class":301},")\n",[287,571,573,576,578,581,584,586,590,593],{"class":289,"line":572},15,[287,574,575],{"class":301},"camera",[287,577,276],{"class":297},[287,579,580],{"class":366},"registerCamera",[287,582,583],{"class":301},"(myCamera",[287,585,339],{"class":297},[287,587,589],{"class":588},"sfNiH"," true",[287,591,592],{"class":301},") ",[287,594,595],{"class":380},"// Set as active\n",[597,598,600],"h3",{"id":599},"advanced-camera-management","Advanced Camera Management",[602,603,604,1293],"code-group",{},[278,605,610],{"className":606,"code":607,"filename":608,"language":609,"meta":283,"style":283},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { useTresContext } from '@tresjs/core'\nimport { OrthographicCamera, PerspectiveCamera } from 'three'\nimport { ref } from 'vue'\n\nconst { camera, sizes } = useTresContext()\n\nconst isPerspective = ref(true)\n\nconst switchCameraType = () => {\n  const currentPos = camera.activeCamera.value?.position.clone()\n\n  // Remove current cameras\n  camera.cameras.value.forEach(cam => camera.deregisterCamera(cam))\n\n  if (isPerspective.value) {\n    // Switch to orthographic\n    const orthoCam = new OrthographicCamera(-10, 10, 10, -10, 0.1, 1000)\n    if (currentPos) {\n      orthoCam.position.copy(currentPos)\n      orthoCam.lookAt(0, 0, 0)\n    }\n    camera.registerCamera(orthoCam, true)\n  }\n  else {\n    // Switch to perspective\n    const perspCam = new PerspectiveCamera(75, sizes.aspectRatio.value, 0.1, 1000)\n    if (currentPos) {\n      perspCam.position.copy(currentPos)\n      perspCam.lookAt(0, 0, 0)\n    }\n    camera.registerCamera(perspCam, true)\n  }\n\n  isPerspective.value = !isPerspective.value\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresMesh @click=\"switchCameraType\">\n    \u003CTresBoxGeometry />\n    \u003CTresMeshNormalMaterial />\n  \u003C/TresMesh>\n\u003C/template>\n","CameraController.vue","vue",[249,611,612,639,657,681,700,704,725,729,747,751,769,803,807,812,852,856,877,883,932,947,968,994,1000,1021,1027,1035,1041,1082,1095,1115,1138,1143,1163,1168,1173,1195,1201,1211,1216,1226,1252,1264,1274,1284],{"__ignoreMap":283},[287,613,614,617,621,624,627,629,632,634,636],{"class":289,"line":290},[287,615,616],{"class":297},"\u003C",[287,618,620],{"class":619},"swJcz","script",[287,622,623],{"class":330}," setup",[287,625,626],{"class":330}," lang",[287,628,539],{"class":297},[287,630,631],{"class":297},"\"",[287,633,282],{"class":314},[287,635,631],{"class":297},[287,637,638],{"class":297},">\n",[287,640,641,643,645,647,649,651,653,655],{"class":289,"line":321},[287,642,294],{"class":293},[287,644,298],{"class":297},[287,646,302],{"class":301},[287,648,305],{"class":297},[287,650,308],{"class":293},[287,652,311],{"class":297},[287,654,315],{"class":314},[287,656,318],{"class":297},[287,658,659,661,663,666,668,670,672,674,676,679],{"class":289,"line":327},[287,660,294],{"class":293},[287,662,298],{"class":297},[287,664,665],{"class":301}," OrthographicCamera",[287,667,339],{"class":297},[287,669,545],{"class":301},[287,671,305],{"class":297},[287,673,308],{"class":293},[287,675,311],{"class":297},[287,677,678],{"class":314},"three",[287,680,318],{"class":297},[287,682,683,685,687,690,692,694,696,698],{"class":289,"line":372},[287,684,294],{"class":293},[287,686,298],{"class":297},[287,688,689],{"class":301}," ref",[287,691,305],{"class":297},[287,693,308],{"class":293},[287,695,311],{"class":297},[287,697,609],{"class":314},[287,699,318],{"class":297},[287,701,702],{"class":289,"line":377},[287,703,324],{"emptyLinePlaceholder":39},[287,705,706,708,710,712,714,717,719,721,723],{"class":289,"line":384},[287,707,331],{"class":330},[287,709,298],{"class":297},[287,711,347],{"class":301},[287,713,339],{"class":297},[287,715,716],{"class":301}," sizes ",[287,718,360],{"class":297},[287,720,363],{"class":297},[287,722,302],{"class":366},[287,724,369],{"class":301},[287,726,727],{"class":289,"line":420},[287,728,324],{"emptyLinePlaceholder":39},[287,730,731,733,736,738,740,742,745],{"class":289,"line":451},[287,732,331],{"class":330},[287,734,735],{"class":301}," isPerspective ",[287,737,539],{"class":297},[287,739,689],{"class":366},[287,741,395],{"class":301},[287,743,744],{"class":588},"true",[287,746,569],{"class":301},[287,748,749],{"class":289,"line":456},[287,750,324],{"emptyLinePlaceholder":39},[287,752,753,755,758,760,763,766],{"class":289,"line":462},[287,754,331],{"class":330},[287,756,757],{"class":301}," switchCameraType ",[287,759,539],{"class":297},[287,761,762],{"class":297}," ()",[287,764,765],{"class":330}," =>",[287,767,768],{"class":297}," {\n",[287,770,771,774,777,779,781,783,785,787,790,793,796,798,801],{"class":289,"line":489},[287,772,773],{"class":330},"  const",[287,775,776],{"class":301}," currentPos",[287,778,363],{"class":297},[287,780,347],{"class":301},[287,782,276],{"class":297},[287,784,412],{"class":301},[287,786,276],{"class":297},[287,788,789],{"class":301},"value",[287,791,792],{"class":297},"?.",[287,794,795],{"class":301},"position",[287,797,276],{"class":297},[287,799,800],{"class":366},"clone",[287,802,369],{"class":619},[287,804,805],{"class":289,"line":520},[287,806,324],{"emptyLinePlaceholder":39},[287,808,809],{"class":289,"line":525},[287,810,811],{"class":380},"  // Remove current cameras\n",[287,813,814,817,819,821,823,825,827,830,832,836,838,840,842,845,847,849],{"class":289,"line":531},[287,815,816],{"class":301},"  camera",[287,818,276],{"class":297},[287,820,444],{"class":301},[287,822,276],{"class":297},[287,824,789],{"class":301},[287,826,276],{"class":297},[287,828,829],{"class":366},"forEach",[287,831,395],{"class":619},[287,833,835],{"class":834},"sHdIc","cam",[287,837,765],{"class":330},[287,839,347],{"class":301},[287,841,276],{"class":297},[287,843,844],{"class":366},"deregisterCamera",[287,846,395],{"class":619},[287,848,835],{"class":301},[287,850,851],{"class":619},"))\n",[287,853,854],{"class":289,"line":572},[287,855,324],{"emptyLinePlaceholder":39},[287,857,859,862,865,868,870,872,874],{"class":289,"line":858},16,[287,860,861],{"class":293},"  if",[287,863,864],{"class":619}," (",[287,866,867],{"class":301},"isPerspective",[287,869,276],{"class":297},[287,871,789],{"class":301},[287,873,592],{"class":619},[287,875,876],{"class":297},"{\n",[287,878,880],{"class":289,"line":879},17,[287,881,882],{"class":380},"    // Switch to orthographic\n",[287,884,886,889,892,894,896,898,900,903,906,908,911,913,915,917,920,922,924,926,928,930],{"class":289,"line":885},18,[287,887,888],{"class":330},"    const",[287,890,891],{"class":301}," orthoCam",[287,893,363],{"class":297},[287,895,542],{"class":297},[287,897,665],{"class":366},[287,899,395],{"class":619},[287,901,902],{"class":297},"-",[287,904,905],{"class":550},"10",[287,907,339],{"class":297},[287,909,910],{"class":550}," 10",[287,912,339],{"class":297},[287,914,910],{"class":550},[287,916,339],{"class":297},[287,918,919],{"class":297}," -",[287,921,905],{"class":550},[287,923,339],{"class":297},[287,925,561],{"class":550},[287,927,339],{"class":297},[287,929,566],{"class":550},[287,931,569],{"class":619},[287,933,935,938,940,943,945],{"class":289,"line":934},19,[287,936,937],{"class":293},"    if",[287,939,864],{"class":619},[287,941,942],{"class":301},"currentPos",[287,944,592],{"class":619},[287,946,876],{"class":297},[287,948,950,953,955,957,959,962,964,966],{"class":289,"line":949},20,[287,951,952],{"class":301},"      orthoCam",[287,954,276],{"class":297},[287,956,795],{"class":301},[287,958,276],{"class":297},[287,960,961],{"class":366},"copy",[287,963,395],{"class":619},[287,965,942],{"class":301},[287,967,569],{"class":619},[287,969,971,973,975,978,980,983,985,988,990,992],{"class":289,"line":970},21,[287,972,952],{"class":301},[287,974,276],{"class":297},[287,976,977],{"class":366},"lookAt",[287,979,395],{"class":619},[287,981,982],{"class":550},"0",[287,984,339],{"class":297},[287,986,987],{"class":550}," 0",[287,989,339],{"class":297},[287,991,987],{"class":550},[287,993,569],{"class":619},[287,995,997],{"class":289,"line":996},22,[287,998,999],{"class":297},"    }\n",[287,1001,1003,1006,1008,1010,1012,1015,1017,1019],{"class":289,"line":1002},23,[287,1004,1005],{"class":301},"    camera",[287,1007,276],{"class":297},[287,1009,580],{"class":366},[287,1011,395],{"class":619},[287,1013,1014],{"class":301},"orthoCam",[287,1016,339],{"class":297},[287,1018,589],{"class":588},[287,1020,569],{"class":619},[287,1022,1024],{"class":289,"line":1023},24,[287,1025,1026],{"class":297},"  }\n",[287,1028,1030,1033],{"class":289,"line":1029},25,[287,1031,1032],{"class":293},"  else",[287,1034,768],{"class":297},[287,1036,1038],{"class":289,"line":1037},26,[287,1039,1040],{"class":380},"    // Switch to perspective\n",[287,1042,1044,1046,1049,1051,1053,1055,1057,1059,1061,1063,1065,1068,1070,1072,1074,1076,1078,1080],{"class":289,"line":1043},27,[287,1045,888],{"class":330},[287,1047,1048],{"class":301}," perspCam",[287,1050,363],{"class":297},[287,1052,542],{"class":297},[287,1054,545],{"class":366},[287,1056,395],{"class":619},[287,1058,551],{"class":550},[287,1060,339],{"class":297},[287,1062,352],{"class":301},[287,1064,276],{"class":297},[287,1066,1067],{"class":301},"aspectRatio",[287,1069,276],{"class":297},[287,1071,789],{"class":301},[287,1073,339],{"class":297},[287,1075,561],{"class":550},[287,1077,339],{"class":297},[287,1079,566],{"class":550},[287,1081,569],{"class":619},[287,1083,1085,1087,1089,1091,1093],{"class":289,"line":1084},28,[287,1086,937],{"class":293},[287,1088,864],{"class":619},[287,1090,942],{"class":301},[287,1092,592],{"class":619},[287,1094,876],{"class":297},[287,1096,1098,1101,1103,1105,1107,1109,1111,1113],{"class":289,"line":1097},29,[287,1099,1100],{"class":301},"      perspCam",[287,1102,276],{"class":297},[287,1104,795],{"class":301},[287,1106,276],{"class":297},[287,1108,961],{"class":366},[287,1110,395],{"class":619},[287,1112,942],{"class":301},[287,1114,569],{"class":619},[287,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136],{"class":289,"line":1117},30,[287,1119,1100],{"class":301},[287,1121,276],{"class":297},[287,1123,977],{"class":366},[287,1125,395],{"class":619},[287,1127,982],{"class":550},[287,1129,339],{"class":297},[287,1131,987],{"class":550},[287,1133,339],{"class":297},[287,1135,987],{"class":550},[287,1137,569],{"class":619},[287,1139,1141],{"class":289,"line":1140},31,[287,1142,999],{"class":297},[287,1144,1146,1148,1150,1152,1154,1157,1159,1161],{"class":289,"line":1145},32,[287,1147,1005],{"class":301},[287,1149,276],{"class":297},[287,1151,580],{"class":366},[287,1153,395],{"class":619},[287,1155,1156],{"class":301},"perspCam",[287,1158,339],{"class":297},[287,1160,589],{"class":588},[287,1162,569],{"class":619},[287,1164,1166],{"class":289,"line":1165},33,[287,1167,1026],{"class":297},[287,1169,1171],{"class":289,"line":1170},34,[287,1172,324],{"emptyLinePlaceholder":39},[287,1174,1176,1179,1181,1183,1185,1188,1190,1192],{"class":289,"line":1175},35,[287,1177,1178],{"class":301},"  isPerspective",[287,1180,276],{"class":297},[287,1182,789],{"class":301},[287,1184,363],{"class":297},[287,1186,1187],{"class":297}," !",[287,1189,867],{"class":301},[287,1191,276],{"class":297},[287,1193,1194],{"class":301},"value\n",[287,1196,1198],{"class":289,"line":1197},36,[287,1199,1200],{"class":297},"}\n",[287,1202,1204,1207,1209],{"class":289,"line":1203},37,[287,1205,1206],{"class":297},"\u003C/",[287,1208,620],{"class":619},[287,1210,638],{"class":297},[287,1212,1214],{"class":289,"line":1213},38,[287,1215,324],{"emptyLinePlaceholder":39},[287,1217,1219,1221,1224],{"class":289,"line":1218},39,[287,1220,616],{"class":297},[287,1222,1223],{"class":619},"template",[287,1225,638],{"class":297},[287,1227,1229,1232,1235,1238,1241,1243,1245,1248,1250],{"class":289,"line":1228},40,[287,1230,1231],{"class":297},"  \u003C",[287,1233,1234],{"class":619},"TresMesh",[287,1236,1237],{"class":297}," @",[287,1239,1240],{"class":330},"click",[287,1242,539],{"class":297},[287,1244,631],{"class":297},[287,1246,1247],{"class":301},"switchCameraType",[287,1249,631],{"class":297},[287,1251,638],{"class":297},[287,1253,1255,1258,1261],{"class":289,"line":1254},41,[287,1256,1257],{"class":297},"    \u003C",[287,1259,1260],{"class":619},"TresBoxGeometry",[287,1262,1263],{"class":297}," />\n",[287,1265,1267,1269,1272],{"class":289,"line":1266},42,[287,1268,1257],{"class":297},[287,1270,1271],{"class":619},"TresMeshNormalMaterial",[287,1273,1263],{"class":297},[287,1275,1277,1280,1282],{"class":289,"line":1276},43,[287,1278,1279],{"class":297},"  \u003C/",[287,1281,1234],{"class":619},[287,1283,638],{"class":297},[287,1285,1287,1289,1291],{"class":289,"line":1286},44,[287,1288,1206],{"class":297},[287,1290,1223],{"class":619},[287,1292,638],{"class":297},[278,1294,1297],{"className":606,"code":1295,"filename":1296,"language":609,"meta":283,"style":283},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport CameraController from './CameraController.vue'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CCameraController />\n  \u003C/TresCanvas>\n\u003C/template>\n","App.vue",[249,1298,1299,1319,1338,1355,1363,1367,1375,1383,1392,1400],{"__ignoreMap":283},[287,1300,1301,1303,1305,1307,1309,1311,1313,1315,1317],{"class":289,"line":290},[287,1302,616],{"class":297},[287,1304,620],{"class":619},[287,1306,623],{"class":330},[287,1308,626],{"class":330},[287,1310,539],{"class":297},[287,1312,631],{"class":297},[287,1314,282],{"class":314},[287,1316,631],{"class":297},[287,1318,638],{"class":297},[287,1320,1321,1323,1325,1328,1330,1332,1334,1336],{"class":289,"line":321},[287,1322,294],{"class":293},[287,1324,298],{"class":297},[287,1326,1327],{"class":301}," TresCanvas",[287,1329,305],{"class":297},[287,1331,308],{"class":293},[287,1333,311],{"class":297},[287,1335,315],{"class":314},[287,1337,318],{"class":297},[287,1339,1340,1342,1345,1348,1350,1353],{"class":289,"line":327},[287,1341,294],{"class":293},[287,1343,1344],{"class":301}," CameraController ",[287,1346,1347],{"class":293},"from",[287,1349,311],{"class":297},[287,1351,1352],{"class":314},"./CameraController.vue",[287,1354,318],{"class":297},[287,1356,1357,1359,1361],{"class":289,"line":372},[287,1358,1206],{"class":297},[287,1360,620],{"class":619},[287,1362,638],{"class":297},[287,1364,1365],{"class":289,"line":377},[287,1366,324],{"emptyLinePlaceholder":39},[287,1368,1369,1371,1373],{"class":289,"line":384},[287,1370,616],{"class":297},[287,1372,1223],{"class":619},[287,1374,638],{"class":297},[287,1376,1377,1379,1381],{"class":289,"line":420},[287,1378,1231],{"class":297},[287,1380,270],{"class":619},[287,1382,638],{"class":297},[287,1384,1385,1387,1390],{"class":289,"line":451},[287,1386,1257],{"class":297},[287,1388,1389],{"class":619},"CameraController",[287,1391,1263],{"class":297},[287,1393,1394,1396,1398],{"class":289,"line":456},[287,1395,1279],{"class":297},[287,1397,270],{"class":619},[287,1399,638],{"class":297},[287,1401,1402,1404,1406],{"class":289,"line":462},[287,1403,1206],{"class":297},[287,1405,1223],{"class":619},[287,1407,638],{"class":297},[597,1409,1411],{"id":1410},"advanced-renderer-control","Advanced Renderer Control",[245,1413,1414],{},"Use the full renderer manager for sophisticated rendering control:",[278,1416,1418],{"className":606,"code":1417,"language":609,"meta":283,"style":283},"\u003Cscript setup lang=\"ts\">\nimport { useTresContext } from '@tresjs/core'\nimport { watchEffect } from 'vue'\n\nconst { renderer, sizes } = useTresContext()\n\n// Access advanced renderer properties\nwatchEffect(() => {\n  console.log('Render mode:', renderer.mode)\n  console.log('Can be invalidated:', renderer.canBeInvalidated.value)\n  console.log('Render loop active:', renderer.loop.isActive.value)\n})\n\n// Register custom render callbacks\nrenderer.onRender((rendererInstance) => {\n  console.log('Frame rendered with:', rendererInstance)\n})\n\nrenderer.onReady((rendererInstance) => {\n  console.log('Renderer ready:', rendererInstance)\n  // Setup custom post-processing here\n})\n\n// Advanced frame control\nconst triggerMultipleFrames = () => {\n  // Invalidate with custom frame count with on-demand mode\n  renderer.invalidate(5) // Render next 5 frames\n}\n\u003C/script>\n",[249,1419,1420,1440,1458,1477,1481,1501,1505,1510,1524,1552,1583,1620,1626,1630,1635,1659,1683,1689,1693,1714,1737,1742,1748,1752,1757,1772,1777,1797,1801],{"__ignoreMap":283},[287,1421,1422,1424,1426,1428,1430,1432,1434,1436,1438],{"class":289,"line":290},[287,1423,616],{"class":297},[287,1425,620],{"class":619},[287,1427,623],{"class":330},[287,1429,626],{"class":330},[287,1431,539],{"class":297},[287,1433,631],{"class":297},[287,1435,282],{"class":314},[287,1437,631],{"class":297},[287,1439,638],{"class":297},[287,1441,1442,1444,1446,1448,1450,1452,1454,1456],{"class":289,"line":321},[287,1443,294],{"class":293},[287,1445,298],{"class":297},[287,1447,302],{"class":301},[287,1449,305],{"class":297},[287,1451,308],{"class":293},[287,1453,311],{"class":297},[287,1455,315],{"class":314},[287,1457,318],{"class":297},[287,1459,1460,1462,1464,1467,1469,1471,1473,1475],{"class":289,"line":327},[287,1461,294],{"class":293},[287,1463,298],{"class":297},[287,1465,1466],{"class":301}," watchEffect",[287,1468,305],{"class":297},[287,1470,308],{"class":293},[287,1472,311],{"class":297},[287,1474,609],{"class":314},[287,1476,318],{"class":297},[287,1478,1479],{"class":289,"line":372},[287,1480,324],{"emptyLinePlaceholder":39},[287,1482,1483,1485,1487,1489,1491,1493,1495,1497,1499],{"class":289,"line":377},[287,1484,331],{"class":330},[287,1486,298],{"class":297},[287,1488,342],{"class":301},[287,1490,339],{"class":297},[287,1492,716],{"class":301},[287,1494,360],{"class":297},[287,1496,363],{"class":297},[287,1498,302],{"class":366},[287,1500,369],{"class":301},[287,1502,1503],{"class":289,"line":384},[287,1504,324],{"emptyLinePlaceholder":39},[287,1506,1507],{"class":289,"line":420},[287,1508,1509],{"class":380},"// Access advanced renderer properties\n",[287,1511,1512,1515,1517,1520,1522],{"class":289,"line":451},[287,1513,1514],{"class":366},"watchEffect",[287,1516,395],{"class":301},[287,1518,1519],{"class":297},"()",[287,1521,765],{"class":330},[287,1523,768],{"class":297},[287,1525,1526,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1550],{"class":289,"line":456},[287,1527,1528],{"class":301},"  console",[287,1530,276],{"class":297},[287,1532,392],{"class":366},[287,1534,395],{"class":619},[287,1536,398],{"class":297},[287,1538,475],{"class":314},[287,1540,398],{"class":297},[287,1542,339],{"class":297},[287,1544,342],{"class":301},[287,1546,276],{"class":297},[287,1548,1549],{"class":301},"mode",[287,1551,569],{"class":619},[287,1553,1554,1556,1558,1560,1562,1564,1567,1569,1571,1573,1575,1577,1579,1581],{"class":289,"line":462},[287,1555,1528],{"class":301},[287,1557,276],{"class":297},[287,1559,392],{"class":366},[287,1561,395],{"class":619},[287,1563,398],{"class":297},[287,1565,1566],{"class":314},"Can be invalidated:",[287,1568,398],{"class":297},[287,1570,339],{"class":297},[287,1572,342],{"class":301},[287,1574,276],{"class":297},[287,1576,513],{"class":301},[287,1578,276],{"class":297},[287,1580,789],{"class":301},[287,1582,569],{"class":619},[287,1584,1585,1587,1589,1591,1593,1595,1598,1600,1602,1604,1606,1609,1611,1614,1616,1618],{"class":289,"line":489},[287,1586,1528],{"class":301},[287,1588,276],{"class":297},[287,1590,392],{"class":366},[287,1592,395],{"class":619},[287,1594,398],{"class":297},[287,1596,1597],{"class":314},"Render loop active:",[287,1599,398],{"class":297},[287,1601,339],{"class":297},[287,1603,342],{"class":301},[287,1605,276],{"class":297},[287,1607,1608],{"class":301},"loop",[287,1610,276],{"class":297},[287,1612,1613],{"class":301},"isActive",[287,1615,276],{"class":297},[287,1617,789],{"class":301},[287,1619,569],{"class":619},[287,1621,1622,1624],{"class":289,"line":520},[287,1623,360],{"class":297},[287,1625,569],{"class":301},[287,1627,1628],{"class":289,"line":525},[287,1629,324],{"emptyLinePlaceholder":39},[287,1631,1632],{"class":289,"line":531},[287,1633,1634],{"class":380},"// Register custom render callbacks\n",[287,1636,1637,1640,1642,1645,1647,1649,1652,1655,1657],{"class":289,"line":572},[287,1638,1639],{"class":301},"renderer",[287,1641,276],{"class":297},[287,1643,1644],{"class":366},"onRender",[287,1646,395],{"class":301},[287,1648,395],{"class":297},[287,1650,1651],{"class":834},"rendererInstance",[287,1653,1654],{"class":297},")",[287,1656,765],{"class":330},[287,1658,768],{"class":297},[287,1660,1661,1663,1665,1667,1669,1671,1674,1676,1678,1681],{"class":289,"line":858},[287,1662,1528],{"class":301},[287,1664,276],{"class":297},[287,1666,392],{"class":366},[287,1668,395],{"class":619},[287,1670,398],{"class":297},[287,1672,1673],{"class":314},"Frame rendered with:",[287,1675,398],{"class":297},[287,1677,339],{"class":297},[287,1679,1680],{"class":301}," rendererInstance",[287,1682,569],{"class":619},[287,1684,1685,1687],{"class":289,"line":879},[287,1686,360],{"class":297},[287,1688,569],{"class":301},[287,1690,1691],{"class":289,"line":885},[287,1692,324],{"emptyLinePlaceholder":39},[287,1694,1695,1697,1699,1702,1704,1706,1708,1710,1712],{"class":289,"line":934},[287,1696,1639],{"class":301},[287,1698,276],{"class":297},[287,1700,1701],{"class":366},"onReady",[287,1703,395],{"class":301},[287,1705,395],{"class":297},[287,1707,1651],{"class":834},[287,1709,1654],{"class":297},[287,1711,765],{"class":330},[287,1713,768],{"class":297},[287,1715,1716,1718,1720,1722,1724,1726,1729,1731,1733,1735],{"class":289,"line":949},[287,1717,1528],{"class":301},[287,1719,276],{"class":297},[287,1721,392],{"class":366},[287,1723,395],{"class":619},[287,1725,398],{"class":297},[287,1727,1728],{"class":314},"Renderer ready:",[287,1730,398],{"class":297},[287,1732,339],{"class":297},[287,1734,1680],{"class":301},[287,1736,569],{"class":619},[287,1738,1739],{"class":289,"line":970},[287,1740,1741],{"class":380},"  // Setup custom post-processing here\n",[287,1743,1744,1746],{"class":289,"line":996},[287,1745,360],{"class":297},[287,1747,569],{"class":301},[287,1749,1750],{"class":289,"line":1002},[287,1751,324],{"emptyLinePlaceholder":39},[287,1753,1754],{"class":289,"line":1023},[287,1755,1756],{"class":380},"// Advanced frame control\n",[287,1758,1759,1761,1764,1766,1768,1770],{"class":289,"line":1029},[287,1760,331],{"class":330},[287,1762,1763],{"class":301}," triggerMultipleFrames ",[287,1765,539],{"class":297},[287,1767,762],{"class":297},[287,1769,765],{"class":330},[287,1771,768],{"class":297},[287,1773,1774],{"class":289,"line":1037},[287,1775,1776],{"class":380},"  // Invalidate with custom frame count with on-demand mode\n",[287,1778,1779,1782,1784,1787,1789,1792,1794],{"class":289,"line":1043},[287,1780,1781],{"class":301},"  renderer",[287,1783,276],{"class":297},[287,1785,1786],{"class":366},"invalidate",[287,1788,395],{"class":619},[287,1790,1791],{"class":550},"5",[287,1793,592],{"class":619},[287,1795,1796],{"class":380},"// Render next 5 frames\n",[287,1798,1799],{"class":289,"line":1084},[287,1800,1200],{"class":297},[287,1802,1803,1805,1807],{"class":289,"line":1097},[287,1804,1206],{"class":297},[287,1806,620],{"class":619},[287,1808,638],{"class":297},[597,1810,1812],{"id":1811},"event-system-integration","Event System Integration",[245,1814,1815],{},"Access the complete event management system:",[278,1817,1819],{"className":606,"code":1818,"language":609,"meta":283,"style":283},"\u003Cscript setup lang=\"ts\">\nimport { useTresContext } from '@tresjs/core'\n\nconst { events } = useTresContext()\n\n// Handle global pointer missed events\nevents.onPointerMissed((event) => {\n  console.log('Clicked on empty space:', event)\n  // Deselect objects, close menus, etc.\n})\n\u003C/script>\n",[249,1820,1821,1841,1859,1863,1879,1883,1888,1911,1935,1940,1946],{"__ignoreMap":283},[287,1822,1823,1825,1827,1829,1831,1833,1835,1837,1839],{"class":289,"line":290},[287,1824,616],{"class":297},[287,1826,620],{"class":619},[287,1828,623],{"class":330},[287,1830,626],{"class":330},[287,1832,539],{"class":297},[287,1834,631],{"class":297},[287,1836,282],{"class":314},[287,1838,631],{"class":297},[287,1840,638],{"class":297},[287,1842,1843,1845,1847,1849,1851,1853,1855,1857],{"class":289,"line":321},[287,1844,294],{"class":293},[287,1846,298],{"class":297},[287,1848,302],{"class":301},[287,1850,305],{"class":297},[287,1852,308],{"class":293},[287,1854,311],{"class":297},[287,1856,315],{"class":314},[287,1858,318],{"class":297},[287,1860,1861],{"class":289,"line":327},[287,1862,324],{"emptyLinePlaceholder":39},[287,1864,1865,1867,1869,1871,1873,1875,1877],{"class":289,"line":372},[287,1866,331],{"class":330},[287,1868,298],{"class":297},[287,1870,357],{"class":301},[287,1872,360],{"class":297},[287,1874,363],{"class":297},[287,1876,302],{"class":366},[287,1878,369],{"class":301},[287,1880,1881],{"class":289,"line":377},[287,1882,324],{"emptyLinePlaceholder":39},[287,1884,1885],{"class":289,"line":384},[287,1886,1887],{"class":380},"// Handle global pointer missed events\n",[287,1889,1890,1893,1895,1898,1900,1902,1905,1907,1909],{"class":289,"line":420},[287,1891,1892],{"class":301},"events",[287,1894,276],{"class":297},[287,1896,1897],{"class":366},"onPointerMissed",[287,1899,395],{"class":301},[287,1901,395],{"class":297},[287,1903,1904],{"class":834},"event",[287,1906,1654],{"class":297},[287,1908,765],{"class":330},[287,1910,768],{"class":297},[287,1912,1913,1915,1917,1919,1921,1923,1926,1928,1930,1933],{"class":289,"line":451},[287,1914,1528],{"class":301},[287,1916,276],{"class":297},[287,1918,392],{"class":366},[287,1920,395],{"class":619},[287,1922,398],{"class":297},[287,1924,1925],{"class":314},"Clicked on empty space:",[287,1927,398],{"class":297},[287,1929,339],{"class":297},[287,1931,1932],{"class":301}," event",[287,1934,569],{"class":619},[287,1936,1937],{"class":289,"line":456},[287,1938,1939],{"class":380},"  // Deselect objects, close menus, etc.\n",[287,1941,1942,1944],{"class":289,"line":462},[287,1943,360],{"class":297},[287,1945,569],{"class":301},[287,1947,1948,1950,1952],{"class":289,"line":489},[287,1949,1206],{"class":297},[287,1951,620],{"class":619},[287,1953,638],{"class":297},[597,1955,1957],{"id":1956},"custom-renderer-setup","Custom Renderer Setup",[245,1959,1960],{},"For complete control over renderer initialization:",[278,1962,1964],{"className":606,"code":1963,"language":609,"meta":283,"style":283},"\u003Cscript setup lang=\"ts\">\nimport { useTresContext } from '@tresjs/core'\nimport { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer'\nimport { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'\n\nconst { renderer, scene, camera } = useTresContext()\n\n// Access the raw renderer instance\nconst rawRenderer = renderer.instance\n\n// Setup advanced post-processing pipeline\nconst composer = new EffectComposer(rawRenderer)\nconst renderPass = new RenderPass(scene.value, camera.activeCamera.value!)\ncomposer.addPass(renderPass)\n\n// Take over the render function\nrenderer.replaceRenderFunction((notifyComplete) => {\n  composer.render()\n  notifyComplete()\n})\n\u003C/script>\n",[249,1965,1966,1986,2004,2024,2044,2048,2073,2077,2082,2098,2102,2107,2123,2160,2173,2177,2182,2204,2216,2223,2229],{"__ignoreMap":283},[287,1967,1968,1970,1972,1974,1976,1978,1980,1982,1984],{"class":289,"line":290},[287,1969,616],{"class":297},[287,1971,620],{"class":619},[287,1973,623],{"class":330},[287,1975,626],{"class":330},[287,1977,539],{"class":297},[287,1979,631],{"class":297},[287,1981,282],{"class":314},[287,1983,631],{"class":297},[287,1985,638],{"class":297},[287,1987,1988,1990,1992,1994,1996,1998,2000,2002],{"class":289,"line":321},[287,1989,294],{"class":293},[287,1991,298],{"class":297},[287,1993,302],{"class":301},[287,1995,305],{"class":297},[287,1997,308],{"class":293},[287,1999,311],{"class":297},[287,2001,315],{"class":314},[287,2003,318],{"class":297},[287,2005,2006,2008,2010,2013,2015,2017,2019,2022],{"class":289,"line":327},[287,2007,294],{"class":293},[287,2009,298],{"class":297},[287,2011,2012],{"class":301}," EffectComposer",[287,2014,305],{"class":297},[287,2016,308],{"class":293},[287,2018,311],{"class":297},[287,2020,2021],{"class":314},"three/examples/jsm/postprocessing/EffectComposer",[287,2023,318],{"class":297},[287,2025,2026,2028,2030,2033,2035,2037,2039,2042],{"class":289,"line":372},[287,2027,294],{"class":293},[287,2029,298],{"class":297},[287,2031,2032],{"class":301}," RenderPass",[287,2034,305],{"class":297},[287,2036,308],{"class":293},[287,2038,311],{"class":297},[287,2040,2041],{"class":314},"three/examples/jsm/postprocessing/RenderPass",[287,2043,318],{"class":297},[287,2045,2046],{"class":289,"line":377},[287,2047,324],{"emptyLinePlaceholder":39},[287,2049,2050,2052,2054,2056,2058,2060,2062,2065,2067,2069,2071],{"class":289,"line":384},[287,2051,331],{"class":330},[287,2053,298],{"class":297},[287,2055,342],{"class":301},[287,2057,339],{"class":297},[287,2059,336],{"class":301},[287,2061,339],{"class":297},[287,2063,2064],{"class":301}," camera ",[287,2066,360],{"class":297},[287,2068,363],{"class":297},[287,2070,302],{"class":366},[287,2072,369],{"class":301},[287,2074,2075],{"class":289,"line":420},[287,2076,324],{"emptyLinePlaceholder":39},[287,2078,2079],{"class":289,"line":451},[287,2080,2081],{"class":380},"// Access the raw renderer instance\n",[287,2083,2084,2086,2089,2091,2093,2095],{"class":289,"line":456},[287,2085,331],{"class":330},[287,2087,2088],{"class":301}," rawRenderer ",[287,2090,539],{"class":297},[287,2092,342],{"class":301},[287,2094,276],{"class":297},[287,2096,2097],{"class":301},"instance\n",[287,2099,2100],{"class":289,"line":462},[287,2101,324],{"emptyLinePlaceholder":39},[287,2103,2104],{"class":289,"line":489},[287,2105,2106],{"class":380},"// Setup advanced post-processing pipeline\n",[287,2108,2109,2111,2114,2116,2118,2120],{"class":289,"line":520},[287,2110,331],{"class":330},[287,2112,2113],{"class":301}," composer ",[287,2115,539],{"class":297},[287,2117,542],{"class":297},[287,2119,2012],{"class":366},[287,2121,2122],{"class":301},"(rawRenderer)\n",[287,2124,2125,2127,2130,2132,2134,2136,2139,2141,2143,2145,2147,2149,2151,2153,2155,2158],{"class":289,"line":525},[287,2126,331],{"class":330},[287,2128,2129],{"class":301}," renderPass ",[287,2131,539],{"class":297},[287,2133,542],{"class":297},[287,2135,2032],{"class":366},[287,2137,2138],{"class":301},"(scene",[287,2140,276],{"class":297},[287,2142,789],{"class":301},[287,2144,339],{"class":297},[287,2146,347],{"class":301},[287,2148,276],{"class":297},[287,2150,412],{"class":301},[287,2152,276],{"class":297},[287,2154,789],{"class":301},[287,2156,2157],{"class":297},"!",[287,2159,569],{"class":301},[287,2161,2162,2165,2167,2170],{"class":289,"line":531},[287,2163,2164],{"class":301},"composer",[287,2166,276],{"class":297},[287,2168,2169],{"class":366},"addPass",[287,2171,2172],{"class":301},"(renderPass)\n",[287,2174,2175],{"class":289,"line":572},[287,2176,324],{"emptyLinePlaceholder":39},[287,2178,2179],{"class":289,"line":858},[287,2180,2181],{"class":380},"// Take over the render function\n",[287,2183,2184,2186,2188,2191,2193,2195,2198,2200,2202],{"class":289,"line":879},[287,2185,1639],{"class":301},[287,2187,276],{"class":297},[287,2189,2190],{"class":366},"replaceRenderFunction",[287,2192,395],{"class":301},[287,2194,395],{"class":297},[287,2196,2197],{"class":834},"notifyComplete",[287,2199,1654],{"class":297},[287,2201,765],{"class":330},[287,2203,768],{"class":297},[287,2205,2206,2209,2211,2214],{"class":289,"line":885},[287,2207,2208],{"class":301},"  composer",[287,2210,276],{"class":297},[287,2212,2213],{"class":366},"render",[287,2215,369],{"class":619},[287,2217,2218,2221],{"class":289,"line":934},[287,2219,2220],{"class":366},"  notifyComplete",[287,2222,369],{"class":619},[287,2224,2225,2227],{"class":289,"line":949},[287,2226,360],{"class":297},[287,2228,569],{"class":301},[287,2230,2231,2233,2235],{"class":289,"line":970},[287,2232,1206],{"class":297},[287,2234,620],{"class":619},[287,2236,638],{"class":297},[253,2238,2240],{"id":2239},"properties","Properties",[245,2242,247,2243,2245],{},[249,2244,116],{}," composable returns the complete TresJS context with the following properties:",[2247,2248,2249,2257,2264,2271,2277,2284,2290],"field-group",{},[2250,2251,2254],"field",{"name":2252,"type":2253},"scene","ShallowRef\u003CTresScene>",[245,2255,2256],{},"The Three.js scene object containing all 3D objects in your scene.",[2250,2258,2261],{"name":2259,"type":2260},"sizes","SizesType",[245,2262,2263],{},"Reactive size information including canvas width, height, aspect ratio, and pixel ratio.",[2250,2265,2268],{"name":2266,"type":2267},"extend","(objects: any) => void",[245,2269,2270],{},"Function to extend the TresJS component catalogue with custom Three.js objects.",[2250,2272,2274],{"name":575,"type":2273},"UseCameraReturn",[245,2275,2276],{},"Complete camera management system with registration, deregistration, and active camera control.",[2250,2278,2281],{"name":2279,"type":2280},"controls","Ref\u003CTresControl | null>",[245,2282,2283],{},"Reference to the current camera controls instance (e.g., OrbitControls, FlyControls).",[2250,2285,2287],{"name":1639,"type":2286},"UseRendererManagerReturn",[245,2288,2289],{},"Complete renderer management system with advanced rendering control, frame management, and event hooks.",[2250,2291,2293],{"name":1892,"type":2292},"EventManager",[245,2294,2295],{},"Complete event management system for handling pointer interactions and global events.",[597,2297,2299,2300,1654],{"id":2298},"camera-management-system-camera","Camera Management System (",[249,2301,575],{},[2247,2303,2304,2310,2316,2322,2328],{},[2250,2305,2307],{"name":412,"type":2306},"ComputedRef\u003CTresCamera>",[245,2308,2309],{},"The currently active camera in the scene. Always guaranteed to exist.",[2250,2311,2313],{"name":444,"type":2312},"Ref\u003CTresCamera[]>",[245,2314,2315],{},"Array of all registered cameras in the scene.",[2250,2317,2319],{"name":580,"type":2318},"(camera: TresCamera, active?: boolean) => void",[245,2320,2321],{},"Register a new camera in the scene. Optionally set it as the active camera.",[2250,2323,2325],{"name":844,"type":2324},"(camera: TresCamera) => void",[245,2326,2327],{},"Remove a camera from the scene management system.",[2250,2329,2332],{"name":2330,"type":2331},"setActiveCamera","(cameraOrUuid: string | TresCamera) => void",[245,2333,2334],{},"Set a specific camera as the active one using camera instance or UUID.",[597,2336,2338,2339,1654],{"id":2337},"renderer-management-system-renderer","Renderer Management System (",[249,2340,1639],{},[2247,2342,2343,2350,2356,2363,2369,2375,2381,2387,2392],{},[2250,2344,2347],{"name":2345,"type":2346},"instance","TresRenderer",[245,2348,2349],{},"The raw Three.js WebGL renderer instance.",[2250,2351,2353],{"name":1608,"type":2352},"RafLoop",[245,2354,2355],{},"The render loop system with start, stop, and event hooks.",[2250,2357,2360],{"name":2358,"type":2359},"advance","() => void",[245,2361,2362],{},"Manually advance one frame in manual render mode.",[2250,2364,2366],{"name":1786,"type":2365},"(frames?: number) => void",[245,2367,2368],{},"Mark the scene for re-rendering in on-demand mode. Optional frame count parameter.",[2250,2370,2372],{"name":513,"type":2371},"ComputedRef\u003Cboolean>",[245,2373,2374],{},"Whether the renderer can currently be invalidated (on-demand mode only).",[2250,2376,2378],{"name":1549,"type":2377},"RenderMode",[245,2379,2380],{},"Current render mode: 'always', 'on-demand', or 'manual'.",[2250,2382,2384],{"name":1701,"type":2383},"(callback: (renderer: TresRenderer) => void) => void",[245,2385,2386],{},"Register a callback for when the renderer is fully initialized.",[2250,2388,2389],{"name":1644,"type":2383},[245,2390,2391],{},"Register a callback that fires after each frame is rendered.",[2250,2393,2395],{"name":2190,"type":2394},"(fn: RenderFunction) => void",[245,2396,2397],{},"Take complete control over the rendering process with a custom render function.",[253,2399,2401],{"id":2400},"difference-from-usetres","Difference from useTres",[245,2403,2404,2406,2407,2411],{},[249,2405,116],{}," provides complete access to all TresJS internals compared to the simplified ",[266,2408,2409],{"href":113},[249,2410,112],{}," interface.",[2413,2414,2415,2429],"table",{},[2416,2417,2418],"thead",{},[2419,2420,2421,2425,2427],"tr",{},[2422,2423,2424],"th",{},"Feature",[2422,2426,116],{},[2422,2428,112],{},[2430,2431,2432,2447,2460,2473,2486,2499],"tbody",{},[2419,2433,2434,2441,2444],{},[2435,2436,2437],"td",{},[2438,2439,2440],"strong",{},"Renderer",[2435,2442,2443],{},"Complete renderer manager with advanced controls",[2435,2445,2446],{},"Direct renderer instance only",[2419,2448,2449,2454,2457],{},[2435,2450,2451],{},[2438,2452,2453],{},"Camera",[2435,2455,2456],{},"Full camera management system with registration/switching",[2435,2458,2459],{},"Active camera reference only",[2419,2461,2462,2467,2470],{},[2435,2463,2464],{},[2438,2465,2466],{},"Complexity",[2435,2468,2469],{},"Complete internal access, all management features",[2435,2471,2472],{},"Simplified, focused API",[2419,2474,2475,2480,2483],{},[2435,2476,2477],{},[2438,2478,2479],{},"Use Case",[2435,2481,2482],{},"Advanced scenarios, plugin development, internal operations",[2435,2484,2485],{},"Most common 3D scene interactions",[2419,2487,2488,2493,2496],{},[2435,2489,2490],{},[2438,2491,2492],{},"Performance Control",[2435,2494,2495],{},"Fine-grained frame control, custom render functions",[2435,2497,2498],{},"Basic invalidate/advance only",[2419,2500,2501,2506,2509],{},[2435,2502,2503],{},[2438,2504,2505],{},"Event Handling",[2435,2507,2508],{},"Complete event management system",[2435,2510,2511],{},"Basic event manager access",[2513,2514,2515],"tip",{},[245,2516,2517,2520,2521,2523,2524,2528],{},[2438,2518,2519],{},"Developer Tip:","\nChoose ",[249,2522,116],{}," for advanced 3D applications, plugin development, or when you need complete control over the rendering pipeline. Use ",[266,2525,2526],{"href":113},[249,2527,112],{}," for typical 3D scene interactions.",[253,2530,2532],{"id":2531},"type","Type",[278,2534,2537],{"className":280,"code":2535,"filename":2536,"language":282,"meta":283,"style":283},"function useTresContext(): TresContext\n\ninterface TresContext {\n  /** The Three.js scene object containing all 3D objects */\n  scene: ShallowRef\u003CTresScene>\n  /** Reactive size information for the canvas */\n  sizes: SizesType\n  /** TresJS extension function for adding custom objects */\n  extend: (objects: any) => void\n  /** Complete camera management system */\n  camera: UseCameraReturn\n  /** Reference to current camera controls */\n  controls: Ref\u003CTresControl | null>\n  /** Complete renderer management system */\n  renderer: UseRendererManagerReturn\n  /** Complete event management system */\n  events: EventManager\n}\n\ninterface UseCameraReturn {\n  /** The currently active camera */\n  activeCamera: ComputedRef\u003CTresCamera>\n  /** Array of all registered cameras */\n  cameras: Ref\u003CTresCamera[]>\n  /** Register a new camera */\n  registerCamera: (camera: TresCamera, active?: boolean) => void\n  /** Remove a camera from management */\n  deregisterCamera: (camera: TresCamera) => void\n  /** Set a specific camera as active */\n  setActiveCamera: (cameraOrUuid: string | TresCamera) => void\n}\n\ninterface UseRendererManagerReturn {\n  /** The render loop system */\n  loop: RafLoop\n  /** The raw Three.js renderer instance */\n  instance: TresRenderer\n  /** Manually advance one frame (manual mode) */\n  advance: () => void\n  /** Register callback for renderer ready event */\n  onReady: (callback: (renderer: TresRenderer) => void) => void\n  /** Register callback for after render event */\n  onRender: (callback: (renderer: TresRenderer) => void) => void\n  /** Mark scene for re-render (on-demand mode) */\n  invalidate: (frames?: number) => void\n  /** Whether renderer can be invalidated */\n  canBeInvalidated: ComputedRef\u003Cboolean>\n  /** Current render mode */\n  mode: RenderMode\n  /** Take control of render function */\n  replaceRenderFunction: (fn: RenderFunction) => void\n}\n\ninterface SizesType {\n  /** Canvas width in pixels */\n  width: Ref\u003Cnumber>\n  /** Canvas height in pixels */\n  height: Ref\u003Cnumber>\n  /** Canvas aspect ratio (width / height) */\n  aspectRatio: Ref\u003Cnumber>\n  /** Device pixel ratio */\n  pixelRatio: Ref\u003Cnumber>\n}\n\ntype RenderMode = 'always' | 'on-demand' | 'manual'\ntype RenderFunction = (notifySuccess: () => void) => void\ntype TresRenderer = WebGLRenderer | Renderer\ntype TresCamera = Camera\n","Signature",[249,2538,2539,2553,2557,2567,2572,2590,2595,2605,2610,2634,2639,2648,2653,2676,2681,2690,2695,2705,2709,2713,2722,2727,2744,2749,2767,2772,2805,2810,2831,2836,2863,2867,2871,2880,2885,2895,2900,2910,2915,2928,2933,2969,2974,3007,3012,3036,3042,3059,3065,3076,3082,3106,3111,3116,3126,3132,3149,3155,3171,3177,3193,3199,3215,3220,3225,3260,3288,3305],{"__ignoreMap":283},[287,2540,2541,2544,2546,2549],{"class":289,"line":290},[287,2542,2543],{"class":330},"function",[287,2545,302],{"class":366},[287,2547,2548],{"class":297},"():",[287,2550,2552],{"class":2551},"sBMFI"," TresContext\n",[287,2554,2555],{"class":289,"line":321},[287,2556,324],{"emptyLinePlaceholder":39},[287,2558,2559,2562,2565],{"class":289,"line":327},[287,2560,2561],{"class":330},"interface",[287,2563,2564],{"class":2551}," TresContext",[287,2566,768],{"class":297},[287,2568,2569],{"class":289,"line":372},[287,2570,2571],{"class":380},"  /** The Three.js scene object containing all 3D objects */\n",[287,2573,2574,2577,2580,2583,2585,2588],{"class":289,"line":377},[287,2575,2576],{"class":619},"  scene",[287,2578,2579],{"class":297},":",[287,2581,2582],{"class":2551}," ShallowRef",[287,2584,616],{"class":297},[287,2586,2587],{"class":2551},"TresScene",[287,2589,638],{"class":297},[287,2591,2592],{"class":289,"line":384},[287,2593,2594],{"class":380},"  /** Reactive size information for the canvas */\n",[287,2596,2597,2600,2602],{"class":289,"line":420},[287,2598,2599],{"class":619},"  sizes",[287,2601,2579],{"class":297},[287,2603,2604],{"class":2551}," SizesType\n",[287,2606,2607],{"class":289,"line":451},[287,2608,2609],{"class":380},"  /** TresJS extension function for adding custom objects */\n",[287,2611,2612,2615,2617,2619,2622,2624,2627,2629,2631],{"class":289,"line":456},[287,2613,2614],{"class":619},"  extend",[287,2616,2579],{"class":297},[287,2618,864],{"class":297},[287,2620,2621],{"class":834},"objects",[287,2623,2579],{"class":297},[287,2625,2626],{"class":2551}," any",[287,2628,1654],{"class":297},[287,2630,765],{"class":330},[287,2632,2633],{"class":2551}," void\n",[287,2635,2636],{"class":289,"line":462},[287,2637,2638],{"class":380},"  /** Complete camera management system */\n",[287,2640,2641,2643,2645],{"class":289,"line":489},[287,2642,816],{"class":619},[287,2644,2579],{"class":297},[287,2646,2647],{"class":2551}," UseCameraReturn\n",[287,2649,2650],{"class":289,"line":520},[287,2651,2652],{"class":380},"  /** Reference to current camera controls */\n",[287,2654,2655,2658,2660,2663,2665,2668,2671,2674],{"class":289,"line":525},[287,2656,2657],{"class":619},"  controls",[287,2659,2579],{"class":297},[287,2661,2662],{"class":2551}," Ref",[287,2664,616],{"class":297},[287,2666,2667],{"class":2551},"TresControl",[287,2669,2670],{"class":297}," |",[287,2672,2673],{"class":2551}," null",[287,2675,638],{"class":297},[287,2677,2678],{"class":289,"line":531},[287,2679,2680],{"class":380},"  /** Complete renderer management system */\n",[287,2682,2683,2685,2687],{"class":289,"line":572},[287,2684,1781],{"class":619},[287,2686,2579],{"class":297},[287,2688,2689],{"class":2551}," UseRendererManagerReturn\n",[287,2691,2692],{"class":289,"line":858},[287,2693,2694],{"class":380},"  /** Complete event management system */\n",[287,2696,2697,2700,2702],{"class":289,"line":879},[287,2698,2699],{"class":619},"  events",[287,2701,2579],{"class":297},[287,2703,2704],{"class":2551}," EventManager\n",[287,2706,2707],{"class":289,"line":885},[287,2708,1200],{"class":297},[287,2710,2711],{"class":289,"line":934},[287,2712,324],{"emptyLinePlaceholder":39},[287,2714,2715,2717,2720],{"class":289,"line":949},[287,2716,2561],{"class":330},[287,2718,2719],{"class":2551}," UseCameraReturn",[287,2721,768],{"class":297},[287,2723,2724],{"class":289,"line":970},[287,2725,2726],{"class":380},"  /** The currently active camera */\n",[287,2728,2729,2732,2734,2737,2739,2742],{"class":289,"line":996},[287,2730,2731],{"class":619},"  activeCamera",[287,2733,2579],{"class":297},[287,2735,2736],{"class":2551}," ComputedRef",[287,2738,616],{"class":297},[287,2740,2741],{"class":2551},"TresCamera",[287,2743,638],{"class":297},[287,2745,2746],{"class":289,"line":1002},[287,2747,2748],{"class":380},"  /** Array of all registered cameras */\n",[287,2750,2751,2754,2756,2758,2760,2762,2765],{"class":289,"line":1023},[287,2752,2753],{"class":619},"  cameras",[287,2755,2579],{"class":297},[287,2757,2662],{"class":2551},[287,2759,616],{"class":297},[287,2761,2741],{"class":2551},[287,2763,2764],{"class":301},"[]",[287,2766,638],{"class":297},[287,2768,2769],{"class":289,"line":1029},[287,2770,2771],{"class":380},"  /** Register a new camera */\n",[287,2773,2774,2777,2779,2781,2783,2785,2788,2790,2793,2796,2799,2801,2803],{"class":289,"line":1037},[287,2775,2776],{"class":619},"  registerCamera",[287,2778,2579],{"class":297},[287,2780,864],{"class":297},[287,2782,575],{"class":834},[287,2784,2579],{"class":297},[287,2786,2787],{"class":2551}," TresCamera",[287,2789,339],{"class":297},[287,2791,2792],{"class":834}," active",[287,2794,2795],{"class":297},"?:",[287,2797,2798],{"class":2551}," boolean",[287,2800,1654],{"class":297},[287,2802,765],{"class":330},[287,2804,2633],{"class":2551},[287,2806,2807],{"class":289,"line":1043},[287,2808,2809],{"class":380},"  /** Remove a camera from management */\n",[287,2811,2812,2815,2817,2819,2821,2823,2825,2827,2829],{"class":289,"line":1084},[287,2813,2814],{"class":619},"  deregisterCamera",[287,2816,2579],{"class":297},[287,2818,864],{"class":297},[287,2820,575],{"class":834},[287,2822,2579],{"class":297},[287,2824,2787],{"class":2551},[287,2826,1654],{"class":297},[287,2828,765],{"class":330},[287,2830,2633],{"class":2551},[287,2832,2833],{"class":289,"line":1097},[287,2834,2835],{"class":380},"  /** Set a specific camera as active */\n",[287,2837,2838,2841,2843,2845,2848,2850,2853,2855,2857,2859,2861],{"class":289,"line":1117},[287,2839,2840],{"class":619},"  setActiveCamera",[287,2842,2579],{"class":297},[287,2844,864],{"class":297},[287,2846,2847],{"class":834},"cameraOrUuid",[287,2849,2579],{"class":297},[287,2851,2852],{"class":2551}," string",[287,2854,2670],{"class":297},[287,2856,2787],{"class":2551},[287,2858,1654],{"class":297},[287,2860,765],{"class":330},[287,2862,2633],{"class":2551},[287,2864,2865],{"class":289,"line":1140},[287,2866,1200],{"class":297},[287,2868,2869],{"class":289,"line":1145},[287,2870,324],{"emptyLinePlaceholder":39},[287,2872,2873,2875,2878],{"class":289,"line":1165},[287,2874,2561],{"class":330},[287,2876,2877],{"class":2551}," UseRendererManagerReturn",[287,2879,768],{"class":297},[287,2881,2882],{"class":289,"line":1170},[287,2883,2884],{"class":380},"  /** The render loop system */\n",[287,2886,2887,2890,2892],{"class":289,"line":1175},[287,2888,2889],{"class":619},"  loop",[287,2891,2579],{"class":297},[287,2893,2894],{"class":2551}," RafLoop\n",[287,2896,2897],{"class":289,"line":1197},[287,2898,2899],{"class":380},"  /** The raw Three.js renderer instance */\n",[287,2901,2902,2905,2907],{"class":289,"line":1203},[287,2903,2904],{"class":619},"  instance",[287,2906,2579],{"class":297},[287,2908,2909],{"class":2551}," TresRenderer\n",[287,2911,2912],{"class":289,"line":1213},[287,2913,2914],{"class":380},"  /** Manually advance one frame (manual mode) */\n",[287,2916,2917,2920,2922,2924,2926],{"class":289,"line":1218},[287,2918,2919],{"class":619},"  advance",[287,2921,2579],{"class":297},[287,2923,762],{"class":297},[287,2925,765],{"class":330},[287,2927,2633],{"class":2551},[287,2929,2930],{"class":289,"line":1228},[287,2931,2932],{"class":380},"  /** Register callback for renderer ready event */\n",[287,2934,2935,2938,2940,2942,2945,2947,2949,2951,2953,2956,2958,2960,2963,2965,2967],{"class":289,"line":1254},[287,2936,2937],{"class":619},"  onReady",[287,2939,2579],{"class":297},[287,2941,864],{"class":297},[287,2943,2944],{"class":619},"callback",[287,2946,2579],{"class":297},[287,2948,864],{"class":297},[287,2950,1639],{"class":834},[287,2952,2579],{"class":297},[287,2954,2955],{"class":2551}," TresRenderer",[287,2957,1654],{"class":297},[287,2959,765],{"class":330},[287,2961,2962],{"class":2551}," void",[287,2964,1654],{"class":297},[287,2966,765],{"class":330},[287,2968,2633],{"class":2551},[287,2970,2971],{"class":289,"line":1266},[287,2972,2973],{"class":380},"  /** Register callback for after render event */\n",[287,2975,2976,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005],{"class":289,"line":1276},[287,2977,2978],{"class":619},"  onRender",[287,2980,2579],{"class":297},[287,2982,864],{"class":297},[287,2984,2944],{"class":619},[287,2986,2579],{"class":297},[287,2988,864],{"class":297},[287,2990,1639],{"class":834},[287,2992,2579],{"class":297},[287,2994,2955],{"class":2551},[287,2996,1654],{"class":297},[287,2998,765],{"class":330},[287,3000,2962],{"class":2551},[287,3002,1654],{"class":297},[287,3004,765],{"class":330},[287,3006,2633],{"class":2551},[287,3008,3009],{"class":289,"line":1286},[287,3010,3011],{"class":380},"  /** Mark scene for re-render (on-demand mode) */\n",[287,3013,3015,3018,3020,3022,3025,3027,3030,3032,3034],{"class":289,"line":3014},45,[287,3016,3017],{"class":619},"  invalidate",[287,3019,2579],{"class":297},[287,3021,864],{"class":297},[287,3023,3024],{"class":834},"frames",[287,3026,2795],{"class":297},[287,3028,3029],{"class":2551}," number",[287,3031,1654],{"class":297},[287,3033,765],{"class":330},[287,3035,2633],{"class":2551},[287,3037,3039],{"class":289,"line":3038},46,[287,3040,3041],{"class":380},"  /** Whether renderer can be invalidated */\n",[287,3043,3045,3048,3050,3052,3054,3057],{"class":289,"line":3044},47,[287,3046,3047],{"class":619},"  canBeInvalidated",[287,3049,2579],{"class":297},[287,3051,2736],{"class":2551},[287,3053,616],{"class":297},[287,3055,3056],{"class":2551},"boolean",[287,3058,638],{"class":297},[287,3060,3062],{"class":289,"line":3061},48,[287,3063,3064],{"class":380},"  /** Current render mode */\n",[287,3066,3068,3071,3073],{"class":289,"line":3067},49,[287,3069,3070],{"class":619},"  mode",[287,3072,2579],{"class":297},[287,3074,3075],{"class":2551}," RenderMode\n",[287,3077,3079],{"class":289,"line":3078},50,[287,3080,3081],{"class":380},"  /** Take control of render function */\n",[287,3083,3085,3088,3090,3092,3095,3097,3100,3102,3104],{"class":289,"line":3084},51,[287,3086,3087],{"class":619},"  replaceRenderFunction",[287,3089,2579],{"class":297},[287,3091,864],{"class":297},[287,3093,3094],{"class":834},"fn",[287,3096,2579],{"class":297},[287,3098,3099],{"class":2551}," RenderFunction",[287,3101,1654],{"class":297},[287,3103,765],{"class":330},[287,3105,2633],{"class":2551},[287,3107,3109],{"class":289,"line":3108},52,[287,3110,1200],{"class":297},[287,3112,3114],{"class":289,"line":3113},53,[287,3115,324],{"emptyLinePlaceholder":39},[287,3117,3119,3121,3124],{"class":289,"line":3118},54,[287,3120,2561],{"class":330},[287,3122,3123],{"class":2551}," SizesType",[287,3125,768],{"class":297},[287,3127,3129],{"class":289,"line":3128},55,[287,3130,3131],{"class":380},"  /** Canvas width in pixels */\n",[287,3133,3135,3138,3140,3142,3144,3147],{"class":289,"line":3134},56,[287,3136,3137],{"class":619},"  width",[287,3139,2579],{"class":297},[287,3141,2662],{"class":2551},[287,3143,616],{"class":297},[287,3145,3146],{"class":2551},"number",[287,3148,638],{"class":297},[287,3150,3152],{"class":289,"line":3151},57,[287,3153,3154],{"class":380},"  /** Canvas height in pixels */\n",[287,3156,3158,3161,3163,3165,3167,3169],{"class":289,"line":3157},58,[287,3159,3160],{"class":619},"  height",[287,3162,2579],{"class":297},[287,3164,2662],{"class":2551},[287,3166,616],{"class":297},[287,3168,3146],{"class":2551},[287,3170,638],{"class":297},[287,3172,3174],{"class":289,"line":3173},59,[287,3175,3176],{"class":380},"  /** Canvas aspect ratio (width / height) */\n",[287,3178,3180,3183,3185,3187,3189,3191],{"class":289,"line":3179},60,[287,3181,3182],{"class":619},"  aspectRatio",[287,3184,2579],{"class":297},[287,3186,2662],{"class":2551},[287,3188,616],{"class":297},[287,3190,3146],{"class":2551},[287,3192,638],{"class":297},[287,3194,3196],{"class":289,"line":3195},61,[287,3197,3198],{"class":380},"  /** Device pixel ratio */\n",[287,3200,3202,3205,3207,3209,3211,3213],{"class":289,"line":3201},62,[287,3203,3204],{"class":619},"  pixelRatio",[287,3206,2579],{"class":297},[287,3208,2662],{"class":2551},[287,3210,616],{"class":297},[287,3212,3146],{"class":2551},[287,3214,638],{"class":297},[287,3216,3218],{"class":289,"line":3217},63,[287,3219,1200],{"class":297},[287,3221,3223],{"class":289,"line":3222},64,[287,3224,324],{"emptyLinePlaceholder":39},[287,3226,3228,3230,3233,3235,3237,3240,3242,3244,3246,3249,3251,3253,3255,3258],{"class":289,"line":3227},65,[287,3229,2531],{"class":330},[287,3231,3232],{"class":2551}," RenderMode",[287,3234,363],{"class":297},[287,3236,311],{"class":297},[287,3238,3239],{"class":314},"always",[287,3241,398],{"class":297},[287,3243,2670],{"class":297},[287,3245,311],{"class":297},[287,3247,3248],{"class":314},"on-demand",[287,3250,398],{"class":297},[287,3252,2670],{"class":297},[287,3254,311],{"class":297},[287,3256,3257],{"class":314},"manual",[287,3259,318],{"class":297},[287,3261,3263,3265,3267,3269,3271,3274,3276,3278,3280,3282,3284,3286],{"class":289,"line":3262},66,[287,3264,2531],{"class":330},[287,3266,3099],{"class":2551},[287,3268,363],{"class":297},[287,3270,864],{"class":297},[287,3272,3273],{"class":366},"notifySuccess",[287,3275,2579],{"class":297},[287,3277,762],{"class":297},[287,3279,765],{"class":330},[287,3281,2962],{"class":2551},[287,3283,1654],{"class":297},[287,3285,765],{"class":330},[287,3287,2633],{"class":2551},[287,3289,3291,3293,3295,3297,3300,3302],{"class":289,"line":3290},67,[287,3292,2531],{"class":330},[287,3294,2955],{"class":2551},[287,3296,363],{"class":297},[287,3298,3299],{"class":2551}," WebGLRenderer",[287,3301,2670],{"class":297},[287,3303,3304],{"class":2551}," Renderer\n",[287,3306,3308,3310,3312,3314],{"class":289,"line":3307},68,[287,3309,2531],{"class":330},[287,3311,2787],{"class":2551},[287,3313,363],{"class":297},[287,3315,3316],{"class":2551}," Camera\n",[3318,3319,3320],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":283,"searchDepth":290,"depth":321,"links":3322},[3323,3329,3335,3336],{"id":255,"depth":321,"text":256,"children":3324},[3325,3326,3327,3328],{"id":599,"depth":327,"text":600},{"id":1410,"depth":327,"text":1411},{"id":1811,"depth":327,"text":1812},{"id":1956,"depth":327,"text":1957},{"id":2239,"depth":321,"text":2240,"children":3330},[3331,3333],{"id":2298,"depth":327,"text":3332},"Camera Management System (camera)",{"id":2337,"depth":327,"text":3334},"Renderer Management System (renderer)",{"id":2400,"depth":321,"text":2401},{"id":2531,"depth":321,"text":2532},"useTresContext provides a complete access to the TresJS context.","md",null,{},{"title":116,"description":3337},"4ZxHmQdjPAVyvlabgtVxNuIy7-aELAtwWElRb5AZToU",[3344,3346],{"title":112,"path":113,"stem":114,"description":3345,"children":-1},"useTres provides a convenient access to a simplified TresJS context.",{"title":120,"path":121,"stem":122,"description":3347,"children":-1},"useLoop provides a convenient access to the render loop of the TresJS scene.",1774953659412]