[{"data":1,"prerenderedAt":3343},["ShallowReactive",2],{"navigation":3,"/api/debug-performance":478,"/api/debug-performance-surround":499,"debug-performance-list":504},[4,22],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","1.getting-started/1.index",[9,10,14,18],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation Guide","/getting-started/installation","1.getting-started/2.installation",{"title":15,"path":16,"stem":17},"Usage","/getting-started/usage","1.getting-started/3.usage",{"title":19,"path":20,"stem":21},"Upgrade Guide","/getting-started/upgrade-guide","1.getting-started/4.upgrade-guide",{"title":23,"path":24,"stem":25,"children":26},"Api","/api","2.api",[27,30,84,114,156,194,288,314,348,398,444],{"title":28,"path":24,"stem":29},"All","2.api/index",{"title":31,"path":32,"stem":33,"children":34},"Abstractions","/api/abstractions","2.api/1.abstractions/index",[35,36,40,44,48,52,56,60,64,68,72,76,80],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39},"Align","/api/abstractions/align","2.api/1.abstractions/align",{"title":41,"path":42,"stem":43},"Billboard","/api/abstractions/billboard","2.api/1.abstractions/billboard",{"title":45,"path":46,"stem":47},"Camera Shake","/api/abstractions/camera-shake","2.api/1.abstractions/camera-shake",{"title":49,"path":50,"stem":51},"Decal","/api/abstractions/decal","2.api/1.abstractions/decal",{"title":53,"path":54,"stem":55},"Edges","/api/abstractions/edges","2.api/1.abstractions/edges",{"title":57,"path":58,"stem":59},"Fit","/api/abstractions/fit","2.api/1.abstractions/fit",{"title":61,"path":62,"stem":63},"Levioso (Float)","/api/abstractions/levioso","2.api/1.abstractions/levioso",{"title":65,"path":66,"stem":67},"Mask","/api/abstractions/mask","2.api/1.abstractions/mask",{"title":69,"path":70,"stem":71},"Outline","/api/abstractions/outline","2.api/1.abstractions/outline",{"title":73,"path":74,"stem":75},"Sampler","/api/abstractions/sampler","2.api/1.abstractions/sampler",{"title":77,"path":78,"stem":79},"ScreenSizer","/api/abstractions/screen-sizer","2.api/1.abstractions/screen-sizer",{"title":81,"path":82,"stem":83},"ScreenSpace","/api/abstractions/screen-space","2.api/1.abstractions/screen-space",{"title":85,"path":86,"stem":87,"children":88},"Controls","/api/controls","2.api/2.controls/index",[89,90,94,98,102,106,110],{"title":85,"path":86,"stem":87},{"title":91,"path":92,"stem":93},"Camera Controls","/api/controls/camera-controls","2.api/2.controls/camera-controls",{"title":95,"path":96,"stem":97},"Keyboard Controls","/api/controls/keyboard-controls","2.api/2.controls/keyboard-controls",{"title":99,"path":100,"stem":101},"Map Controls","/api/controls/map-controls","2.api/2.controls/map-controls",{"title":103,"path":104,"stem":105},"Orbit Controls","/api/controls/orbit-controls","2.api/2.controls/orbit-controls",{"title":107,"path":108,"stem":109},"PointerLock Controls","/api/controls/pointer-lock-controls","2.api/2.controls/pointer-lock-controls",{"title":111,"path":112,"stem":113},"Transform Controls","/api/controls/transform-controls","2.api/2.controls/transform-controls",{"title":115,"path":116,"stem":117,"children":118},"Loaders","/api/loaders","2.api/3.loaders/index",[119,120,124,128,132,136,140,144,148,152],{"title":115,"path":116,"stem":117},{"title":121,"path":122,"stem":123},"useGLTF","/api/loaders/use-gltf","2.api/3.loaders/1.use-gltf",{"title":125,"path":126,"stem":127},"GLTFModel","/api/loaders/gltf-model","2.api/3.loaders/2.gltf-model",{"title":129,"path":130,"stem":131},"useFBX","/api/loaders/use-fbx","2.api/3.loaders/3.use-fbx",{"title":133,"path":134,"stem":135},"FBXModel","/api/loaders/fbx-model","2.api/3.loaders/4.fbx-model",{"title":137,"path":138,"stem":139},"useTexture","/api/loaders/use-texture","2.api/3.loaders/5.use-texture",{"title":141,"path":142,"stem":143},"useTextures","/api/loaders/use-textures","2.api/3.loaders/6.use-textures",{"title":145,"path":146,"stem":147},"useSVG","/api/loaders/use-svg","2.api/3.loaders/7.use-svg",{"title":149,"path":150,"stem":151},"useProgress","/api/loaders/use-progress","2.api/3.loaders/use-progress",{"title":153,"path":154,"stem":155},"useVideoTexture","/api/loaders/use-video-texture","2.api/3.loaders/use-video-texture",{"title":157,"path":158,"stem":159,"children":160},"Materials","/api/materials","2.api/4.materials/index",[161,162,166,170,174,178,182,186,190],{"title":157,"path":158,"stem":159},{"title":163,"path":164,"stem":165},"Custom Shader Material","/api/materials/custom-shader-material","2.api/4.materials/custom-shader-material",{"title":167,"path":168,"stem":169},"Mesh Glass Material","/api/materials/glass-material","2.api/4.materials/glass-material",{"title":171,"path":172,"stem":173},"Holographic Material","/api/materials/holographic-material","2.api/4.materials/holographic-material",{"title":175,"path":176,"stem":177},"Mesh Discard Material","/api/materials/mesh-discard-material","2.api/4.materials/mesh-discard-material",{"title":179,"path":180,"stem":181},"Mesh Reflection Material","/api/materials/mesh-reflection-material","2.api/4.materials/mesh-reflection-material",{"title":183,"path":184,"stem":185},"Mesh Transmission Material","/api/materials/mesh-transmission-material","2.api/4.materials/mesh-transmission-material",{"title":187,"path":188,"stem":189},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":191,"path":192,"stem":193},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":195,"path":196,"stem":197,"children":198},"Shapes","/api/shapes","2.api/5.shapes/index",[199,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284],{"title":195,"path":196,"stem":197},{"title":201,"path":202,"stem":203},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":205,"path":206,"stem":207},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":209,"path":210,"stem":211},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":213,"path":214,"stem":215},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":217,"path":218,"stem":219},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":221,"path":222,"stem":223},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":225,"path":226,"stem":227},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":229,"path":230,"stem":231},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":233,"path":234,"stem":235},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":237,"path":238,"stem":239},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":241,"path":242,"stem":243},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":245,"path":246,"stem":247},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":249,"path":250,"stem":251},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":253,"path":254,"stem":255},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":257,"path":258,"stem":259},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":261,"path":262,"stem":263},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":265,"path":266,"stem":267},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":269,"path":270,"stem":271},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":273,"path":274,"stem":275},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":277,"path":278,"stem":279},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":281,"path":282,"stem":283},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":285,"path":286,"stem":287},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":289,"path":290,"stem":291,"children":292},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[293,294,298,302,306,310],{"title":289,"path":290,"stem":291},{"title":295,"path":296,"stem":297},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":299,"path":300,"stem":301},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":303,"path":304,"stem":305},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":307,"path":308,"stem":309},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":311,"path":312,"stem":313},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":315,"path":316,"stem":317,"children":318},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[319,320,324,328,332,336,340,344],{"title":315,"path":316,"stem":317},{"title":321,"path":322,"stem":323},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":325,"path":326,"stem":327},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":329,"path":330,"stem":331},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":333,"path":334,"stem":335},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":337,"path":338,"stem":339},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":341,"path":342,"stem":343},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":345,"path":346,"stem":347},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":349,"path":350,"stem":351,"children":352},"Staging","/api/staging","2.api/8.staging/index",[353,354,358,362,366,370,374,378,382,386,390,394],{"title":349,"path":350,"stem":351},{"title":355,"path":356,"stem":357},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":359,"path":360,"stem":361},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":363,"path":364,"stem":365},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":367,"path":368,"stem":369},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":371,"path":372,"stem":373},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":375,"path":376,"stem":377},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":379,"path":380,"stem":381},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":383,"path":384,"stem":385},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":387,"path":388,"stem":389},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":391,"path":392,"stem":393},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":395,"path":396,"stem":397},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":399,"path":400,"stem":401,"children":402},"Objects","/api/objects","2.api/9.objects/index",[403,404,408,412,416,420,424,428,432,436,440],{"title":399,"path":400,"stem":401},{"title":405,"path":406,"stem":407},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":409,"path":410,"stem":411},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":413,"path":414,"stem":415},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":417,"path":418,"stem":419},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":421,"path":422,"stem":423},"HTML","/api/objects/html","2.api/9.objects/html",{"title":425,"path":426,"stem":427},"Image","/api/objects/image","2.api/9.objects/image",{"title":429,"path":430,"stem":431},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":433,"path":434,"stem":435},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":437,"path":438,"stem":439},"Text","/api/objects/text","2.api/9.objects/text",{"title":441,"path":442,"stem":443},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":445,"path":446,"stem":447,"children":448},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[449,450,454,458,462,466,470,474],{"title":445,"path":446,"stem":447},{"title":451,"path":452,"stem":453},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":455,"path":456,"stem":457},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":459,"path":460,"stem":461},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":463,"path":464,"stem":465},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":467,"path":468,"stem":469},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":471,"path":472,"stem":473},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":475,"path":476,"stem":477},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":479,"title":289,"body":480,"description":492,"extension":493,"links":494,"meta":495,"navigation":496,"path":290,"seo":497,"stem":291,"__hash__":498},"docs/2.api/6.debug-performance/index.md",{"type":481,"value":482,"toc":487},"minimark",[483],[484,485],"api-list",{"list-name":486},"debug-performance-list",{"title":488,"searchDepth":489,"depth":490,"links":491},"",1,2,[],"All debug and performance tools","md",null,{},true,{"title":289,"description":492},"I8cl-hxPBGBph5-zPkqjaMKsVrmdO64JwDyo7WJg8Z8",[500,502],{"title":285,"path":286,"stem":287,"description":501,"children":-1},"Short-cut for a TubeGeometry and a MeshBasicMaterial with a Mesh object.",{"title":295,"path":296,"stem":297,"description":503,"children":-1},"Handles instantiation, updates, and removal/disposal of THREE Helpers.",[505,886,1352,1569,1877],{"id":506,"title":295,"body":507,"description":503,"extension":493,"links":494,"meta":883,"navigation":496,"path":296,"seo":884,"stem":297,"__hash__":885},"docs/2.api/6.debug-performance/helper.md",{"type":481,"value":508,"toc":879},[509,515,523,527,819,823,875],[510,511,512],"scene-wrapper",{},[513,514],"debug-performance-helper",{},[516,517,518,522],"p",{},[519,520,521],"code",{},"\u003CHelper />"," handles instantiation, updates, and removal/disposal of THREE Helpers.",[524,525,15],"h2",{"id":526},"usage",[528,529,536],"pre",{"className":530,"code":531,"highlights":532,"language":535,"meta":488,"style":488},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { Helper } from '@tresjs/cientos'\nimport { BoxHelper } from 'three'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[3, 3, 3]\" />\n    \u003CTresMesh ref=\"boxRef\">\n      \u003CTresBoxGeometry />\n      \u003CTresMeshNormalMaterial />\n      \u003CHelper :type=\"BoxHelper\" :args=\"[0xff0000]\" />\n    \u003C/TresMesh>\n    \u003CTresAmbientLight />\n  \u003C/TresCanvas>\n\u003C/template>\n",[533,534],3,13,"vue",[519,537,538,572,600,622,643,653,659,669,680,704,726,737,747,780,790,800,810],{"__ignoreMap":488},[539,540,542,546,550,554,557,560,563,567,569],"span",{"class":541,"line":489},"line",[539,543,545],{"class":544},"sMK4o","\u003C",[539,547,549],{"class":548},"swJcz","script",[539,551,553],{"class":552},"spNyl"," setup",[539,555,556],{"class":552}," lang",[539,558,559],{"class":544},"=",[539,561,562],{"class":544},"\"",[539,564,566],{"class":565},"sfazB","ts",[539,568,562],{"class":544},[539,570,571],{"class":544},">\n",[539,573,574,578,581,585,588,591,594,597],{"class":541,"line":490},[539,575,577],{"class":576},"s7zQu","import",[539,579,580],{"class":544}," {",[539,582,584],{"class":583},"sTEyZ"," TresCanvas",[539,586,587],{"class":544}," }",[539,589,590],{"class":576}," from",[539,592,593],{"class":544}," '",[539,595,596],{"class":565},"@tresjs/core",[539,598,599],{"class":544},"'\n",[539,601,604,606,608,611,613,615,617,620],{"class":602,"line":533},[541,603],"highlight",[539,605,577],{"class":576},[539,607,580],{"class":544},[539,609,610],{"class":583}," Helper",[539,612,587],{"class":544},[539,614,590],{"class":576},[539,616,593],{"class":544},[539,618,619],{"class":565},"@tresjs/cientos",[539,621,599],{"class":544},[539,623,625,627,629,632,634,636,638,641],{"class":541,"line":624},4,[539,626,577],{"class":576},[539,628,580],{"class":544},[539,630,631],{"class":583}," BoxHelper",[539,633,587],{"class":544},[539,635,590],{"class":576},[539,637,593],{"class":544},[539,639,640],{"class":565},"three",[539,642,599],{"class":544},[539,644,646,649,651],{"class":541,"line":645},5,[539,647,648],{"class":544},"\u003C/",[539,650,549],{"class":548},[539,652,571],{"class":544},[539,654,656],{"class":541,"line":655},6,[539,657,658],{"emptyLinePlaceholder":496},"\n",[539,660,662,664,667],{"class":541,"line":661},7,[539,663,545],{"class":544},[539,665,666],{"class":548},"template",[539,668,571],{"class":544},[539,670,672,675,678],{"class":541,"line":671},8,[539,673,674],{"class":544},"  \u003C",[539,676,677],{"class":548},"TresCanvas",[539,679,571],{"class":544},[539,681,683,686,689,692,694,696,699,701],{"class":541,"line":682},9,[539,684,685],{"class":544},"    \u003C",[539,687,688],{"class":548},"TresPerspectiveCamera",[539,690,691],{"class":552}," :position",[539,693,559],{"class":544},[539,695,562],{"class":544},[539,697,698],{"class":565},"[3, 3, 3]",[539,700,562],{"class":544},[539,702,703],{"class":544}," />\n",[539,705,707,709,712,715,717,719,722,724],{"class":541,"line":706},10,[539,708,685],{"class":544},[539,710,711],{"class":548},"TresMesh",[539,713,714],{"class":552}," ref",[539,716,559],{"class":544},[539,718,562],{"class":544},[539,720,721],{"class":565},"boxRef",[539,723,562],{"class":544},[539,725,571],{"class":544},[539,727,729,732,735],{"class":541,"line":728},11,[539,730,731],{"class":544},"      \u003C",[539,733,734],{"class":548},"TresBoxGeometry",[539,736,703],{"class":544},[539,738,740,742,745],{"class":541,"line":739},12,[539,741,731],{"class":544},[539,743,744],{"class":548},"TresMeshNormalMaterial",[539,746,703],{"class":544},[539,748,750,752,754,757,759,761,764,766,769,771,773,776,778],{"class":749,"line":534},[541,603],[539,751,731],{"class":544},[539,753,295],{"class":548},[539,755,756],{"class":552}," :type",[539,758,559],{"class":544},[539,760,562],{"class":544},[539,762,763],{"class":565},"BoxHelper",[539,765,562],{"class":544},[539,767,768],{"class":552}," :args",[539,770,559],{"class":544},[539,772,562],{"class":544},[539,774,775],{"class":565},"[0xff0000]",[539,777,562],{"class":544},[539,779,703],{"class":544},[539,781,783,786,788],{"class":541,"line":782},14,[539,784,785],{"class":544},"    \u003C/",[539,787,711],{"class":548},[539,789,571],{"class":544},[539,791,793,795,798],{"class":541,"line":792},15,[539,794,685],{"class":544},[539,796,797],{"class":548},"TresAmbientLight",[539,799,703],{"class":544},[539,801,803,806,808],{"class":541,"line":802},16,[539,804,805],{"class":544},"  \u003C/",[539,807,677],{"class":548},[539,809,571],{"class":544},[539,811,813,815,817],{"class":541,"line":812},17,[539,814,648],{"class":544},[539,816,666],{"class":548},[539,818,571],{"class":544},[524,820,822],{"id":821},"props","Props",[824,825,826,843],"table",{},[827,828,829],"thead",{},[830,831,832,837,840],"tr",{},[833,834,836],"th",{"align":835},"left","Prop",[833,838,839],{"align":835},"Description",[833,841,842],{},"Default",[844,845,846,860],"tbody",{},[830,847,848,855,858],{},[849,850,851],"td",{"align":835},[852,853,854],"strong",{},"type",[849,856,857],{"align":835},"Helper constructor - required",[849,859],{},[830,861,862,867,870],{},[849,863,864],{"align":835},[852,865,866],{},"args",[849,868,869],{"align":835},"Helper constructor args",[849,871,872],{},[519,873,874],{},"[]",[876,877,878],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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);}",{"title":488,"searchDepth":489,"depth":490,"links":880},[881,882],{"id":526,"depth":490,"text":15},{"id":821,"depth":490,"text":822},{},{"title":295,"description":503},"sOeaxtC-_woCHM-l_CN1ntMywo7uC7PTbXeoO7-e15E",{"id":887,"title":299,"body":888,"description":1348,"extension":493,"links":494,"meta":1349,"navigation":496,"path":300,"seo":1350,"stem":301,"__hash__":1351},"docs/2.api/6.debug-performance/lod.md",{"type":481,"value":889,"toc":1344},[890,895,898,911,913,1289,1291,1341],[510,891,892],{},[893,894],"debug-performance-lod",{},[516,896,897],{},"Level of Detail - show meshes with more or less geometry based on distance from the camera.",[516,899,900,903,904,910],{},[519,901,902],{},"\u003CLOD />"," is a wrapper for THREE's ",[905,906,299],"a",{"href":907,"rel":908},"https://threejs.org/docs/?q=LOD#api/en/objects/LOD",[909],"nofollow"," class.",[524,912,15],{"id":526},[528,914,916],{"className":530,"code":915,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { LOD } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CTresPerspectiveCamera :position=\"[0, 2, 5]\" />\n    \u003CLOD :levels=\"[0, 5, 10]\">\n      \u003C!-- High detail mesh - shown when close -->\n      \u003CTresMesh>\n        \u003CTresSphereGeometry :args=\"[1, 32, 32]\" />\n        \u003CTresMeshStandardMaterial color=\"red\" />\n      \u003C/TresMesh>\n      \u003C!-- Medium detail mesh - shown at mid distance -->\n      \u003CTresMesh>\n        \u003CTresSphereGeometry :args=\"[1, 16, 16]\" />\n        \u003CTresMeshStandardMaterial color=\"orange\" />\n      \u003C/TresMesh>\n      \u003C!-- Low detail mesh - shown when far -->\n      \u003CTresMesh>\n        \u003CTresSphereGeometry :args=\"[1, 8, 8]\" />\n        \u003CTresMeshStandardMaterial color=\"yellow\" />\n      \u003C/TresMesh>\n    \u003C/LOD>\n    \u003CTresAmbientLight />\n    \u003CTresDirectionalLight :position=\"[0, 2, 4]\" />\n  \u003C/TresCanvas>\n\u003C/template>\n",[519,917,918,938,956,975,983,987,995,1003,1022,1042,1048,1056,1077,1098,1107,1112,1120,1139,1159,1168,1174,1183,1203,1223,1232,1241,1250,1271,1280],{"__ignoreMap":488},[539,919,920,922,924,926,928,930,932,934,936],{"class":541,"line":489},[539,921,545],{"class":544},[539,923,549],{"class":548},[539,925,553],{"class":552},[539,927,556],{"class":552},[539,929,559],{"class":544},[539,931,562],{"class":544},[539,933,566],{"class":565},[539,935,562],{"class":544},[539,937,571],{"class":544},[539,939,940,942,944,946,948,950,952,954],{"class":541,"line":490},[539,941,577],{"class":576},[539,943,580],{"class":544},[539,945,584],{"class":583},[539,947,587],{"class":544},[539,949,590],{"class":576},[539,951,593],{"class":544},[539,953,596],{"class":565},[539,955,599],{"class":544},[539,957,958,960,962,965,967,969,971,973],{"class":541,"line":533},[539,959,577],{"class":576},[539,961,580],{"class":544},[539,963,964],{"class":583}," LOD",[539,966,587],{"class":544},[539,968,590],{"class":576},[539,970,593],{"class":544},[539,972,619],{"class":565},[539,974,599],{"class":544},[539,976,977,979,981],{"class":541,"line":624},[539,978,648],{"class":544},[539,980,549],{"class":548},[539,982,571],{"class":544},[539,984,985],{"class":541,"line":645},[539,986,658],{"emptyLinePlaceholder":496},[539,988,989,991,993],{"class":541,"line":655},[539,990,545],{"class":544},[539,992,666],{"class":548},[539,994,571],{"class":544},[539,996,997,999,1001],{"class":541,"line":661},[539,998,674],{"class":544},[539,1000,677],{"class":548},[539,1002,571],{"class":544},[539,1004,1005,1007,1009,1011,1013,1015,1018,1020],{"class":541,"line":671},[539,1006,685],{"class":544},[539,1008,688],{"class":548},[539,1010,691],{"class":552},[539,1012,559],{"class":544},[539,1014,562],{"class":544},[539,1016,1017],{"class":565},"[0, 2, 5]",[539,1019,562],{"class":544},[539,1021,703],{"class":544},[539,1023,1024,1026,1028,1031,1033,1035,1038,1040],{"class":541,"line":682},[539,1025,685],{"class":544},[539,1027,299],{"class":548},[539,1029,1030],{"class":552}," :levels",[539,1032,559],{"class":544},[539,1034,562],{"class":544},[539,1036,1037],{"class":565},"[0, 5, 10]",[539,1039,562],{"class":544},[539,1041,571],{"class":544},[539,1043,1044],{"class":541,"line":706},[539,1045,1047],{"class":1046},"sHwdD","      \u003C!-- High detail mesh - shown when close -->\n",[539,1049,1050,1052,1054],{"class":541,"line":728},[539,1051,731],{"class":544},[539,1053,711],{"class":548},[539,1055,571],{"class":544},[539,1057,1058,1061,1064,1066,1068,1070,1073,1075],{"class":541,"line":739},[539,1059,1060],{"class":544},"        \u003C",[539,1062,1063],{"class":548},"TresSphereGeometry",[539,1065,768],{"class":552},[539,1067,559],{"class":544},[539,1069,562],{"class":544},[539,1071,1072],{"class":565},"[1, 32, 32]",[539,1074,562],{"class":544},[539,1076,703],{"class":544},[539,1078,1079,1081,1084,1087,1089,1091,1094,1096],{"class":541,"line":534},[539,1080,1060],{"class":544},[539,1082,1083],{"class":548},"TresMeshStandardMaterial",[539,1085,1086],{"class":552}," color",[539,1088,559],{"class":544},[539,1090,562],{"class":544},[539,1092,1093],{"class":565},"red",[539,1095,562],{"class":544},[539,1097,703],{"class":544},[539,1099,1100,1103,1105],{"class":541,"line":782},[539,1101,1102],{"class":544},"      \u003C/",[539,1104,711],{"class":548},[539,1106,571],{"class":544},[539,1108,1109],{"class":541,"line":792},[539,1110,1111],{"class":1046},"      \u003C!-- Medium detail mesh - shown at mid distance -->\n",[539,1113,1114,1116,1118],{"class":541,"line":802},[539,1115,731],{"class":544},[539,1117,711],{"class":548},[539,1119,571],{"class":544},[539,1121,1122,1124,1126,1128,1130,1132,1135,1137],{"class":541,"line":812},[539,1123,1060],{"class":544},[539,1125,1063],{"class":548},[539,1127,768],{"class":552},[539,1129,559],{"class":544},[539,1131,562],{"class":544},[539,1133,1134],{"class":565},"[1, 16, 16]",[539,1136,562],{"class":544},[539,1138,703],{"class":544},[539,1140,1142,1144,1146,1148,1150,1152,1155,1157],{"class":541,"line":1141},18,[539,1143,1060],{"class":544},[539,1145,1083],{"class":548},[539,1147,1086],{"class":552},[539,1149,559],{"class":544},[539,1151,562],{"class":544},[539,1153,1154],{"class":565},"orange",[539,1156,562],{"class":544},[539,1158,703],{"class":544},[539,1160,1162,1164,1166],{"class":541,"line":1161},19,[539,1163,1102],{"class":544},[539,1165,711],{"class":548},[539,1167,571],{"class":544},[539,1169,1171],{"class":541,"line":1170},20,[539,1172,1173],{"class":1046},"      \u003C!-- Low detail mesh - shown when far -->\n",[539,1175,1177,1179,1181],{"class":541,"line":1176},21,[539,1178,731],{"class":544},[539,1180,711],{"class":548},[539,1182,571],{"class":544},[539,1184,1186,1188,1190,1192,1194,1196,1199,1201],{"class":541,"line":1185},22,[539,1187,1060],{"class":544},[539,1189,1063],{"class":548},[539,1191,768],{"class":552},[539,1193,559],{"class":544},[539,1195,562],{"class":544},[539,1197,1198],{"class":565},"[1, 8, 8]",[539,1200,562],{"class":544},[539,1202,703],{"class":544},[539,1204,1206,1208,1210,1212,1214,1216,1219,1221],{"class":541,"line":1205},23,[539,1207,1060],{"class":544},[539,1209,1083],{"class":548},[539,1211,1086],{"class":552},[539,1213,559],{"class":544},[539,1215,562],{"class":544},[539,1217,1218],{"class":565},"yellow",[539,1220,562],{"class":544},[539,1222,703],{"class":544},[539,1224,1226,1228,1230],{"class":541,"line":1225},24,[539,1227,1102],{"class":544},[539,1229,711],{"class":548},[539,1231,571],{"class":544},[539,1233,1235,1237,1239],{"class":541,"line":1234},25,[539,1236,785],{"class":544},[539,1238,299],{"class":548},[539,1240,571],{"class":544},[539,1242,1244,1246,1248],{"class":541,"line":1243},26,[539,1245,685],{"class":544},[539,1247,797],{"class":548},[539,1249,703],{"class":544},[539,1251,1253,1255,1258,1260,1262,1264,1267,1269],{"class":541,"line":1252},27,[539,1254,685],{"class":544},[539,1256,1257],{"class":548},"TresDirectionalLight",[539,1259,691],{"class":552},[539,1261,559],{"class":544},[539,1263,562],{"class":544},[539,1265,1266],{"class":565},"[0, 2, 4]",[539,1268,562],{"class":544},[539,1270,703],{"class":544},[539,1272,1274,1276,1278],{"class":541,"line":1273},28,[539,1275,805],{"class":544},[539,1277,677],{"class":548},[539,1279,571],{"class":544},[539,1281,1283,1285,1287],{"class":541,"line":1282},29,[539,1284,648],{"class":544},[539,1286,666],{"class":548},[539,1288,571],{"class":544},[524,1290,822],{"id":821},[824,1292,1293,1303],{},[827,1294,1295],{},[830,1296,1297,1299,1301],{},[833,1298,836],{"align":835},[833,1300,839],{"align":835},[833,1302,842],{},[844,1304,1305,1326],{},[830,1306,1307,1312,1324],{},[849,1308,1309],{"align":835},[852,1310,1311],{},"levels",[849,1313,1314,1317,1318,1320,1321,1323],{"align":835},[519,1315,1316],{},"number[]"," - The distances at which to display each level of detail. There should be one ",[519,1319,1311],{}," value for each ",[519,1322,299],{}," child.",[849,1325],{},[830,1327,1328,1333,1336],{},[849,1329,1330],{"align":835},[852,1331,1332],{},"hysteresis",[849,1334,1335],{"align":835},"Threshold used to avoid flickering at LOD boundaries, as a fraction of distance.",[849,1337,1338],{},[519,1339,1340],{},"0.0",[876,1342,1343],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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);}",{"title":488,"searchDepth":489,"depth":490,"links":1345},[1346,1347],{"id":526,"depth":490,"text":15},{"id":821,"depth":490,"text":822},"Level of Detail - show meshes with more or less geometry based on distance from camera.",{},{"title":299,"description":1348},"Vf93ORp5sHYAGbVs0PWkO2EoHaFKA4HQ5pb0l8rQxoQ",{"id":1353,"title":303,"body":1354,"description":1565,"extension":493,"links":494,"meta":1566,"navigation":496,"path":304,"seo":1567,"stem":305,"__hash__":1568},"docs/2.api/6.debug-performance/stats.md",{"type":481,"value":1355,"toc":1561},[1356,1370,1379,1383,1500,1502,1539,1559],[516,1357,1358,1363,1364,1369],{},[905,1359,1362],{"href":1360,"rel":1361},"https://github.com/mrdoob/stats.js/",[909],"stats.js"," is a JavaScript performance monitor, made by ",[905,1365,1368],{"href":1366,"rel":1367},"https://github.com/mrdoob",[909],"mrdoob",". stats.js provides a simple info box that will help you monitor your code performance.",[516,1371,1372,1375,1376,1378],{},[852,1373,1374],{},"Cientos"," provides a component called ",[519,1377,303],{}," that creates a panel without effort or configuration in the top left corner where you'll be able to monitor your app.",[524,1380,1382],{"id":1381},"basic-usage","Basic usage",[528,1384,1387],{"className":530,"code":1385,"highlights":1386,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { Stats } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CStats />\n  \u003C/TresCanvas>\n\u003C/template>\n",[533,671],[519,1388,1389,1409,1427,1447,1455,1459,1467,1475,1484,1492],{"__ignoreMap":488},[539,1390,1391,1393,1395,1397,1399,1401,1403,1405,1407],{"class":541,"line":489},[539,1392,545],{"class":544},[539,1394,549],{"class":548},[539,1396,553],{"class":552},[539,1398,556],{"class":552},[539,1400,559],{"class":544},[539,1402,562],{"class":544},[539,1404,566],{"class":565},[539,1406,562],{"class":544},[539,1408,571],{"class":544},[539,1410,1411,1413,1415,1417,1419,1421,1423,1425],{"class":541,"line":490},[539,1412,577],{"class":576},[539,1414,580],{"class":544},[539,1416,584],{"class":583},[539,1418,587],{"class":544},[539,1420,590],{"class":576},[539,1422,593],{"class":544},[539,1424,596],{"class":565},[539,1426,599],{"class":544},[539,1428,1430,1432,1434,1437,1439,1441,1443,1445],{"class":1429,"line":533},[541,603],[539,1431,577],{"class":576},[539,1433,580],{"class":544},[539,1435,1436],{"class":583}," Stats",[539,1438,587],{"class":544},[539,1440,590],{"class":576},[539,1442,593],{"class":544},[539,1444,619],{"class":565},[539,1446,599],{"class":544},[539,1448,1449,1451,1453],{"class":541,"line":624},[539,1450,648],{"class":544},[539,1452,549],{"class":548},[539,1454,571],{"class":544},[539,1456,1457],{"class":541,"line":645},[539,1458,658],{"emptyLinePlaceholder":496},[539,1460,1461,1463,1465],{"class":541,"line":655},[539,1462,545],{"class":544},[539,1464,666],{"class":548},[539,1466,571],{"class":544},[539,1468,1469,1471,1473],{"class":541,"line":661},[539,1470,674],{"class":544},[539,1472,677],{"class":548},[539,1474,571],{"class":544},[539,1476,1478,1480,1482],{"class":1477,"line":671},[541,603],[539,1479,685],{"class":544},[539,1481,303],{"class":548},[539,1483,703],{"class":544},[539,1485,1486,1488,1490],{"class":541,"line":682},[539,1487,805],{"class":544},[539,1489,677],{"class":548},[539,1491,571],{"class":544},[539,1493,1494,1496,1498],{"class":541,"line":706},[539,1495,648],{"class":544},[539,1497,666],{"class":548},[539,1499,571],{"class":544},[524,1501,822],{"id":821},[824,1503,1504,1517],{},[827,1505,1506],{},[830,1507,1508,1510,1513,1515],{},[833,1509,836],{"align":835},[833,1511,1512],{},"Type",[833,1514,842],{},[833,1516,839],{},[844,1518,1519],{},[830,1520,1521,1526,1531,1536],{},[849,1522,1523],{"align":835},[852,1524,1525],{},"showPanel",[849,1527,1528],{},[519,1529,1530],{},"number",[849,1532,1533],{},[519,1534,1535],{},"0",[849,1537,1538],{},"FPS monitor.",[1540,1541,1542,1546,1549,1552],"ul",{},[1543,1544,1545],"li",{},"0: FPS Frames rendered in the last second. The higher the number the better.",[1543,1547,1548],{},"1: MS Milliseconds needed to render a frame. The lower the number the better.",[1543,1550,1551],{},"2: MB MBytes of allocated memory. (Run Chrome with --enable-precise-memory-info)",[1543,1553,1554,1555,1558],{},"3+: CUSTOM User-defined panel support. For more info please check ",[905,1556,1362],{"href":1360,"rel":1557},[909],".",[876,1560,878],{},{"title":488,"searchDepth":489,"depth":490,"links":1562},[1563,1564],{"id":1381,"depth":490,"text":1382},{"id":821,"depth":490,"text":822},"JavaScript performance monitor to track FPS, MS, and memory usage.",{},{"title":303,"description":1565},"CEx2GwVgDehipIa_mCiC4Mpq7SAIqbwq61OScXwW86c",{"id":1570,"title":307,"body":1571,"description":1873,"extension":493,"links":494,"meta":1874,"navigation":496,"path":308,"seo":1875,"stem":309,"__hash__":1876},"docs/2.api/6.debug-performance/stats-gl.md",{"type":481,"value":1572,"toc":1869},[1573,1591,1594,1596,1713,1717,1867],[516,1574,1575,1580,1581,1586,1587,1590],{},[905,1576,1579],{"href":1577,"rel":1578},"https://github.com/RenaudRohlinger/stats-gl",[909],"stats-gl"," is a powerful WebGL performance monitoring tool created by ",[905,1582,1585],{"href":1583,"rel":1584},"https://github.com/RenaudRohlinger",[909],"RenaudRohlinger",".\nIt offers simple information boxes to track code performance and serves as a more advanced alternative to ",[905,1588,1362],{"href":1360,"rel":1589},[909],", capable of displaying CPU and GPU metrics.",[516,1592,1593],{},"In TresJS, you can effortlessly create a performance monitoring panel in the top left corner of your canvas by using the StatsGl component.\nSimply drop the StatsGl component into your TresCanvas for easy performance monitoring.",[524,1595,1382],{"id":1381},[528,1597,1600],{"className":530,"code":1598,"highlights":1599,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { TresCanvas } from '@tresjs/core'\nimport { StatsGl } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas>\n    \u003CStatsGl />\n  \u003C/TresCanvas>\n\u003C/template>\n",[533,671],[519,1601,1602,1622,1640,1660,1668,1672,1680,1688,1697,1705],{"__ignoreMap":488},[539,1603,1604,1606,1608,1610,1612,1614,1616,1618,1620],{"class":541,"line":489},[539,1605,545],{"class":544},[539,1607,549],{"class":548},[539,1609,553],{"class":552},[539,1611,556],{"class":552},[539,1613,559],{"class":544},[539,1615,562],{"class":544},[539,1617,566],{"class":565},[539,1619,562],{"class":544},[539,1621,571],{"class":544},[539,1623,1624,1626,1628,1630,1632,1634,1636,1638],{"class":541,"line":490},[539,1625,577],{"class":576},[539,1627,580],{"class":544},[539,1629,584],{"class":583},[539,1631,587],{"class":544},[539,1633,590],{"class":576},[539,1635,593],{"class":544},[539,1637,596],{"class":565},[539,1639,599],{"class":544},[539,1641,1643,1645,1647,1650,1652,1654,1656,1658],{"class":1642,"line":533},[541,603],[539,1644,577],{"class":576},[539,1646,580],{"class":544},[539,1648,1649],{"class":583}," StatsGl",[539,1651,587],{"class":544},[539,1653,590],{"class":576},[539,1655,593],{"class":544},[539,1657,619],{"class":565},[539,1659,599],{"class":544},[539,1661,1662,1664,1666],{"class":541,"line":624},[539,1663,648],{"class":544},[539,1665,549],{"class":548},[539,1667,571],{"class":544},[539,1669,1670],{"class":541,"line":645},[539,1671,658],{"emptyLinePlaceholder":496},[539,1673,1674,1676,1678],{"class":541,"line":655},[539,1675,545],{"class":544},[539,1677,666],{"class":548},[539,1679,571],{"class":544},[539,1681,1682,1684,1686],{"class":541,"line":661},[539,1683,674],{"class":544},[539,1685,677],{"class":548},[539,1687,571],{"class":544},[539,1689,1691,1693,1695],{"class":1690,"line":671},[541,603],[539,1692,685],{"class":544},[539,1694,307],{"class":548},[539,1696,703],{"class":544},[539,1698,1699,1701,1703],{"class":541,"line":682},[539,1700,805],{"class":544},[539,1702,677],{"class":548},[539,1704,571],{"class":544},[539,1706,1707,1709,1711],{"class":541,"line":706},[539,1708,648],{"class":544},[539,1710,666],{"class":548},[539,1712,571],{"class":544},[524,1714,1716],{"id":1715},"options","Options",[824,1718,1719,1732],{},[827,1720,1721],{},[830,1722,1723,1726,1728,1730],{},[833,1724,1725],{"align":835},"Name",[833,1727,1512],{},[833,1729,842],{},[833,1731,839],{},[844,1733,1734,1753,1772,1791,1810,1830,1849],{},[830,1735,1736,1741,1745,1750],{},[849,1737,1738],{"align":835},[852,1739,1740],{},"logsPerSecond",[849,1742,1743],{},[519,1744,1530],{},[849,1746,1747],{},[519,1748,1749],{},"20",[849,1751,1752],{},"How often to log performance data, in logs per second.",[830,1754,1755,1760,1764,1769],{},[849,1756,1757],{"align":835},[852,1758,1759],{},"samplesLog",[849,1761,1762],{},[519,1763,1530],{},[849,1765,1766],{},[519,1767,1768],{},"100",[849,1770,1771],{},"Number of recent log samples to keep for computing averages.",[830,1773,1774,1779,1783,1788],{},[849,1775,1776],{"align":835},[852,1777,1778],{},"samplesGraph",[849,1780,1781],{},[519,1782,1530],{},[849,1784,1785],{},[519,1786,1787],{},"10",[849,1789,1790],{},"Number of recent graph samples to keep for computing averages.",[830,1792,1793,1798,1802,1807],{},[849,1794,1795],{"align":835},[852,1796,1797],{},"precision",[849,1799,1800],{},[519,1801,1530],{},[849,1803,1804],{},[519,1805,1806],{},"2",[849,1808,1809],{},"Precision of the data, in the number of decimal places (only affects CPU and GPU).",[830,1811,1812,1817,1822,1827],{},[849,1813,1814],{"align":835},[852,1815,1816],{},"horizontal",[849,1818,1819],{},[519,1820,1821],{},"boolean",[849,1823,1824],{},[519,1825,1826],{},"true",[849,1828,1829],{},"Display the canvases on the X-axis, set to align on the vertical axis.",[830,1831,1832,1837,1841,1846],{},[849,1833,1834],{"align":835},[852,1835,1836],{},"minimal",[849,1838,1839],{},[519,1840,1821],{},[849,1842,1843],{},[519,1844,1845],{},"false",[849,1847,1848],{},"A boolean value to control the minimalistic mode of the panel display. If set to true, a simple click on the panel will switch between different metrics.",[830,1850,1851,1856,1860,1864],{},[849,1852,1853],{"align":835},[852,1854,1855],{},"mode",[849,1857,1858],{},[519,1859,1530],{},[849,1861,1862],{},[519,1863,1535],{},[849,1865,1866],{},"Sets the initial panel to display - 0 for FPS, 1 for CPU, and 2 for GPU (if supported).",[876,1868,878],{},{"title":488,"searchDepth":489,"depth":490,"links":1870},[1871,1872],{"id":1381,"depth":490,"text":1382},{"id":1715,"depth":490,"text":1716},"WebGL performance monitoring tool displaying CPU and GPU metrics.",{},{"title":307,"description":1873},"U7tHg9fUc_rOVhwBvVzqjDp7pPwOLcUprEa_GiH5-Uc",{"id":1878,"title":311,"body":1879,"description":3339,"extension":493,"links":494,"meta":3340,"navigation":496,"path":312,"seo":3341,"stem":313,"__hash__":3342},"docs/2.api/6.debug-performance/use-bvh.md",{"type":481,"value":1880,"toc":3315},[1881,1887,1894,1908,1912,1915,1920,1931,1933,1937,2124,2128,2131,2286,2290,2293,2585,2587,2602,2606,2659,2663,2669,2818,2822,2842,2846,2850,2853,2948,2952,2955,2998,3001,3005,3059,3063,3090,3094,3100,3258,3262,3266,3288,3292,3312],[1882,1883,1884],"scene-controls-wrapper",{},[1885,1886],"debug-performance-use-bounding-volume-hierarchy",{},[516,1888,1889,1890,1893],{},"A composable that dramatically improves raycasting performance by building a Bounding Volume Hierarchy (BVH) for your meshes. This can speed up raycasting by ",[852,1891,1892],{},"orders of magnitude",", especially for complex models with many triangles.",[516,1895,1896,1897,1902,1903,1558],{},"Built on top of ",[905,1898,1901],{"href":1899,"rel":1900},"https://github.com/gkjohnson/three-mesh-bvh",[909],"three-mesh-bvh"," by ",[905,1904,1907],{"href":1905,"rel":1906},"https://github.com/gkjohnson",[909],"Garrett Johnson",[524,1909,1911],{"id":1910},"what-is-bvh","What is BVH?",[516,1913,1914],{},"BVH (Bounding Volume Hierarchy) is a spatial data structure that organizes geometry into a tree of bounding boxes. Instead of testing every triangle during raycasting, the algorithm tests bounding boxes first and only checks triangles in boxes that intersect the ray. This reduces raycasting complexity from O(n) to O(log n).",[516,1916,1917],{},[852,1918,1919],{},"Use cases:",[1540,1921,1922,1925,1928],{},[1543,1923,1924],{},"Interactive 3D applications with raycasting (mouse picking, selection)",[1543,1926,1927],{},"Complex models with thousands of triangles",[1543,1929,1930],{},"Scenes with multiple raycasting operations per frame",[524,1932,15],{"id":526},[1934,1935,1936],"h3",{"id":1381},"Basic Usage",[528,1938,1941],{"className":530,"code":1939,"highlights":1940,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { useGLTF, useBVH } from '@tresjs/cientos'\n\nconst { state: model } = useGLTF('/models/complex-model.glb')\nuseBVH(() => model.value?.scene)\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cprimitive v-if=\"model\" :object=\"model.scene\" />\n\u003C/template>\n",[490,645,655,661,671,706],[519,1942,1943,1963,1989,1993,2032,2059,2068,2073,2082,2115],{"__ignoreMap":488},[539,1944,1945,1947,1949,1951,1953,1955,1957,1959,1961],{"class":541,"line":489},[539,1946,545],{"class":544},[539,1948,549],{"class":548},[539,1950,553],{"class":552},[539,1952,556],{"class":552},[539,1954,559],{"class":544},[539,1956,562],{"class":544},[539,1958,566],{"class":565},[539,1960,562],{"class":544},[539,1962,571],{"class":544},[539,1964,1966,1968,1970,1973,1976,1979,1981,1983,1985,1987],{"class":1965,"line":490},[541,603],[539,1967,577],{"class":576},[539,1969,580],{"class":544},[539,1971,1972],{"class":583}," useGLTF",[539,1974,1975],{"class":544},",",[539,1977,1978],{"class":583}," useBVH",[539,1980,587],{"class":544},[539,1982,590],{"class":576},[539,1984,593],{"class":544},[539,1986,619],{"class":565},[539,1988,599],{"class":544},[539,1990,1991],{"class":541,"line":533},[539,1992,658],{"emptyLinePlaceholder":496},[539,1994,1995,1998,2000,2003,2006,2009,2012,2015,2018,2021,2024,2027,2029],{"class":541,"line":624},[539,1996,1997],{"class":552},"const",[539,1999,580],{"class":544},[539,2001,2002],{"class":548}," state",[539,2004,2005],{"class":544},":",[539,2007,2008],{"class":583}," model ",[539,2010,2011],{"class":544},"}",[539,2013,2014],{"class":544}," =",[539,2016,1972],{"class":2017},"s2Zo4",[539,2019,2020],{"class":583},"(",[539,2022,2023],{"class":544},"'",[539,2025,2026],{"class":565},"/models/complex-model.glb",[539,2028,2023],{"class":544},[539,2030,2031],{"class":583},")\n",[539,2033,2035,2037,2039,2042,2045,2048,2050,2053,2056],{"class":2034,"line":645},[541,603],[539,2036,311],{"class":2017},[539,2038,2020],{"class":583},[539,2040,2041],{"class":544},"()",[539,2043,2044],{"class":552}," =>",[539,2046,2047],{"class":583}," model",[539,2049,1558],{"class":544},[539,2051,2052],{"class":583},"value",[539,2054,2055],{"class":544},"?.",[539,2057,2058],{"class":583},"scene)\n",[539,2060,2062,2064,2066],{"class":2061,"line":655},[541,603],[539,2063,648],{"class":544},[539,2065,549],{"class":548},[539,2067,571],{"class":544},[539,2069,2071],{"class":2070,"line":661},[541,603],[539,2072,658],{"emptyLinePlaceholder":496},[539,2074,2076,2078,2080],{"class":2075,"line":671},[541,603],[539,2077,545],{"class":544},[539,2079,666],{"class":548},[539,2081,571],{"class":544},[539,2083,2084,2086,2089,2092,2094,2096,2099,2101,2104,2106,2108,2111,2113],{"class":541,"line":682},[539,2085,674],{"class":544},[539,2087,2088],{"class":548},"primitive",[539,2090,2091],{"class":552}," v-if",[539,2093,559],{"class":544},[539,2095,562],{"class":544},[539,2097,2098],{"class":565},"model",[539,2100,562],{"class":544},[539,2102,2103],{"class":552}," :object",[539,2105,559],{"class":544},[539,2107,562],{"class":544},[539,2109,2110],{"class":565},"model.scene",[539,2112,562],{"class":544},[539,2114,703],{"class":544},[539,2116,2118,2120,2122],{"class":2117,"line":706},[541,603],[539,2119,648],{"class":544},[539,2121,666],{"class":548},[539,2123,571],{"class":544},[1934,2125,2127],{"id":2126},"with-debug-visualization","With Debug Visualization",[516,2129,2130],{},"Enable debug mode to visualize the BVH bounding boxes:",[528,2132,2135],{"className":530,"code":2133,"highlights":2134,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { useGLTF, useBVH } from '@tresjs/cientos'\n\nconst { state: model } = useGLTF('/models/model.glb')\n\nuseBVH(\n  () => model.value?.scene,\n  {\n    debug: true, // Show BVH bounding boxes\n  }\n)\n\u003C/script>\n",[624,645,655,661],[519,2136,2137,2157,2179,2183,2213,2218,2226,2248,2253,2269,2274,2278],{"__ignoreMap":488},[539,2138,2139,2141,2143,2145,2147,2149,2151,2153,2155],{"class":541,"line":489},[539,2140,545],{"class":544},[539,2142,549],{"class":548},[539,2144,553],{"class":552},[539,2146,556],{"class":552},[539,2148,559],{"class":544},[539,2150,562],{"class":544},[539,2152,566],{"class":565},[539,2154,562],{"class":544},[539,2156,571],{"class":544},[539,2158,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177],{"class":541,"line":490},[539,2160,577],{"class":576},[539,2162,580],{"class":544},[539,2164,1972],{"class":583},[539,2166,1975],{"class":544},[539,2168,1978],{"class":583},[539,2170,587],{"class":544},[539,2172,590],{"class":576},[539,2174,593],{"class":544},[539,2176,619],{"class":565},[539,2178,599],{"class":544},[539,2180,2181],{"class":541,"line":533},[539,2182,658],{"emptyLinePlaceholder":496},[539,2184,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2209,2211],{"class":2185,"line":624},[541,603],[539,2187,1997],{"class":552},[539,2189,580],{"class":544},[539,2191,2002],{"class":548},[539,2193,2005],{"class":544},[539,2195,2008],{"class":583},[539,2197,2011],{"class":544},[539,2199,2014],{"class":544},[539,2201,1972],{"class":2017},[539,2203,2020],{"class":583},[539,2205,2023],{"class":544},[539,2207,2208],{"class":565},"/models/model.glb",[539,2210,2023],{"class":544},[539,2212,2031],{"class":583},[539,2214,2216],{"class":2215,"line":645},[541,603],[539,2217,658],{"emptyLinePlaceholder":496},[539,2219,2221,2223],{"class":2220,"line":655},[541,603],[539,2222,311],{"class":2017},[539,2224,2225],{"class":583},"(\n",[539,2227,2229,2232,2234,2236,2238,2240,2242,2245],{"class":2228,"line":661},[541,603],[539,2230,2231],{"class":544},"  ()",[539,2233,2044],{"class":552},[539,2235,2047],{"class":583},[539,2237,1558],{"class":544},[539,2239,2052],{"class":583},[539,2241,2055],{"class":544},[539,2243,2244],{"class":583},"scene",[539,2246,2247],{"class":544},",\n",[539,2249,2250],{"class":541,"line":671},[539,2251,2252],{"class":544},"  {\n",[539,2254,2255,2258,2260,2264,2266],{"class":541,"line":682},[539,2256,2257],{"class":548},"    debug",[539,2259,2005],{"class":544},[539,2261,2263],{"class":2262},"sfNiH"," true",[539,2265,1975],{"class":544},[539,2267,2268],{"class":1046}," // Show BVH bounding boxes\n",[539,2270,2271],{"class":541,"line":706},[539,2272,2273],{"class":544},"  }\n",[539,2275,2276],{"class":541,"line":728},[539,2277,2031],{"class":583},[539,2279,2280,2282,2284],{"class":541,"line":739},[539,2281,648],{"class":544},[539,2283,549],{"class":548},[539,2285,571],{"class":544},[1934,2287,2289],{"id":2288},"reactive-enabled-state","Reactive Enabled State",[516,2291,2292],{},"Control BVH optimization dynamically:",[528,2294,2297],{"className":530,"code":2295,"highlights":2296,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { ref, computed } from 'vue'\nimport { useGLTF, useBVH } from '@tresjs/cientos'\n\nconst bvhEnabled = ref(true)\n\nconst { state: model } = useGLTF('/models/model.glb')\n\nuseBVH(\n  () => model.value?.scene,\n  {\n    enabled: bvhEnabled,\n  }\n)\n\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cbutton @click=\"bvhEnabled = !bvhEnabled\">\n      Toggle BVH\n    \u003C/button>\n    \u003Cprimitive v-if=\"model\" :object=\"model.scene\" />\n  \u003C/div>\n\u003C/template>\n",[624,655,661,671,682],[519,2298,2299,2319,2342,2364,2369,2386,2391,2420,2425,2432,2450,2454,2466,2470,2474,2478,2486,2490,2498,2507,2528,2533,2541,2569,2577],{"__ignoreMap":488},[539,2300,2301,2303,2305,2307,2309,2311,2313,2315,2317],{"class":541,"line":489},[539,2302,545],{"class":544},[539,2304,549],{"class":548},[539,2306,553],{"class":552},[539,2308,556],{"class":552},[539,2310,559],{"class":544},[539,2312,562],{"class":544},[539,2314,566],{"class":565},[539,2316,562],{"class":544},[539,2318,571],{"class":544},[539,2320,2321,2323,2325,2327,2329,2332,2334,2336,2338,2340],{"class":541,"line":490},[539,2322,577],{"class":576},[539,2324,580],{"class":544},[539,2326,714],{"class":583},[539,2328,1975],{"class":544},[539,2330,2331],{"class":583}," computed",[539,2333,587],{"class":544},[539,2335,590],{"class":576},[539,2337,593],{"class":544},[539,2339,535],{"class":565},[539,2341,599],{"class":544},[539,2343,2344,2346,2348,2350,2352,2354,2356,2358,2360,2362],{"class":541,"line":533},[539,2345,577],{"class":576},[539,2347,580],{"class":544},[539,2349,1972],{"class":583},[539,2351,1975],{"class":544},[539,2353,1978],{"class":583},[539,2355,587],{"class":544},[539,2357,590],{"class":576},[539,2359,593],{"class":544},[539,2361,619],{"class":565},[539,2363,599],{"class":544},[539,2365,2367],{"class":2366,"line":624},[541,603],[539,2368,658],{"emptyLinePlaceholder":496},[539,2370,2371,2373,2376,2378,2380,2382,2384],{"class":541,"line":645},[539,2372,1997],{"class":552},[539,2374,2375],{"class":583}," bvhEnabled ",[539,2377,559],{"class":544},[539,2379,714],{"class":2017},[539,2381,2020],{"class":583},[539,2383,1826],{"class":2262},[539,2385,2031],{"class":583},[539,2387,2389],{"class":2388,"line":655},[541,603],[539,2390,658],{"emptyLinePlaceholder":496},[539,2392,2394,2396,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418],{"class":2393,"line":661},[541,603],[539,2395,1997],{"class":552},[539,2397,580],{"class":544},[539,2399,2002],{"class":548},[539,2401,2005],{"class":544},[539,2403,2008],{"class":583},[539,2405,2011],{"class":544},[539,2407,2014],{"class":544},[539,2409,1972],{"class":2017},[539,2411,2020],{"class":583},[539,2413,2023],{"class":544},[539,2415,2208],{"class":565},[539,2417,2023],{"class":544},[539,2419,2031],{"class":583},[539,2421,2423],{"class":2422,"line":671},[541,603],[539,2424,658],{"emptyLinePlaceholder":496},[539,2426,2428,2430],{"class":2427,"line":682},[541,603],[539,2429,311],{"class":2017},[539,2431,2225],{"class":583},[539,2433,2434,2436,2438,2440,2442,2444,2446,2448],{"class":541,"line":706},[539,2435,2231],{"class":544},[539,2437,2044],{"class":552},[539,2439,2047],{"class":583},[539,2441,1558],{"class":544},[539,2443,2052],{"class":583},[539,2445,2055],{"class":544},[539,2447,2244],{"class":583},[539,2449,2247],{"class":544},[539,2451,2452],{"class":541,"line":728},[539,2453,2252],{"class":544},[539,2455,2456,2459,2461,2464],{"class":541,"line":739},[539,2457,2458],{"class":548},"    enabled",[539,2460,2005],{"class":544},[539,2462,2463],{"class":583}," bvhEnabled",[539,2465,2247],{"class":544},[539,2467,2468],{"class":541,"line":534},[539,2469,2273],{"class":544},[539,2471,2472],{"class":541,"line":782},[539,2473,2031],{"class":583},[539,2475,2476],{"class":541,"line":792},[539,2477,658],{"emptyLinePlaceholder":496},[539,2479,2480,2482,2484],{"class":541,"line":802},[539,2481,648],{"class":544},[539,2483,549],{"class":548},[539,2485,571],{"class":544},[539,2487,2488],{"class":541,"line":812},[539,2489,658],{"emptyLinePlaceholder":496},[539,2491,2492,2494,2496],{"class":541,"line":1141},[539,2493,545],{"class":544},[539,2495,666],{"class":548},[539,2497,571],{"class":544},[539,2499,2500,2502,2505],{"class":541,"line":1161},[539,2501,674],{"class":544},[539,2503,2504],{"class":548},"div",[539,2506,571],{"class":544},[539,2508,2509,2511,2514,2517,2519,2521,2524,2526],{"class":541,"line":1170},[539,2510,685],{"class":544},[539,2512,2513],{"class":548},"button",[539,2515,2516],{"class":552}," @click",[539,2518,559],{"class":544},[539,2520,562],{"class":544},[539,2522,2523],{"class":565},"bvhEnabled = !bvhEnabled",[539,2525,562],{"class":544},[539,2527,571],{"class":544},[539,2529,2530],{"class":541,"line":1176},[539,2531,2532],{"class":583},"      Toggle BVH\n",[539,2534,2535,2537,2539],{"class":541,"line":1185},[539,2536,785],{"class":544},[539,2538,2513],{"class":548},[539,2540,571],{"class":544},[539,2542,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567],{"class":541,"line":1205},[539,2544,685],{"class":544},[539,2546,2088],{"class":548},[539,2548,2091],{"class":552},[539,2550,559],{"class":544},[539,2552,562],{"class":544},[539,2554,2098],{"class":565},[539,2556,562],{"class":544},[539,2558,2103],{"class":552},[539,2560,559],{"class":544},[539,2562,562],{"class":544},[539,2564,2110],{"class":565},[539,2566,562],{"class":544},[539,2568,703],{"class":544},[539,2570,2571,2573,2575],{"class":541,"line":1225},[539,2572,805],{"class":544},[539,2574,2504],{"class":548},[539,2576,571],{"class":544},[539,2578,2579,2581,2583],{"class":541,"line":1234},[539,2580,648],{"class":544},[539,2582,666],{"class":548},[539,2584,571],{"class":544},[524,2586,1716],{"id":1715},[516,2588,2589,2590,2593,2594,2597,2598,2601],{},"Options are divided into ",[852,2591,2592],{},"reactive"," (can change at runtime) and ",[852,2595,2596],{},"static"," (set once at creation - changing requires toggling ",[519,2599,2600],{},"enabled"," off/on to rebuild).",[1934,2603,2605],{"id":2604},"reactive-options","Reactive Options",[824,2607,2608,2621],{},[827,2609,2610],{},[830,2611,2612,2615,2617,2619],{},[833,2613,2614],{"align":835},"Option",[833,2616,1512],{"align":835},[833,2618,842],{"align":835},[833,2620,839],{"align":835},[844,2622,2623,2641],{},[830,2624,2625,2629,2634,2638],{},[849,2626,2627],{"align":835},[852,2628,2600],{},[849,2630,2631],{"align":835},[519,2632,2633],{},"MaybeRefOrGetter\u003Cboolean>",[849,2635,2636],{"align":835},[519,2637,1826],{},[849,2639,2640],{"align":835},"Enable/disable BVH optimization. Toggling rebuilds BVH structures.",[830,2642,2643,2648,2652,2656],{},[849,2644,2645],{"align":835},[852,2646,2647],{},"debug",[849,2649,2650],{"align":835},[519,2651,2633],{},[849,2653,2654],{"align":835},[519,2655,1845],{},[849,2657,2658],{"align":835},"Show debug visualization of BVH bounding boxes.",[1934,2660,2662],{"id":2661},"static-options-bvh-construction","Static Options (BVH Construction)",[516,2664,2665,2666,2668],{},"These options configure how the BVH is built. Changing them after creation has no effect - toggle ",[519,2667,2600],{}," off/on to rebuild with new values.",[824,2670,2671,2683],{},[827,2672,2673],{},[830,2674,2675,2677,2679,2681],{},[833,2676,2614],{"align":835},[833,2678,1512],{"align":835},[833,2680,842],{"align":835},[833,2682,839],{"align":835},[844,2684,2685,2707,2727,2746,2764,2782,2800],{},[830,2686,2687,2692,2696,2700],{},[849,2688,2689],{"align":835},[852,2690,2691],{},"firstHitOnly",[849,2693,2694],{"align":835},[519,2695,1821],{},[849,2697,2698],{"align":835},[519,2699,1845],{},[849,2701,2702,2703,2706],{"align":835},"Use ",[519,2704,2705],{},"raycastFirst"," for better performance when only the first hit is needed.",[830,2708,2709,2714,2719,2724],{},[849,2710,2711],{"align":835},[852,2712,2713],{},"splitStrategy",[849,2715,2716],{"align":835},[519,2717,2718],{},"'CENTER' | 'AVERAGE' | 'SAH'",[849,2720,2721],{"align":835},[519,2722,2723],{},"'SAH'",[849,2725,2726],{"align":835},"BVH build strategy. See section below.",[830,2728,2729,2734,2738,2743],{},[849,2730,2731],{"align":835},[852,2732,2733],{},"maxDepth",[849,2735,2736],{"align":835},[519,2737,1530],{},[849,2739,2740],{"align":835},[519,2741,2742],{},"40",[849,2744,2745],{"align":835},"Maximum tree depth for the BVH structure.",[830,2747,2748,2753,2757,2761],{},[849,2749,2750],{"align":835},[852,2751,2752],{},"maxLeafSize",[849,2754,2755],{"align":835},[519,2756,1530],{},[849,2758,2759],{"align":835},[519,2760,1787],{},[849,2762,2763],{"align":835},"Target number of triangles per leaf node.",[830,2765,2766,2771,2775,2779],{},[849,2767,2768],{"align":835},[852,2769,2770],{},"verbose",[849,2772,2773],{"align":835},[519,2774,1821],{},[849,2776,2777],{"align":835},[519,2778,1845],{},[849,2780,2781],{"align":835},"Print construction warnings and progress to console.",[830,2783,2784,2789,2793,2797],{},[849,2785,2786],{"align":835},[852,2787,2788],{},"setBoundingBox",[849,2790,2791],{"align":835},[519,2792,1821],{},[849,2794,2795],{"align":835},[519,2796,1826],{},[849,2798,2799],{"align":835},"Automatically set geometry bounding box after BVH construction.",[830,2801,2802,2807,2811,2815],{},[849,2803,2804],{"align":835},[852,2805,2806],{},"indirect",[849,2808,2809],{"align":835},[519,2810,1821],{},[849,2812,2813],{"align":835},[519,2814,1845],{},[849,2816,2817],{"align":835},"If false, creates and rearranges index buffer for better performance.",[1934,2819,2821],{"id":2820},"split-strategies","Split Strategies",[1540,2823,2824,2830,2836],{},[1543,2825,2826,2829],{},[852,2827,2828],{},"SAH (Surface Area Heuristic)"," - Slowest to build, fastest at runtime, uses least memory. Best for production.",[1543,2831,2832,2835],{},[852,2833,2834],{},"AVERAGE"," - Balanced build time and runtime performance.",[1543,2837,2838,2841],{},[852,2839,2840],{},"CENTER"," - Fastest to build, slower at runtime.",[524,2843,2845],{"id":2844},"advanced-usage","Advanced Usage",[1934,2847,2849],{"id":2848},"fine-tuning-performance","Fine-tuning Performance",[516,2851,2852],{},"Adjust BVH construction parameters for your use case:",[528,2854,2857],{"className":2855,"code":2856,"language":566,"meta":488,"style":488},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","useBVH(\n  target,\n  {\n    splitStrategy: 'SAH', // Best runtime performance\n    maxDepth: 30, // Shallower tree (faster build)\n    maxLeafSize: 5, // Smaller leaves (better culling)\n    verbose: true, // Debug construction\n  }\n)\n",[519,2858,2859,2865,2872,2876,2895,2911,2926,2940,2944],{"__ignoreMap":488},[539,2860,2861,2863],{"class":541,"line":489},[539,2862,311],{"class":2017},[539,2864,2225],{"class":583},[539,2866,2867,2870],{"class":541,"line":490},[539,2868,2869],{"class":583},"  target",[539,2871,2247],{"class":544},[539,2873,2874],{"class":541,"line":533},[539,2875,2252],{"class":544},[539,2877,2878,2881,2883,2885,2888,2890,2892],{"class":541,"line":624},[539,2879,2880],{"class":548},"    splitStrategy",[539,2882,2005],{"class":544},[539,2884,593],{"class":544},[539,2886,2887],{"class":565},"SAH",[539,2889,2023],{"class":544},[539,2891,1975],{"class":544},[539,2893,2894],{"class":1046}," // Best runtime performance\n",[539,2896,2897,2900,2902,2906,2908],{"class":541,"line":645},[539,2898,2899],{"class":548},"    maxDepth",[539,2901,2005],{"class":544},[539,2903,2905],{"class":2904},"sbssI"," 30",[539,2907,1975],{"class":544},[539,2909,2910],{"class":1046}," // Shallower tree (faster build)\n",[539,2912,2913,2916,2918,2921,2923],{"class":541,"line":655},[539,2914,2915],{"class":548},"    maxLeafSize",[539,2917,2005],{"class":544},[539,2919,2920],{"class":2904}," 5",[539,2922,1975],{"class":544},[539,2924,2925],{"class":1046}," // Smaller leaves (better culling)\n",[539,2927,2928,2931,2933,2935,2937],{"class":541,"line":661},[539,2929,2930],{"class":548},"    verbose",[539,2932,2005],{"class":544},[539,2934,2263],{"class":2262},[539,2936,1975],{"class":544},[539,2938,2939],{"class":1046}," // Debug construction\n",[539,2941,2942],{"class":541,"line":671},[539,2943,2273],{"class":544},[539,2945,2946],{"class":541,"line":682},[539,2947,2031],{"class":583},[1934,2949,2951],{"id":2950},"first-hit-only-mode","First Hit Only Mode",[516,2953,2954],{},"When you only need the closest intersection (e.g., mouse picking):",[528,2956,2958],{"className":2855,"code":2957,"language":566,"meta":488,"style":488},"useBVH(\n  target,\n  {\n    firstHitOnly: true, // Uses raycastFirst internally\n  }\n)\n",[519,2959,2960,2966,2972,2976,2990,2994],{"__ignoreMap":488},[539,2961,2962,2964],{"class":541,"line":489},[539,2963,311],{"class":2017},[539,2965,2225],{"class":583},[539,2967,2968,2970],{"class":541,"line":490},[539,2969,2869],{"class":583},[539,2971,2247],{"class":544},[539,2973,2974],{"class":541,"line":533},[539,2975,2252],{"class":544},[539,2977,2978,2981,2983,2985,2987],{"class":541,"line":624},[539,2979,2980],{"class":548},"    firstHitOnly",[539,2982,2005],{"class":544},[539,2984,2263],{"class":2262},[539,2986,1975],{"class":544},[539,2988,2989],{"class":1046}," // Uses raycastFirst internally\n",[539,2991,2992],{"class":541,"line":645},[539,2993,2273],{"class":544},[539,2995,2996],{"class":541,"line":655},[539,2997,2031],{"class":583},[516,2999,3000],{},"This is significantly faster than computing all intersections when you only need one.",[524,3002,3004],{"id":3003},"important-notes","Important Notes",[1540,3006,3007,3013,3034,3040,3053],{},[1543,3008,3009,3012],{},[852,3010,3011],{},"Side-effect free",": BVH is automatically removed on unmount and when disabled.",[1543,3014,3015,3018,3019,3021,3022,3024,3025,3027,3028,3030,3031,3033],{},[852,3016,3017],{},"Reactive options",": Only ",[519,3020,2600],{}," and ",[519,3023,2647],{}," are reactive. Construction options (",[519,3026,2713],{},", ",[519,3029,2733],{},", etc.) are static - to apply new values, toggle ",[519,3032,2600],{}," off/on.",[1543,3035,3036,3039],{},[852,3037,3038],{},"Memory efficient",": BVH structures are properly disposed when removed.",[1543,3041,3042,3045,3046,3021,3049,3052],{},[852,3043,3044],{},"Automatic mesh detection",": Works with ",[519,3047,3048],{},"Mesh",[519,3050,3051],{},"SkinnedMesh"," instances.",[1543,3054,3055,3058],{},[852,3056,3057],{},"Draco models",": Works seamlessly with Draco-compressed GLTF models.",[524,3060,3062],{"id":3061},"performance-tips","Performance Tips",[3064,3065,3066,3072,3078,3084],"ol",{},[1543,3067,3068,3071],{},[852,3069,3070],{},"Use firstHitOnly"," when you only need the closest intersection",[1543,3073,3074,3077],{},[852,3075,3076],{},"SAH strategy"," gives best runtime performance for production",[1543,3079,3080,3083],{},[852,3081,3082],{},"Adjust maxLeafSize"," based on triangle density (smaller for dense meshes)",[1543,3085,3086,3089],{},[852,3087,3088],{},"Enable debug mode"," during development to verify BVH coverage",[524,3091,3093],{"id":3092},"integration-with-usegltf","Integration with useGLTF",[516,3095,3096,3097,3099],{},"Perfect pairing with ",[519,3098,121],{}," for optimized model loading:",[528,3101,3103],{"className":530,"code":3102,"language":535,"meta":488,"style":488},"\u003Cscript setup lang=\"ts\">\nimport { useBVH, useGLTF } from '@tresjs/cientos'\n\nconst { state: model } = useGLTF('/models/high-poly-model.glb', {\n  draco: true\n})\n\nuseBVH(\n  () => model.value?.scene,\n  { splitStrategy: 'SAH' }\n)\n\u003C/script>\n",[519,3104,3105,3125,3147,3151,3183,3193,3199,3203,3209,3227,3246,3250],{"__ignoreMap":488},[539,3106,3107,3109,3111,3113,3115,3117,3119,3121,3123],{"class":541,"line":489},[539,3108,545],{"class":544},[539,3110,549],{"class":548},[539,3112,553],{"class":552},[539,3114,556],{"class":552},[539,3116,559],{"class":544},[539,3118,562],{"class":544},[539,3120,566],{"class":565},[539,3122,562],{"class":544},[539,3124,571],{"class":544},[539,3126,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145],{"class":541,"line":490},[539,3128,577],{"class":576},[539,3130,580],{"class":544},[539,3132,1978],{"class":583},[539,3134,1975],{"class":544},[539,3136,1972],{"class":583},[539,3138,587],{"class":544},[539,3140,590],{"class":576},[539,3142,593],{"class":544},[539,3144,619],{"class":565},[539,3146,599],{"class":544},[539,3148,3149],{"class":541,"line":533},[539,3150,658],{"emptyLinePlaceholder":496},[539,3152,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3176,3178,3180],{"class":541,"line":624},[539,3154,1997],{"class":552},[539,3156,580],{"class":544},[539,3158,2002],{"class":548},[539,3160,2005],{"class":544},[539,3162,2008],{"class":583},[539,3164,2011],{"class":544},[539,3166,2014],{"class":544},[539,3168,1972],{"class":2017},[539,3170,2020],{"class":583},[539,3172,2023],{"class":544},[539,3174,3175],{"class":565},"/models/high-poly-model.glb",[539,3177,2023],{"class":544},[539,3179,1975],{"class":544},[539,3181,3182],{"class":544}," {\n",[539,3184,3185,3188,3190],{"class":541,"line":645},[539,3186,3187],{"class":548},"  draco",[539,3189,2005],{"class":544},[539,3191,3192],{"class":2262}," true\n",[539,3194,3195,3197],{"class":541,"line":655},[539,3196,2011],{"class":544},[539,3198,2031],{"class":583},[539,3200,3201],{"class":541,"line":661},[539,3202,658],{"emptyLinePlaceholder":496},[539,3204,3205,3207],{"class":541,"line":671},[539,3206,311],{"class":2017},[539,3208,2225],{"class":583},[539,3210,3211,3213,3215,3217,3219,3221,3223,3225],{"class":541,"line":682},[539,3212,2231],{"class":544},[539,3214,2044],{"class":552},[539,3216,2047],{"class":583},[539,3218,1558],{"class":544},[539,3220,2052],{"class":583},[539,3222,2055],{"class":544},[539,3224,2244],{"class":583},[539,3226,2247],{"class":544},[539,3228,3229,3232,3235,3237,3239,3241,3243],{"class":541,"line":706},[539,3230,3231],{"class":544},"  {",[539,3233,3234],{"class":548}," splitStrategy",[539,3236,2005],{"class":544},[539,3238,593],{"class":544},[539,3240,2887],{"class":565},[539,3242,2023],{"class":544},[539,3244,3245],{"class":544}," }\n",[539,3247,3248],{"class":541,"line":728},[539,3249,2031],{"class":583},[539,3251,3252,3254,3256],{"class":541,"line":739},[539,3253,648],{"class":544},[539,3255,549],{"class":548},[539,3257,571],{"class":544},[524,3259,3261],{"id":3260},"troubleshooting","Troubleshooting",[1934,3263,3265],{"id":3264},"bvh-not-applying-to-some-meshes","BVH not applying to some meshes",[1540,3267,3268,3271,3278],{},[1543,3269,3270],{},"Ensure meshes have valid geometry with position attributes",[1543,3272,3273,3274,3277],{},"Check console with ",[519,3275,3276],{},"verbose: true"," to see which meshes are skipped",[1543,3279,3280,3281,3284,3285,3287],{},"Verify the object is an ",[519,3282,3283],{},"Object3D"," (use ",[519,3286,2088],{}," in templates)",[1934,3289,3291],{"id":3290},"performance-not-improving","Performance not improving",[1540,3293,3294,3300,3306,3309],{},[1543,3295,3296,3297,3299],{},"Enable ",[519,3298,2691],{}," if you only need one intersection",[1543,3301,3302,3303,3305],{},"Try different split strategies (",[519,3304,2887],{}," is usually best)",[1543,3307,3308],{},"Verify raycasting is the bottleneck (use Stats/StatsGl)",[1543,3310,3311],{},"Consider LOD for very distant objects",[876,3313,3314],{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":488,"searchDepth":489,"depth":490,"links":3316},[3317,3318,3323,3328,3332,3333,3334,3335],{"id":1910,"depth":490,"text":1911},{"id":526,"depth":490,"text":15,"children":3319},[3320,3321,3322],{"id":1381,"depth":533,"text":1936},{"id":2126,"depth":533,"text":2127},{"id":2288,"depth":533,"text":2289},{"id":1715,"depth":490,"text":1716,"children":3324},[3325,3326,3327],{"id":2604,"depth":533,"text":2605},{"id":2661,"depth":533,"text":2662},{"id":2820,"depth":533,"text":2821},{"id":2844,"depth":490,"text":2845,"children":3329},[3330,3331],{"id":2848,"depth":533,"text":2849},{"id":2950,"depth":533,"text":2951},{"id":3003,"depth":490,"text":3004},{"id":3061,"depth":490,"text":3062},{"id":3092,"depth":490,"text":3093},{"id":3260,"depth":490,"text":3261,"children":3336},[3337,3338],{"id":3264,"depth":533,"text":3265},{"id":3290,"depth":533,"text":3291},"Speed up raycasting with Bounding Volume Hierarchy (BVH) optimization.",{},{"title":311,"description":3339},"Ubx_HIq-xEI-Pv2T8zVe8LT3sJ_wBF7VmDcGGpLgBYs",1782052436146]