[{"data":1,"prerenderedAt":2053},["ShallowReactive",2],{"navigation":3,"/api/debug-performance/use-bvh":466,"/api/debug-performance/use-bvh-surround":2048},[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,80,110,152,186,280,306,340,390,432],{"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],{"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},"Edges","/api/abstractions/edges","2.api/1.abstractions/edges",{"title":53,"path":54,"stem":55},"Fit","/api/abstractions/fit","2.api/1.abstractions/fit",{"title":57,"path":58,"stem":59},"Levioso (Float)","/api/abstractions/levioso","2.api/1.abstractions/levioso",{"title":61,"path":62,"stem":63},"Mask","/api/abstractions/mask","2.api/1.abstractions/mask",{"title":65,"path":66,"stem":67},"Outline","/api/abstractions/outline","2.api/1.abstractions/outline",{"title":69,"path":70,"stem":71},"Sampler","/api/abstractions/sampler","2.api/1.abstractions/sampler",{"title":73,"path":74,"stem":75},"ScreenSizer","/api/abstractions/screen-sizer","2.api/1.abstractions/screen-sizer",{"title":77,"path":78,"stem":79},"ScreenSpace","/api/abstractions/screen-space","2.api/1.abstractions/screen-space",{"title":81,"path":82,"stem":83,"children":84},"Controls","/api/controls","2.api/2.controls/index",[85,86,90,94,98,102,106],{"title":81,"path":82,"stem":83},{"title":87,"path":88,"stem":89},"Camera Controls","/api/controls/camera-controls","2.api/2.controls/camera-controls",{"title":91,"path":92,"stem":93},"Keyboard Controls","/api/controls/keyboard-controls","2.api/2.controls/keyboard-controls",{"title":95,"path":96,"stem":97},"Map Controls","/api/controls/map-controls","2.api/2.controls/map-controls",{"title":99,"path":100,"stem":101},"Orbit Controls","/api/controls/orbit-controls","2.api/2.controls/orbit-controls",{"title":103,"path":104,"stem":105},"PointerLock Controls","/api/controls/pointer-lock-controls","2.api/2.controls/pointer-lock-controls",{"title":107,"path":108,"stem":109},"Transform Controls","/api/controls/transform-controls","2.api/2.controls/transform-controls",{"title":111,"path":112,"stem":113,"children":114},"Loaders","/api/loaders","2.api/3.loaders/index",[115,116,120,124,128,132,136,140,144,148],{"title":111,"path":112,"stem":113},{"title":117,"path":118,"stem":119},"useGLTF","/api/loaders/use-gltf","2.api/3.loaders/1.use-gltf",{"title":121,"path":122,"stem":123},"GLTFModel","/api/loaders/gltf-model","2.api/3.loaders/2.gltf-model",{"title":125,"path":126,"stem":127},"useFBX","/api/loaders/use-fbx","2.api/3.loaders/3.use-fbx",{"title":129,"path":130,"stem":131},"FBXModel","/api/loaders/fbx-model","2.api/3.loaders/4.fbx-model",{"title":133,"path":134,"stem":135},"useTexture","/api/loaders/use-texture","2.api/3.loaders/5.use-texture",{"title":137,"path":138,"stem":139},"useTextures","/api/loaders/use-textures","2.api/3.loaders/6.use-textures",{"title":141,"path":142,"stem":143},"useSVG","/api/loaders/use-svg","2.api/3.loaders/7.use-svg",{"title":145,"path":146,"stem":147},"useProgress","/api/loaders/use-progress","2.api/3.loaders/use-progress",{"title":149,"path":150,"stem":151},"useVideoTexture","/api/loaders/use-video-texture","2.api/3.loaders/use-video-texture",{"title":153,"path":154,"stem":155,"children":156},"Materials","/api/materials","2.api/4.materials/index",[157,158,162,166,170,174,178,182],{"title":153,"path":154,"stem":155},{"title":159,"path":160,"stem":161},"Custom Shader Material","/api/materials/custom-shader-material","2.api/4.materials/custom-shader-material",{"title":163,"path":164,"stem":165},"Mesh Glass Material","/api/materials/glass-material","2.api/4.materials/glass-material",{"title":167,"path":168,"stem":169},"Holographic Material","/api/materials/holographic-material","2.api/4.materials/holographic-material",{"title":171,"path":172,"stem":173},"Mesh Discard Material","/api/materials/mesh-discard-material","2.api/4.materials/mesh-discard-material",{"title":175,"path":176,"stem":177},"Mesh Reflection Material","/api/materials/mesh-reflection-material","2.api/4.materials/mesh-reflection-material",{"title":179,"path":180,"stem":181},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":183,"path":184,"stem":185},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":187,"path":188,"stem":189,"children":190},"Shapes","/api/shapes","2.api/5.shapes/index",[191,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276],{"title":187,"path":188,"stem":189},{"title":193,"path":194,"stem":195},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":197,"path":198,"stem":199},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":201,"path":202,"stem":203},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":205,"path":206,"stem":207},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":209,"path":210,"stem":211},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":213,"path":214,"stem":215},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":217,"path":218,"stem":219},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":221,"path":222,"stem":223},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":225,"path":226,"stem":227},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":229,"path":230,"stem":231},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":233,"path":234,"stem":235},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":237,"path":238,"stem":239},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":241,"path":242,"stem":243},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":245,"path":246,"stem":247},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":249,"path":250,"stem":251},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":253,"path":254,"stem":255},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":257,"path":258,"stem":259},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":261,"path":262,"stem":263},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":265,"path":266,"stem":267},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":269,"path":270,"stem":271},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":273,"path":274,"stem":275},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":277,"path":278,"stem":279},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":281,"path":282,"stem":283,"children":284},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[285,286,290,294,298,302],{"title":281,"path":282,"stem":283},{"title":287,"path":288,"stem":289},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":291,"path":292,"stem":293},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":295,"path":296,"stem":297},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":299,"path":300,"stem":301},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":303,"path":304,"stem":305},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":307,"path":308,"stem":309,"children":310},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[311,312,316,320,324,328,332,336],{"title":307,"path":308,"stem":309},{"title":313,"path":314,"stem":315},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":317,"path":318,"stem":319},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":321,"path":322,"stem":323},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":325,"path":326,"stem":327},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":329,"path":330,"stem":331},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":333,"path":334,"stem":335},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":337,"path":338,"stem":339},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":341,"path":342,"stem":343,"children":344},"Staging","/api/staging","2.api/8.staging/index",[345,346,350,354,358,362,366,370,374,378,382,386],{"title":341,"path":342,"stem":343},{"title":347,"path":348,"stem":349},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":351,"path":352,"stem":353},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":355,"path":356,"stem":357},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":359,"path":360,"stem":361},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":363,"path":364,"stem":365},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":367,"path":368,"stem":369},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":371,"path":372,"stem":373},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":375,"path":376,"stem":377},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":379,"path":380,"stem":381},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":383,"path":384,"stem":385},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":387,"path":388,"stem":389},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":391,"path":392,"stem":393,"children":394},"Objects","/api/objects","2.api/9.objects/index",[395,396,400,404,408,412,416,420,424,428],{"title":391,"path":392,"stem":393},{"title":397,"path":398,"stem":399},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":401,"path":402,"stem":403},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":405,"path":406,"stem":407},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":409,"path":410,"stem":411},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":413,"path":414,"stem":415},"HTML","/api/objects/html","2.api/9.objects/html",{"title":417,"path":418,"stem":419},"Image","/api/objects/image","2.api/9.objects/image",{"title":421,"path":422,"stem":423},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":425,"path":426,"stem":427},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":429,"path":430,"stem":431},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":433,"path":434,"stem":435,"children":436},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[437,438,442,446,450,454,458,462],{"title":433,"path":434,"stem":435},{"title":439,"path":440,"stem":441},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":443,"path":444,"stem":445},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":447,"path":448,"stem":449},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":451,"path":452,"stem":453},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":455,"path":456,"stem":457},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":459,"path":460,"stem":461},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":463,"path":464,"stem":465},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":467,"title":303,"body":468,"description":2042,"extension":2043,"links":2044,"meta":2045,"navigation":630,"path":304,"seo":2046,"stem":305,"__hash__":2047},"docs/2.api/6.debug-performance/use-bvh.md",{"type":469,"value":470,"toc":2018},"minimark",[471,477,486,503,508,511,516,529,532,537,776,780,783,940,944,947,1271,1275,1290,1294,1358,1362,1368,1520,1524,1544,1548,1552,1555,1650,1654,1657,1700,1703,1707,1761,1765,1792,1796,1802,1960,1964,1968,1990,1994,2014],[472,473,474],"scene-controls-wrapper",{},[475,476],"debug-performance-use-bounding-volume-hierarchy",{},[478,479,480,481,485],"p",{},"A composable that dramatically improves raycasting performance by building a Bounding Volume Hierarchy (BVH) for your meshes. This can speed up raycasting by ",[482,483,484],"strong",{},"orders of magnitude",", especially for complex models with many triangles.",[478,487,488,489,496,497,502],{},"Built on top of ",[490,491,495],"a",{"href":492,"rel":493},"https://github.com/gkjohnson/three-mesh-bvh",[494],"nofollow","three-mesh-bvh"," by ",[490,498,501],{"href":499,"rel":500},"https://github.com/gkjohnson",[494],"Garrett Johnson",".",[504,505,507],"h2",{"id":506},"what-is-bvh","What is BVH?",[478,509,510],{},"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).",[478,512,513],{},[482,514,515],{},"Use cases:",[517,518,519,523,526],"ul",{},[520,521,522],"li",{},"Interactive 3D applications with raycasting (mouse picking, selection)",[520,524,525],{},"Complex models with thousands of triangles",[520,527,528],{},"Scenes with multiple raycasting operations per frame",[504,530,15],{"id":531},"usage",[533,534,536],"h3",{"id":535},"basic-usage","Basic Usage",[538,539,551],"pre",{"className":540,"code":541,"highlights":542,"language":549,"meta":550,"style":550},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\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",[543,544,545,546,547,548],2,5,6,7,8,10,"vue","",[552,553,554,589,625,632,672,699,709,714,724,767],"code",{"__ignoreMap":550},[555,556,559,563,567,571,574,577,580,584,586],"span",{"class":557,"line":558},"line",1,[555,560,562],{"class":561},"sMK4o","\u003C",[555,564,566],{"class":565},"swJcz","script",[555,568,570],{"class":569},"spNyl"," setup",[555,572,573],{"class":569}," lang",[555,575,576],{"class":561},"=",[555,578,579],{"class":561},"\"",[555,581,583],{"class":582},"sfazB","ts",[555,585,579],{"class":561},[555,587,588],{"class":561},">\n",[555,590,593,597,600,604,607,610,613,616,619,622],{"class":591,"line":543},[557,592],"highlight",[555,594,596],{"class":595},"s7zQu","import",[555,598,599],{"class":561}," {",[555,601,603],{"class":602},"sTEyZ"," useGLTF",[555,605,606],{"class":561},",",[555,608,609],{"class":602}," useBVH",[555,611,612],{"class":561}," }",[555,614,615],{"class":595}," from",[555,617,618],{"class":561}," '",[555,620,621],{"class":582},"@tresjs/cientos",[555,623,624],{"class":561},"'\n",[555,626,628],{"class":557,"line":627},3,[555,629,631],{"emptyLinePlaceholder":630},true,"\n",[555,633,635,638,640,643,646,649,652,655,658,661,664,667,669],{"class":557,"line":634},4,[555,636,637],{"class":569},"const",[555,639,599],{"class":561},[555,641,642],{"class":565}," state",[555,644,645],{"class":561},":",[555,647,648],{"class":602}," model ",[555,650,651],{"class":561},"}",[555,653,654],{"class":561}," =",[555,656,603],{"class":657},"s2Zo4",[555,659,660],{"class":602},"(",[555,662,663],{"class":561},"'",[555,665,666],{"class":582},"/models/complex-model.glb",[555,668,663],{"class":561},[555,670,671],{"class":602},")\n",[555,673,675,677,679,682,685,688,690,693,696],{"class":674,"line":544},[557,592],[555,676,303],{"class":657},[555,678,660],{"class":602},[555,680,681],{"class":561},"()",[555,683,684],{"class":569}," =>",[555,686,687],{"class":602}," model",[555,689,502],{"class":561},[555,691,692],{"class":602},"value",[555,694,695],{"class":561},"?.",[555,697,698],{"class":602},"scene)\n",[555,700,702,705,707],{"class":701,"line":545},[557,592],[555,703,704],{"class":561},"\u003C/",[555,706,566],{"class":565},[555,708,588],{"class":561},[555,710,712],{"class":711,"line":546},[557,592],[555,713,631],{"emptyLinePlaceholder":630},[555,715,717,719,722],{"class":716,"line":547},[557,592],[555,718,562],{"class":561},[555,720,721],{"class":565},"template",[555,723,588],{"class":561},[555,725,727,730,733,736,738,740,743,745,748,751,753,755,757,759,762,764],{"class":557,"line":726},9,[555,728,729],{"class":561},"  \u003C",[555,731,732],{"class":565},"primitive",[555,734,735],{"class":595}," v-if",[555,737,576],{"class":561},[555,739,579],{"class":561},[555,741,742],{"class":602},"model",[555,744,579],{"class":561},[555,746,747],{"class":561}," :",[555,749,750],{"class":569},"object",[555,752,576],{"class":561},[555,754,579],{"class":561},[555,756,742],{"class":602},[555,758,502],{"class":561},[555,760,761],{"class":602},"scene",[555,763,579],{"class":561},[555,765,766],{"class":561}," />\n",[555,768,770,772,774],{"class":769,"line":548},[557,592],[555,771,704],{"class":561},[555,773,721],{"class":565},[555,775,588],{"class":561},[533,777,779],{"id":778},"with-debug-visualization","With Debug Visualization",[478,781,782],{},"Enable debug mode to visualize the BVH bounding boxes:",[538,784,787],{"className":540,"code":785,"highlights":786,"language":549,"meta":550,"style":550},"\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",[634,544,545,546],[552,788,789,809,831,835,865,870,878,899,904,921,926,931],{"__ignoreMap":550},[555,790,791,793,795,797,799,801,803,805,807],{"class":557,"line":558},[555,792,562],{"class":561},[555,794,566],{"class":565},[555,796,570],{"class":569},[555,798,573],{"class":569},[555,800,576],{"class":561},[555,802,579],{"class":561},[555,804,583],{"class":582},[555,806,579],{"class":561},[555,808,588],{"class":561},[555,810,811,813,815,817,819,821,823,825,827,829],{"class":557,"line":543},[555,812,596],{"class":595},[555,814,599],{"class":561},[555,816,603],{"class":602},[555,818,606],{"class":561},[555,820,609],{"class":602},[555,822,612],{"class":561},[555,824,615],{"class":595},[555,826,618],{"class":561},[555,828,621],{"class":582},[555,830,624],{"class":561},[555,832,833],{"class":557,"line":627},[555,834,631],{"emptyLinePlaceholder":630},[555,836,838,840,842,844,846,848,850,852,854,856,858,861,863],{"class":837,"line":634},[557,592],[555,839,637],{"class":569},[555,841,599],{"class":561},[555,843,642],{"class":565},[555,845,645],{"class":561},[555,847,648],{"class":602},[555,849,651],{"class":561},[555,851,654],{"class":561},[555,853,603],{"class":657},[555,855,660],{"class":602},[555,857,663],{"class":561},[555,859,860],{"class":582},"/models/model.glb",[555,862,663],{"class":561},[555,864,671],{"class":602},[555,866,868],{"class":867,"line":544},[557,592],[555,869,631],{"emptyLinePlaceholder":630},[555,871,873,875],{"class":872,"line":545},[557,592],[555,874,303],{"class":657},[555,876,877],{"class":602},"(\n",[555,879,881,884,886,888,890,892,894,896],{"class":880,"line":546},[557,592],[555,882,883],{"class":561},"  ()",[555,885,684],{"class":569},[555,887,687],{"class":602},[555,889,502],{"class":561},[555,891,692],{"class":602},[555,893,695],{"class":561},[555,895,761],{"class":602},[555,897,898],{"class":561},",\n",[555,900,901],{"class":557,"line":547},[555,902,903],{"class":561},"  {\n",[555,905,906,909,911,915,917],{"class":557,"line":726},[555,907,908],{"class":565},"    debug",[555,910,645],{"class":561},[555,912,914],{"class":913},"sfNiH"," true",[555,916,606],{"class":561},[555,918,920],{"class":919},"sHwdD"," // Show BVH bounding boxes\n",[555,922,923],{"class":557,"line":548},[555,924,925],{"class":561},"  }\n",[555,927,929],{"class":557,"line":928},11,[555,930,671],{"class":602},[555,932,934,936,938],{"class":557,"line":933},12,[555,935,704],{"class":561},[555,937,566],{"class":565},[555,939,588],{"class":561},[533,941,943],{"id":942},"reactive-enabled-state","Reactive Enabled State",[478,945,946],{},"Control BVH optimization dynamically:",[538,948,951],{"className":540,"code":949,"highlights":950,"language":549,"meta":550,"style":550},"\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",[634,545,546,547,726],[552,952,953,973,997,1019,1024,1042,1047,1076,1081,1088,1106,1110,1122,1127,1132,1137,1146,1151,1160,1170,1201,1207,1217,1252,1262],{"__ignoreMap":550},[555,954,955,957,959,961,963,965,967,969,971],{"class":557,"line":558},[555,956,562],{"class":561},[555,958,566],{"class":565},[555,960,570],{"class":569},[555,962,573],{"class":569},[555,964,576],{"class":561},[555,966,579],{"class":561},[555,968,583],{"class":582},[555,970,579],{"class":561},[555,972,588],{"class":561},[555,974,975,977,979,982,984,987,989,991,993,995],{"class":557,"line":543},[555,976,596],{"class":595},[555,978,599],{"class":561},[555,980,981],{"class":602}," ref",[555,983,606],{"class":561},[555,985,986],{"class":602}," computed",[555,988,612],{"class":561},[555,990,615],{"class":595},[555,992,618],{"class":561},[555,994,549],{"class":582},[555,996,624],{"class":561},[555,998,999,1001,1003,1005,1007,1009,1011,1013,1015,1017],{"class":557,"line":627},[555,1000,596],{"class":595},[555,1002,599],{"class":561},[555,1004,603],{"class":602},[555,1006,606],{"class":561},[555,1008,609],{"class":602},[555,1010,612],{"class":561},[555,1012,615],{"class":595},[555,1014,618],{"class":561},[555,1016,621],{"class":582},[555,1018,624],{"class":561},[555,1020,1022],{"class":1021,"line":634},[557,592],[555,1023,631],{"emptyLinePlaceholder":630},[555,1025,1026,1028,1031,1033,1035,1037,1040],{"class":557,"line":544},[555,1027,637],{"class":569},[555,1029,1030],{"class":602}," bvhEnabled ",[555,1032,576],{"class":561},[555,1034,981],{"class":657},[555,1036,660],{"class":602},[555,1038,1039],{"class":913},"true",[555,1041,671],{"class":602},[555,1043,1045],{"class":1044,"line":545},[557,592],[555,1046,631],{"emptyLinePlaceholder":630},[555,1048,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070,1072,1074],{"class":1049,"line":546},[557,592],[555,1051,637],{"class":569},[555,1053,599],{"class":561},[555,1055,642],{"class":565},[555,1057,645],{"class":561},[555,1059,648],{"class":602},[555,1061,651],{"class":561},[555,1063,654],{"class":561},[555,1065,603],{"class":657},[555,1067,660],{"class":602},[555,1069,663],{"class":561},[555,1071,860],{"class":582},[555,1073,663],{"class":561},[555,1075,671],{"class":602},[555,1077,1079],{"class":1078,"line":547},[557,592],[555,1080,631],{"emptyLinePlaceholder":630},[555,1082,1084,1086],{"class":1083,"line":726},[557,592],[555,1085,303],{"class":657},[555,1087,877],{"class":602},[555,1089,1090,1092,1094,1096,1098,1100,1102,1104],{"class":557,"line":548},[555,1091,883],{"class":561},[555,1093,684],{"class":569},[555,1095,687],{"class":602},[555,1097,502],{"class":561},[555,1099,692],{"class":602},[555,1101,695],{"class":561},[555,1103,761],{"class":602},[555,1105,898],{"class":561},[555,1107,1108],{"class":557,"line":928},[555,1109,903],{"class":561},[555,1111,1112,1115,1117,1120],{"class":557,"line":933},[555,1113,1114],{"class":565},"    enabled",[555,1116,645],{"class":561},[555,1118,1119],{"class":602}," bvhEnabled",[555,1121,898],{"class":561},[555,1123,1125],{"class":557,"line":1124},13,[555,1126,925],{"class":561},[555,1128,1130],{"class":557,"line":1129},14,[555,1131,671],{"class":602},[555,1133,1135],{"class":557,"line":1134},15,[555,1136,631],{"emptyLinePlaceholder":630},[555,1138,1140,1142,1144],{"class":557,"line":1139},16,[555,1141,704],{"class":561},[555,1143,566],{"class":565},[555,1145,588],{"class":561},[555,1147,1149],{"class":557,"line":1148},17,[555,1150,631],{"emptyLinePlaceholder":630},[555,1152,1154,1156,1158],{"class":557,"line":1153},18,[555,1155,562],{"class":561},[555,1157,721],{"class":565},[555,1159,588],{"class":561},[555,1161,1163,1165,1168],{"class":557,"line":1162},19,[555,1164,729],{"class":561},[555,1166,1167],{"class":565},"div",[555,1169,588],{"class":561},[555,1171,1173,1176,1179,1182,1185,1187,1189,1192,1195,1197,1199],{"class":557,"line":1172},20,[555,1174,1175],{"class":561},"    \u003C",[555,1177,1178],{"class":565},"button",[555,1180,1181],{"class":561}," @",[555,1183,1184],{"class":569},"click",[555,1186,576],{"class":561},[555,1188,579],{"class":561},[555,1190,1191],{"class":602},"bvhEnabled",[555,1193,1194],{"class":561}," = !",[555,1196,1191],{"class":602},[555,1198,579],{"class":561},[555,1200,588],{"class":561},[555,1202,1204],{"class":557,"line":1203},21,[555,1205,1206],{"class":602},"      Toggle BVH\n",[555,1208,1210,1213,1215],{"class":557,"line":1209},22,[555,1211,1212],{"class":561},"    \u003C/",[555,1214,1178],{"class":565},[555,1216,588],{"class":561},[555,1218,1220,1222,1224,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248,1250],{"class":557,"line":1219},23,[555,1221,1175],{"class":561},[555,1223,732],{"class":565},[555,1225,735],{"class":595},[555,1227,576],{"class":561},[555,1229,579],{"class":561},[555,1231,742],{"class":602},[555,1233,579],{"class":561},[555,1235,747],{"class":561},[555,1237,750],{"class":569},[555,1239,576],{"class":561},[555,1241,579],{"class":561},[555,1243,742],{"class":602},[555,1245,502],{"class":561},[555,1247,761],{"class":602},[555,1249,579],{"class":561},[555,1251,766],{"class":561},[555,1253,1255,1258,1260],{"class":557,"line":1254},24,[555,1256,1257],{"class":561},"  \u003C/",[555,1259,1167],{"class":565},[555,1261,588],{"class":561},[555,1263,1265,1267,1269],{"class":557,"line":1264},25,[555,1266,704],{"class":561},[555,1268,721],{"class":565},[555,1270,588],{"class":561},[504,1272,1274],{"id":1273},"options","Options",[478,1276,1277,1278,1281,1282,1285,1286,1289],{},"Options are divided into ",[482,1279,1280],{},"reactive"," (can change at runtime) and ",[482,1283,1284],{},"static"," (set once at creation - changing requires toggling ",[552,1287,1288],{},"enabled"," off/on to rebuild).",[533,1291,1293],{"id":1292},"reactive-options","Reactive Options",[1295,1296,1297,1317],"table",{},[1298,1299,1300],"thead",{},[1301,1302,1303,1308,1311,1314],"tr",{},[1304,1305,1307],"th",{"align":1306},"left","Option",[1304,1309,1310],{"align":1306},"Type",[1304,1312,1313],{"align":1306},"Default",[1304,1315,1316],{"align":1306},"Description",[1318,1319,1320,1339],"tbody",{},[1301,1321,1322,1327,1332,1336],{},[1323,1324,1325],"td",{"align":1306},[482,1326,1288],{},[1323,1328,1329],{"align":1306},[552,1330,1331],{},"MaybeRefOrGetter\u003Cboolean>",[1323,1333,1334],{"align":1306},[552,1335,1039],{},[1323,1337,1338],{"align":1306},"Enable/disable BVH optimization. Toggling rebuilds BVH structures.",[1301,1340,1341,1346,1350,1355],{},[1323,1342,1343],{"align":1306},[482,1344,1345],{},"debug",[1323,1347,1348],{"align":1306},[552,1349,1331],{},[1323,1351,1352],{"align":1306},[552,1353,1354],{},"false",[1323,1356,1357],{"align":1306},"Show debug visualization of BVH bounding boxes.",[533,1359,1361],{"id":1360},"static-options-bvh-construction","Static Options (BVH Construction)",[478,1363,1364,1365,1367],{},"These options configure how the BVH is built. Changing them after creation has no effect - toggle ",[552,1366,1288],{}," off/on to rebuild with new values.",[1295,1369,1370,1382],{},[1298,1371,1372],{},[1301,1373,1374,1376,1378,1380],{},[1304,1375,1307],{"align":1306},[1304,1377,1310],{"align":1306},[1304,1379,1313],{"align":1306},[1304,1381,1316],{"align":1306},[1318,1383,1384,1407,1427,1447,1466,1484,1502],{},[1301,1385,1386,1391,1396,1400],{},[1323,1387,1388],{"align":1306},[482,1389,1390],{},"firstHitOnly",[1323,1392,1393],{"align":1306},[552,1394,1395],{},"boolean",[1323,1397,1398],{"align":1306},[552,1399,1354],{},[1323,1401,1402,1403,1406],{"align":1306},"Use ",[552,1404,1405],{},"raycastFirst"," for better performance when only the first hit is needed.",[1301,1408,1409,1414,1419,1424],{},[1323,1410,1411],{"align":1306},[482,1412,1413],{},"splitStrategy",[1323,1415,1416],{"align":1306},[552,1417,1418],{},"'CENTER' | 'AVERAGE' | 'SAH'",[1323,1420,1421],{"align":1306},[552,1422,1423],{},"'SAH'",[1323,1425,1426],{"align":1306},"BVH build strategy. See section below.",[1301,1428,1429,1434,1439,1444],{},[1323,1430,1431],{"align":1306},[482,1432,1433],{},"maxDepth",[1323,1435,1436],{"align":1306},[552,1437,1438],{},"number",[1323,1440,1441],{"align":1306},[552,1442,1443],{},"40",[1323,1445,1446],{"align":1306},"Maximum tree depth for the BVH structure.",[1301,1448,1449,1454,1458,1463],{},[1323,1450,1451],{"align":1306},[482,1452,1453],{},"maxLeafSize",[1323,1455,1456],{"align":1306},[552,1457,1438],{},[1323,1459,1460],{"align":1306},[552,1461,1462],{},"10",[1323,1464,1465],{"align":1306},"Target number of triangles per leaf node.",[1301,1467,1468,1473,1477,1481],{},[1323,1469,1470],{"align":1306},[482,1471,1472],{},"verbose",[1323,1474,1475],{"align":1306},[552,1476,1395],{},[1323,1478,1479],{"align":1306},[552,1480,1354],{},[1323,1482,1483],{"align":1306},"Print construction warnings and progress to console.",[1301,1485,1486,1491,1495,1499],{},[1323,1487,1488],{"align":1306},[482,1489,1490],{},"setBoundingBox",[1323,1492,1493],{"align":1306},[552,1494,1395],{},[1323,1496,1497],{"align":1306},[552,1498,1039],{},[1323,1500,1501],{"align":1306},"Automatically set geometry bounding box after BVH construction.",[1301,1503,1504,1509,1513,1517],{},[1323,1505,1506],{"align":1306},[482,1507,1508],{},"indirect",[1323,1510,1511],{"align":1306},[552,1512,1395],{},[1323,1514,1515],{"align":1306},[552,1516,1354],{},[1323,1518,1519],{"align":1306},"If false, creates and rearranges index buffer for better performance.",[533,1521,1523],{"id":1522},"split-strategies","Split Strategies",[517,1525,1526,1532,1538],{},[520,1527,1528,1531],{},[482,1529,1530],{},"SAH (Surface Area Heuristic)"," - Slowest to build, fastest at runtime, uses least memory. Best for production.",[520,1533,1534,1537],{},[482,1535,1536],{},"AVERAGE"," - Balanced build time and runtime performance.",[520,1539,1540,1543],{},[482,1541,1542],{},"CENTER"," - Fastest to build, slower at runtime.",[504,1545,1547],{"id":1546},"advanced-usage","Advanced Usage",[533,1549,1551],{"id":1550},"fine-tuning-performance","Fine-tuning Performance",[478,1553,1554],{},"Adjust BVH construction parameters for your use case:",[538,1556,1559],{"className":1557,"code":1558,"language":583,"meta":550,"style":550},"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",[552,1560,1561,1567,1574,1578,1597,1613,1628,1642,1646],{"__ignoreMap":550},[555,1562,1563,1565],{"class":557,"line":558},[555,1564,303],{"class":657},[555,1566,877],{"class":602},[555,1568,1569,1572],{"class":557,"line":543},[555,1570,1571],{"class":602},"  target",[555,1573,898],{"class":561},[555,1575,1576],{"class":557,"line":627},[555,1577,903],{"class":561},[555,1579,1580,1583,1585,1587,1590,1592,1594],{"class":557,"line":634},[555,1581,1582],{"class":565},"    splitStrategy",[555,1584,645],{"class":561},[555,1586,618],{"class":561},[555,1588,1589],{"class":582},"SAH",[555,1591,663],{"class":561},[555,1593,606],{"class":561},[555,1595,1596],{"class":919}," // Best runtime performance\n",[555,1598,1599,1602,1604,1608,1610],{"class":557,"line":544},[555,1600,1601],{"class":565},"    maxDepth",[555,1603,645],{"class":561},[555,1605,1607],{"class":1606},"sbssI"," 30",[555,1609,606],{"class":561},[555,1611,1612],{"class":919}," // Shallower tree (faster build)\n",[555,1614,1615,1618,1620,1623,1625],{"class":557,"line":545},[555,1616,1617],{"class":565},"    maxLeafSize",[555,1619,645],{"class":561},[555,1621,1622],{"class":1606}," 5",[555,1624,606],{"class":561},[555,1626,1627],{"class":919}," // Smaller leaves (better culling)\n",[555,1629,1630,1633,1635,1637,1639],{"class":557,"line":546},[555,1631,1632],{"class":565},"    verbose",[555,1634,645],{"class":561},[555,1636,914],{"class":913},[555,1638,606],{"class":561},[555,1640,1641],{"class":919}," // Debug construction\n",[555,1643,1644],{"class":557,"line":547},[555,1645,925],{"class":561},[555,1647,1648],{"class":557,"line":726},[555,1649,671],{"class":602},[533,1651,1653],{"id":1652},"first-hit-only-mode","First Hit Only Mode",[478,1655,1656],{},"When you only need the closest intersection (e.g., mouse picking):",[538,1658,1660],{"className":1557,"code":1659,"language":583,"meta":550,"style":550},"useBVH(\n  target,\n  {\n    firstHitOnly: true, // Uses raycastFirst internally\n  }\n)\n",[552,1661,1662,1668,1674,1678,1692,1696],{"__ignoreMap":550},[555,1663,1664,1666],{"class":557,"line":558},[555,1665,303],{"class":657},[555,1667,877],{"class":602},[555,1669,1670,1672],{"class":557,"line":543},[555,1671,1571],{"class":602},[555,1673,898],{"class":561},[555,1675,1676],{"class":557,"line":627},[555,1677,903],{"class":561},[555,1679,1680,1683,1685,1687,1689],{"class":557,"line":634},[555,1681,1682],{"class":565},"    firstHitOnly",[555,1684,645],{"class":561},[555,1686,914],{"class":913},[555,1688,606],{"class":561},[555,1690,1691],{"class":919}," // Uses raycastFirst internally\n",[555,1693,1694],{"class":557,"line":544},[555,1695,925],{"class":561},[555,1697,1698],{"class":557,"line":545},[555,1699,671],{"class":602},[478,1701,1702],{},"This is significantly faster than computing all intersections when you only need one.",[504,1704,1706],{"id":1705},"important-notes","Important Notes",[517,1708,1709,1715,1736,1742,1755],{},[520,1710,1711,1714],{},[482,1712,1713],{},"Side-effect free",": BVH is automatically removed on unmount and when disabled.",[520,1716,1717,1720,1721,1723,1724,1726,1727,1729,1730,1732,1733,1735],{},[482,1718,1719],{},"Reactive options",": Only ",[552,1722,1288],{}," and ",[552,1725,1345],{}," are reactive. Construction options (",[552,1728,1413],{},", ",[552,1731,1433],{},", etc.) are static - to apply new values, toggle ",[552,1734,1288],{}," off/on.",[520,1737,1738,1741],{},[482,1739,1740],{},"Memory efficient",": BVH structures are properly disposed when removed.",[520,1743,1744,1747,1748,1723,1751,1754],{},[482,1745,1746],{},"Automatic mesh detection",": Works with ",[552,1749,1750],{},"Mesh",[552,1752,1753],{},"SkinnedMesh"," instances.",[520,1756,1757,1760],{},[482,1758,1759],{},"Draco models",": Works seamlessly with Draco-compressed GLTF models.",[504,1762,1764],{"id":1763},"performance-tips","Performance Tips",[1766,1767,1768,1774,1780,1786],"ol",{},[520,1769,1770,1773],{},[482,1771,1772],{},"Use firstHitOnly"," when you only need the closest intersection",[520,1775,1776,1779],{},[482,1777,1778],{},"SAH strategy"," gives best runtime performance for production",[520,1781,1782,1785],{},[482,1783,1784],{},"Adjust maxLeafSize"," based on triangle density (smaller for dense meshes)",[520,1787,1788,1791],{},[482,1789,1790],{},"Enable debug mode"," during development to verify BVH coverage",[504,1793,1795],{"id":1794},"integration-with-usegltf","Integration with useGLTF",[478,1797,1798,1799,1801],{},"Perfect pairing with ",[552,1800,117],{}," for optimized model loading:",[538,1803,1805],{"className":540,"code":1804,"language":549,"meta":550,"style":550},"\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",[552,1806,1807,1827,1849,1853,1885,1895,1901,1905,1911,1929,1948,1952],{"__ignoreMap":550},[555,1808,1809,1811,1813,1815,1817,1819,1821,1823,1825],{"class":557,"line":558},[555,1810,562],{"class":561},[555,1812,566],{"class":565},[555,1814,570],{"class":569},[555,1816,573],{"class":569},[555,1818,576],{"class":561},[555,1820,579],{"class":561},[555,1822,583],{"class":582},[555,1824,579],{"class":561},[555,1826,588],{"class":561},[555,1828,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847],{"class":557,"line":543},[555,1830,596],{"class":595},[555,1832,599],{"class":561},[555,1834,609],{"class":602},[555,1836,606],{"class":561},[555,1838,603],{"class":602},[555,1840,612],{"class":561},[555,1842,615],{"class":595},[555,1844,618],{"class":561},[555,1846,621],{"class":582},[555,1848,624],{"class":561},[555,1850,1851],{"class":557,"line":627},[555,1852,631],{"emptyLinePlaceholder":630},[555,1854,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1878,1880,1882],{"class":557,"line":634},[555,1856,637],{"class":569},[555,1858,599],{"class":561},[555,1860,642],{"class":565},[555,1862,645],{"class":561},[555,1864,648],{"class":602},[555,1866,651],{"class":561},[555,1868,654],{"class":561},[555,1870,603],{"class":657},[555,1872,660],{"class":602},[555,1874,663],{"class":561},[555,1876,1877],{"class":582},"/models/high-poly-model.glb",[555,1879,663],{"class":561},[555,1881,606],{"class":561},[555,1883,1884],{"class":561}," {\n",[555,1886,1887,1890,1892],{"class":557,"line":544},[555,1888,1889],{"class":565},"  draco",[555,1891,645],{"class":561},[555,1893,1894],{"class":913}," true\n",[555,1896,1897,1899],{"class":557,"line":545},[555,1898,651],{"class":561},[555,1900,671],{"class":602},[555,1902,1903],{"class":557,"line":546},[555,1904,631],{"emptyLinePlaceholder":630},[555,1906,1907,1909],{"class":557,"line":547},[555,1908,303],{"class":657},[555,1910,877],{"class":602},[555,1912,1913,1915,1917,1919,1921,1923,1925,1927],{"class":557,"line":726},[555,1914,883],{"class":561},[555,1916,684],{"class":569},[555,1918,687],{"class":602},[555,1920,502],{"class":561},[555,1922,692],{"class":602},[555,1924,695],{"class":561},[555,1926,761],{"class":602},[555,1928,898],{"class":561},[555,1930,1931,1934,1937,1939,1941,1943,1945],{"class":557,"line":548},[555,1932,1933],{"class":561},"  {",[555,1935,1936],{"class":565}," splitStrategy",[555,1938,645],{"class":561},[555,1940,618],{"class":561},[555,1942,1589],{"class":582},[555,1944,663],{"class":561},[555,1946,1947],{"class":561}," }\n",[555,1949,1950],{"class":557,"line":928},[555,1951,671],{"class":602},[555,1953,1954,1956,1958],{"class":557,"line":933},[555,1955,704],{"class":561},[555,1957,566],{"class":565},[555,1959,588],{"class":561},[504,1961,1963],{"id":1962},"troubleshooting","Troubleshooting",[533,1965,1967],{"id":1966},"bvh-not-applying-to-some-meshes","BVH not applying to some meshes",[517,1969,1970,1973,1980],{},[520,1971,1972],{},"Ensure meshes have valid geometry with position attributes",[520,1974,1975,1976,1979],{},"Check console with ",[552,1977,1978],{},"verbose: true"," to see which meshes are skipped",[520,1981,1982,1983,1986,1987,1989],{},"Verify the object is an ",[552,1984,1985],{},"Object3D"," (use ",[552,1988,732],{}," in templates)",[533,1991,1993],{"id":1992},"performance-not-improving","Performance not improving",[517,1995,1996,2002,2008,2011],{},[520,1997,1998,1999,2001],{},"Enable ",[552,2000,1390],{}," if you only need one intersection",[520,2003,2004,2005,2007],{},"Try different split strategies (",[552,2006,1589],{}," is usually best)",[520,2009,2010],{},"Verify raycasting is the bottleneck (use Stats/StatsGl)",[520,2012,2013],{},"Consider LOD for very distant objects",[2015,2016,2017],"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 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":550,"searchDepth":558,"depth":543,"links":2019},[2020,2021,2026,2031,2035,2036,2037,2038],{"id":506,"depth":543,"text":507},{"id":531,"depth":543,"text":15,"children":2022},[2023,2024,2025],{"id":535,"depth":627,"text":536},{"id":778,"depth":627,"text":779},{"id":942,"depth":627,"text":943},{"id":1273,"depth":543,"text":1274,"children":2027},[2028,2029,2030],{"id":1292,"depth":627,"text":1293},{"id":1360,"depth":627,"text":1361},{"id":1522,"depth":627,"text":1523},{"id":1546,"depth":543,"text":1547,"children":2032},[2033,2034],{"id":1550,"depth":627,"text":1551},{"id":1652,"depth":627,"text":1653},{"id":1705,"depth":543,"text":1706},{"id":1763,"depth":543,"text":1764},{"id":1794,"depth":543,"text":1795},{"id":1962,"depth":543,"text":1963,"children":2039},[2040,2041],{"id":1966,"depth":627,"text":1967},{"id":1992,"depth":627,"text":1993},"Speed up raycasting with Bounding Volume Hierarchy (BVH) optimization.","md",null,{},{"title":303,"description":2042},"j_yBTwISSBvt9p_jtL1KmVLzoSoFUX_NTuLQBbuRDIs",[2049,2051],{"title":299,"path":300,"stem":301,"description":2050,"children":-1},"WebGL performance monitoring tool displaying CPU and GPU metrics.",{"title":307,"path":308,"stem":309,"description":2052,"children":-1},"All light and shadow components",1771328673157]