[{"data":1,"prerenderedAt":1649},["ShallowReactive",2],{"navigation":3,"/api/objects/reflector":466,"/api/objects/reflector-surround":1644},[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":425,"body":468,"description":1638,"extension":1639,"links":1640,"meta":1641,"navigation":590,"path":426,"seo":1642,"stem":427,"__hash__":1643},"docs/2.api/9.objects/reflector.md",{"type":469,"value":470,"toc":1631},"minimark",[471,477,498,502,854,858,959,968,972,975,1262,1265,1268,1273,1627],[472,473,474],"scene-controls-wrapper",{},[475,476],"objects-reflector",{},[478,479,480,481,485,486,493,494,497],"p",{},"The ",[482,483,484],"code",{},"cientos"," package provides an abstraction of the ",[487,488,492],"a",{"href":489,"rel":490},"https://github.com/mrdoob/three.js/blob/dev/examples/jsm/objects/Reflector.js",[491],"nofollow","Reflector class",", which creates a Mesh showing a real-time reflection of your scene.  This Mesh extends from ",[482,495,496],{},"Mesh"," so all the default props can be passed as well:",[499,500,15],"h2",{"id":501},"usage",[503,504,509],"pre",{"className":505,"code":506,"language":507,"meta":508,"style":508},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { Reflector } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas shadows alpha>\n    \u003CTresPerspectiveCamera :position=\"[0, 0, 3]\" />\n    \u003COrbitControls />\n\n    \u003CSuspense>\n      \u003CReflector\n        :rotation=\"[-Math.PI * 0.5, 0, 0]\"\n        :position-y=\"-2\"\n        color=\"#fff\"\n      >\n        \u003CTresCircleGeometry :args=\"[10, 10]\" />\n      \u003C/Reflector>\n    \u003C/Suspense>\n  \u003C/TresCanvas>\n\u003C/template>\n","vue","",[482,510,511,546,575,585,592,602,619,663,673,678,688,697,741,761,776,782,815,825,835,845],{"__ignoreMap":508},[512,513,516,520,524,528,531,534,537,541,543],"span",{"class":514,"line":515},"line",1,[512,517,519],{"class":518},"sMK4o","\u003C",[512,521,523],{"class":522},"swJcz","script",[512,525,527],{"class":526},"spNyl"," setup",[512,529,530],{"class":526}," lang",[512,532,533],{"class":518},"=",[512,535,536],{"class":518},"\"",[512,538,540],{"class":539},"sfazB","ts",[512,542,536],{"class":518},[512,544,545],{"class":518},">\n",[512,547,549,553,556,560,563,566,569,572],{"class":514,"line":548},2,[512,550,552],{"class":551},"s7zQu","import",[512,554,555],{"class":518}," {",[512,557,559],{"class":558},"sTEyZ"," Reflector",[512,561,562],{"class":518}," }",[512,564,565],{"class":551}," from",[512,567,568],{"class":518}," '",[512,570,571],{"class":539},"@tresjs/cientos",[512,573,574],{"class":518},"'\n",[512,576,578,581,583],{"class":514,"line":577},3,[512,579,580],{"class":518},"\u003C/",[512,582,523],{"class":522},[512,584,545],{"class":518},[512,586,588],{"class":514,"line":587},4,[512,589,591],{"emptyLinePlaceholder":590},true,"\n",[512,593,595,597,600],{"class":514,"line":594},5,[512,596,519],{"class":518},[512,598,599],{"class":522},"template",[512,601,545],{"class":518},[512,603,605,608,611,614,617],{"class":514,"line":604},6,[512,606,607],{"class":518},"  \u003C",[512,609,610],{"class":522},"TresCanvas",[512,612,613],{"class":526}," shadows",[512,615,616],{"class":526}," alpha",[512,618,545],{"class":518},[512,620,622,625,628,631,634,636,638,641,645,648,650,652,655,658,660],{"class":514,"line":621},7,[512,623,624],{"class":518},"    \u003C",[512,626,627],{"class":522},"TresPerspectiveCamera",[512,629,630],{"class":518}," :",[512,632,633],{"class":526},"position",[512,635,533],{"class":518},[512,637,536],{"class":518},[512,639,640],{"class":518},"[",[512,642,644],{"class":643},"sbssI","0",[512,646,647],{"class":518},", ",[512,649,644],{"class":643},[512,651,647],{"class":518},[512,653,654],{"class":643},"3",[512,656,657],{"class":518},"]",[512,659,536],{"class":518},[512,661,662],{"class":518}," />\n",[512,664,666,668,671],{"class":514,"line":665},8,[512,667,624],{"class":518},[512,669,670],{"class":522},"OrbitControls",[512,672,662],{"class":518},[512,674,676],{"class":514,"line":675},9,[512,677,591],{"emptyLinePlaceholder":590},[512,679,681,683,686],{"class":514,"line":680},10,[512,682,624],{"class":518},[512,684,685],{"class":522},"Suspense",[512,687,545],{"class":518},[512,689,691,694],{"class":514,"line":690},11,[512,692,693],{"class":518},"      \u003C",[512,695,696],{"class":522},"Reflector\n",[512,698,700,703,706,708,710,713,716,719,722,725,728,730,732,734,736,738],{"class":514,"line":699},12,[512,701,702],{"class":518},"        :",[512,704,705],{"class":526},"rotation",[512,707,533],{"class":518},[512,709,536],{"class":518},[512,711,712],{"class":518},"[-",[512,714,715],{"class":558},"Math",[512,717,718],{"class":518},".",[512,720,721],{"class":558},"PI",[512,723,724],{"class":518}," * ",[512,726,727],{"class":643},"0.5",[512,729,647],{"class":518},[512,731,644],{"class":643},[512,733,647],{"class":518},[512,735,644],{"class":643},[512,737,657],{"class":518},[512,739,740],{"class":518},"\"\n",[512,742,744,746,749,751,753,756,759],{"class":514,"line":743},13,[512,745,702],{"class":518},[512,747,748],{"class":526},"position-y",[512,750,533],{"class":518},[512,752,536],{"class":518},[512,754,755],{"class":518},"-",[512,757,758],{"class":643},"2",[512,760,740],{"class":518},[512,762,764,767,769,771,774],{"class":514,"line":763},14,[512,765,766],{"class":526},"        color",[512,768,533],{"class":518},[512,770,536],{"class":518},[512,772,773],{"class":539},"#fff",[512,775,740],{"class":518},[512,777,779],{"class":514,"line":778},15,[512,780,781],{"class":518},"      >\n",[512,783,785,788,791,793,796,798,800,802,805,807,809,811,813],{"class":514,"line":784},16,[512,786,787],{"class":518},"        \u003C",[512,789,790],{"class":522},"TresCircleGeometry",[512,792,630],{"class":518},[512,794,795],{"class":526},"args",[512,797,533],{"class":518},[512,799,536],{"class":518},[512,801,640],{"class":518},[512,803,804],{"class":643},"10",[512,806,647],{"class":518},[512,808,804],{"class":643},[512,810,657],{"class":518},[512,812,536],{"class":518},[512,814,662],{"class":518},[512,816,818,821,823],{"class":514,"line":817},17,[512,819,820],{"class":518},"      \u003C/",[512,822,425],{"class":522},[512,824,545],{"class":518},[512,826,828,831,833],{"class":514,"line":827},18,[512,829,830],{"class":518},"    \u003C/",[512,832,685],{"class":522},[512,834,545],{"class":518},[512,836,838,841,843],{"class":514,"line":837},19,[512,839,840],{"class":518},"  \u003C/",[512,842,610],{"class":522},[512,844,545],{"class":518},[512,846,848,850,852],{"class":514,"line":847},20,[512,849,580],{"class":518},[512,851,599],{"class":522},[512,853,545],{"class":518},[499,855,857],{"id":856},"props","Props",[859,860,861,878],"table",{},[862,863,864],"thead",{},[865,866,867,872,875],"tr",{},[868,869,871],"th",{"align":870},"left","Prop",[868,873,874],{"align":870},"Description",[868,876,877],{},"Default",[879,880,881,896,909,921,933,946],"tbody",{},[865,882,883,890,893],{},[884,885,886],"td",{"align":870},[887,888,889],"strong",{},"color",[884,891,892],{"align":870},"The base color that's combine with the mirror effect",[884,894,895],{},"'#333'",[865,897,898,903,906],{},[884,899,900],{"align":870},[887,901,902],{},"textureWidth",[884,904,905],{"align":870},"the width of the texture to render on the mirror",[884,907,908],{},"512",[865,910,911,916,919],{},[884,912,913],{"align":870},[887,914,915],{},"textureHeight",[884,917,918],{"align":870},"the height of the texture to render on the mirror",[884,920,908],{},[865,922,923,928,931],{},[884,924,925],{"align":870},[887,926,927],{},"clipBias",[884,929,930],{"align":870},"to use the clipBias property",[884,932,644],{},[865,934,935,940,943],{},[884,936,937],{"align":870},[887,938,939],{},"multisample",[884,941,942],{"align":870},"how many samplers will be render",[884,944,945],{},"4",[865,947,948,953,956],{},[884,949,950],{"align":870},[887,951,952],{},"shader",[884,954,955],{"align":870},"The texture of the smoke.",[884,957,958],{},"Reflector.ReflectorShader",[960,961,962],"prose-warning",{},[478,963,964,965,967],{},"All the props except the ",[482,966,889],{},", are not reactive",[499,969,971],{"id":970},"custom-mirror-effect","Custom mirror effect",[478,973,974],{},"For more complex effect you can provide your own shaders, you could do this creating an object and pass the uniforms, vertexShaders or fragmentShaders:",[503,976,978],{"className":505,"code":977,"language":507,"meta":508,"style":508},"\u003Cscript setup lang=\"ts\">\nimport vertexShader from 'MyCustomVertexShader.glsl'\n\nconst customShader = {\n  vertexShader\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas shadows alpha>\n    \u003CTresPerspectiveCamera :position=\"[0, 0, 3]\" />\n    ...\n    \u003CReflector\n      :rotation=\"[-Math.PI * 0.5, 0, 0]\"\n      :position-y=\"-2\"\n      color=\"#fff\"\n      :shader=\"customShader\"\n    >\n      \u003CTresCircleGeometry :args=\"[10, 10]\" />\n    \u003C/Reflector>\n    ...\n  \u003C/TresCanvas>\n\u003C/template>\n",[482,979,980,1000,1017,1021,1034,1039,1044,1052,1056,1064,1076,1108,1113,1119,1154,1170,1183,1198,1203,1231,1239,1244,1253],{"__ignoreMap":508},[512,981,982,984,986,988,990,992,994,996,998],{"class":514,"line":515},[512,983,519],{"class":518},[512,985,523],{"class":522},[512,987,527],{"class":526},[512,989,530],{"class":526},[512,991,533],{"class":518},[512,993,536],{"class":518},[512,995,540],{"class":539},[512,997,536],{"class":518},[512,999,545],{"class":518},[512,1001,1002,1004,1007,1010,1012,1015],{"class":514,"line":548},[512,1003,552],{"class":551},[512,1005,1006],{"class":558}," vertexShader ",[512,1008,1009],{"class":551},"from",[512,1011,568],{"class":518},[512,1013,1014],{"class":539},"MyCustomVertexShader.glsl",[512,1016,574],{"class":518},[512,1018,1019],{"class":514,"line":577},[512,1020,591],{"emptyLinePlaceholder":590},[512,1022,1023,1026,1029,1031],{"class":514,"line":587},[512,1024,1025],{"class":526},"const",[512,1027,1028],{"class":558}," customShader ",[512,1030,533],{"class":518},[512,1032,1033],{"class":518}," {\n",[512,1035,1036],{"class":514,"line":594},[512,1037,1038],{"class":558},"  vertexShader\n",[512,1040,1041],{"class":514,"line":604},[512,1042,1043],{"class":518},"}\n",[512,1045,1046,1048,1050],{"class":514,"line":621},[512,1047,580],{"class":518},[512,1049,523],{"class":522},[512,1051,545],{"class":518},[512,1053,1054],{"class":514,"line":665},[512,1055,591],{"emptyLinePlaceholder":590},[512,1057,1058,1060,1062],{"class":514,"line":675},[512,1059,519],{"class":518},[512,1061,599],{"class":522},[512,1063,545],{"class":518},[512,1065,1066,1068,1070,1072,1074],{"class":514,"line":680},[512,1067,607],{"class":518},[512,1069,610],{"class":522},[512,1071,613],{"class":526},[512,1073,616],{"class":526},[512,1075,545],{"class":518},[512,1077,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106],{"class":514,"line":690},[512,1079,624],{"class":518},[512,1081,627],{"class":522},[512,1083,630],{"class":518},[512,1085,633],{"class":526},[512,1087,533],{"class":518},[512,1089,536],{"class":518},[512,1091,640],{"class":518},[512,1093,644],{"class":643},[512,1095,647],{"class":518},[512,1097,644],{"class":643},[512,1099,647],{"class":518},[512,1101,654],{"class":643},[512,1103,657],{"class":518},[512,1105,536],{"class":518},[512,1107,662],{"class":518},[512,1109,1110],{"class":514,"line":699},[512,1111,1112],{"class":558},"    ...\n",[512,1114,1115,1117],{"class":514,"line":743},[512,1116,624],{"class":518},[512,1118,696],{"class":522},[512,1120,1121,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144,1146,1148,1150,1152],{"class":514,"line":763},[512,1122,1123],{"class":518},"      :",[512,1125,705],{"class":526},[512,1127,533],{"class":518},[512,1129,536],{"class":518},[512,1131,712],{"class":518},[512,1133,715],{"class":558},[512,1135,718],{"class":518},[512,1137,721],{"class":558},[512,1139,724],{"class":518},[512,1141,727],{"class":643},[512,1143,647],{"class":518},[512,1145,644],{"class":643},[512,1147,647],{"class":518},[512,1149,644],{"class":643},[512,1151,657],{"class":518},[512,1153,740],{"class":518},[512,1155,1156,1158,1160,1162,1164,1166,1168],{"class":514,"line":778},[512,1157,1123],{"class":518},[512,1159,748],{"class":526},[512,1161,533],{"class":518},[512,1163,536],{"class":518},[512,1165,755],{"class":518},[512,1167,758],{"class":643},[512,1169,740],{"class":518},[512,1171,1172,1175,1177,1179,1181],{"class":514,"line":784},[512,1173,1174],{"class":526},"      color",[512,1176,533],{"class":518},[512,1178,536],{"class":518},[512,1180,773],{"class":539},[512,1182,740],{"class":518},[512,1184,1185,1187,1189,1191,1193,1196],{"class":514,"line":817},[512,1186,1123],{"class":518},[512,1188,952],{"class":526},[512,1190,533],{"class":518},[512,1192,536],{"class":518},[512,1194,1195],{"class":558},"customShader",[512,1197,740],{"class":518},[512,1199,1200],{"class":514,"line":827},[512,1201,1202],{"class":518},"    >\n",[512,1204,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229],{"class":514,"line":837},[512,1206,693],{"class":518},[512,1208,790],{"class":522},[512,1210,630],{"class":518},[512,1212,795],{"class":526},[512,1214,533],{"class":518},[512,1216,536],{"class":518},[512,1218,640],{"class":518},[512,1220,804],{"class":643},[512,1222,647],{"class":518},[512,1224,804],{"class":643},[512,1226,657],{"class":518},[512,1228,536],{"class":518},[512,1230,662],{"class":518},[512,1232,1233,1235,1237],{"class":514,"line":847},[512,1234,830],{"class":518},[512,1236,425],{"class":522},[512,1238,545],{"class":518},[512,1240,1242],{"class":514,"line":1241},21,[512,1243,1112],{"class":558},[512,1245,1247,1249,1251],{"class":514,"line":1246},22,[512,1248,840],{"class":518},[512,1250,610],{"class":522},[512,1252,545],{"class":518},[512,1254,1256,1258,1260],{"class":514,"line":1255},23,[512,1257,580],{"class":518},[512,1259,599],{"class":522},[512,1261,545],{"class":518},[478,1263,1264],{},"The Reflector shader use the following configuration by default:",[478,1266,1267],{},"You can extend, modify or just play with them",[1269,1270,1272],"h3",{"id":1271},"default-shader","Default shader",[503,1274,1278],{"className":1275,"code":1276,"language":1277,"meta":508,"style":508},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const shader = {\n  name: 'ReflectorShader',\n  uniforms: {\n    color: {\n      value: null\n    },\n    tDiffuse: {\n      value: null\n    },\n    textureMatrix: {\n      value: null\n    }\n  },\n  vertexShader: /* glsl */`\n  uniform mat4 textureMatrix;\n  varying vec4 vUv;\n\n  #include \u003Ccommon>\n  #include \u003Clogdepthbuf_pars_vertex>\n\n  void main() {\n    vUv = textureMatrix * vec4( position, 1.0 );\n    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n    #include \u003Clogdepthbuf_vertex>\n\n  }`,\n  fragmentShader: /* glsl */`\n  uniform vec3 color;\n  uniform sampler2D tDiffuse;\n  varying vec4 vUv;\n\n  #include \u003Clogdepthbuf_pars_fragment>\n\n  float blendOverlay( float base, float blend ) {\n    return( base \u003C 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n  }\n\n  vec3 blendOverlay( vec3 base, vec3 blend ) {\n    return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n  }\n\n  void main() {\n    #include \u003Clogdepthbuf_fragment>\n\n    vec4 base = texture2DProj( tDiffuse, vUv );\n    gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n    #include \u003Ctonemapping_fragment>\n    #include \u003Ccolorspace_fragment>\n  }`\n\n}\n","js",[482,1279,1280,1291,1310,1319,1328,1338,1343,1352,1360,1364,1373,1381,1386,1391,1405,1410,1415,1419,1424,1429,1433,1438,1443,1448,1453,1459,1464,1475,1487,1493,1499,1504,1509,1515,1520,1526,1532,1538,1543,1549,1555,1560,1565,1570,1576,1581,1587,1593,1598,1604,1610,1617,1622],{"__ignoreMap":508},[512,1281,1282,1284,1287,1289],{"class":514,"line":515},[512,1283,1025],{"class":526},[512,1285,1286],{"class":558}," shader ",[512,1288,533],{"class":518},[512,1290,1033],{"class":518},[512,1292,1293,1296,1299,1301,1304,1307],{"class":514,"line":548},[512,1294,1295],{"class":522},"  name",[512,1297,1298],{"class":518},":",[512,1300,568],{"class":518},[512,1302,1303],{"class":539},"ReflectorShader",[512,1305,1306],{"class":518},"'",[512,1308,1309],{"class":518},",\n",[512,1311,1312,1315,1317],{"class":514,"line":577},[512,1313,1314],{"class":522},"  uniforms",[512,1316,1298],{"class":518},[512,1318,1033],{"class":518},[512,1320,1321,1324,1326],{"class":514,"line":587},[512,1322,1323],{"class":522},"    color",[512,1325,1298],{"class":518},[512,1327,1033],{"class":518},[512,1329,1330,1333,1335],{"class":514,"line":594},[512,1331,1332],{"class":522},"      value",[512,1334,1298],{"class":518},[512,1336,1337],{"class":518}," null\n",[512,1339,1340],{"class":514,"line":604},[512,1341,1342],{"class":518},"    },\n",[512,1344,1345,1348,1350],{"class":514,"line":621},[512,1346,1347],{"class":522},"    tDiffuse",[512,1349,1298],{"class":518},[512,1351,1033],{"class":518},[512,1353,1354,1356,1358],{"class":514,"line":665},[512,1355,1332],{"class":522},[512,1357,1298],{"class":518},[512,1359,1337],{"class":518},[512,1361,1362],{"class":514,"line":675},[512,1363,1342],{"class":518},[512,1365,1366,1369,1371],{"class":514,"line":680},[512,1367,1368],{"class":522},"    textureMatrix",[512,1370,1298],{"class":518},[512,1372,1033],{"class":518},[512,1374,1375,1377,1379],{"class":514,"line":690},[512,1376,1332],{"class":522},[512,1378,1298],{"class":518},[512,1380,1337],{"class":518},[512,1382,1383],{"class":514,"line":699},[512,1384,1385],{"class":518},"    }\n",[512,1387,1388],{"class":514,"line":743},[512,1389,1390],{"class":518},"  },\n",[512,1392,1393,1396,1398,1402],{"class":514,"line":763},[512,1394,1395],{"class":522},"  vertexShader",[512,1397,1298],{"class":518},[512,1399,1401],{"class":1400},"sHwdD"," /* glsl */",[512,1403,1404],{"class":518},"`\n",[512,1406,1407],{"class":514,"line":778},[512,1408,1409],{"class":539},"  uniform mat4 textureMatrix;\n",[512,1411,1412],{"class":514,"line":784},[512,1413,1414],{"class":539},"  varying vec4 vUv;\n",[512,1416,1417],{"class":514,"line":817},[512,1418,591],{"emptyLinePlaceholder":590},[512,1420,1421],{"class":514,"line":827},[512,1422,1423],{"class":539},"  #include \u003Ccommon>\n",[512,1425,1426],{"class":514,"line":837},[512,1427,1428],{"class":539},"  #include \u003Clogdepthbuf_pars_vertex>\n",[512,1430,1431],{"class":514,"line":847},[512,1432,591],{"emptyLinePlaceholder":590},[512,1434,1435],{"class":514,"line":1241},[512,1436,1437],{"class":539},"  void main() {\n",[512,1439,1440],{"class":514,"line":1246},[512,1441,1442],{"class":539},"    vUv = textureMatrix * vec4( position, 1.0 );\n",[512,1444,1445],{"class":514,"line":1255},[512,1446,1447],{"class":539},"    gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n",[512,1449,1451],{"class":514,"line":1450},24,[512,1452,591],{"emptyLinePlaceholder":590},[512,1454,1456],{"class":514,"line":1455},25,[512,1457,1458],{"class":539},"    #include \u003Clogdepthbuf_vertex>\n",[512,1460,1462],{"class":514,"line":1461},26,[512,1463,591],{"emptyLinePlaceholder":590},[512,1465,1467,1470,1473],{"class":514,"line":1466},27,[512,1468,1469],{"class":539},"  }",[512,1471,1472],{"class":518},"`",[512,1474,1309],{"class":518},[512,1476,1478,1481,1483,1485],{"class":514,"line":1477},28,[512,1479,1480],{"class":522},"  fragmentShader",[512,1482,1298],{"class":518},[512,1484,1401],{"class":1400},[512,1486,1404],{"class":518},[512,1488,1490],{"class":514,"line":1489},29,[512,1491,1492],{"class":539},"  uniform vec3 color;\n",[512,1494,1496],{"class":514,"line":1495},30,[512,1497,1498],{"class":539},"  uniform sampler2D tDiffuse;\n",[512,1500,1502],{"class":514,"line":1501},31,[512,1503,1414],{"class":539},[512,1505,1507],{"class":514,"line":1506},32,[512,1508,591],{"emptyLinePlaceholder":590},[512,1510,1512],{"class":514,"line":1511},33,[512,1513,1514],{"class":539},"  #include \u003Clogdepthbuf_pars_fragment>\n",[512,1516,1518],{"class":514,"line":1517},34,[512,1519,591],{"emptyLinePlaceholder":590},[512,1521,1523],{"class":514,"line":1522},35,[512,1524,1525],{"class":539},"  float blendOverlay( float base, float blend ) {\n",[512,1527,1529],{"class":514,"line":1528},36,[512,1530,1531],{"class":539},"    return( base \u003C 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n",[512,1533,1535],{"class":514,"line":1534},37,[512,1536,1537],{"class":539},"  }\n",[512,1539,1541],{"class":514,"line":1540},38,[512,1542,591],{"emptyLinePlaceholder":590},[512,1544,1546],{"class":514,"line":1545},39,[512,1547,1548],{"class":539},"  vec3 blendOverlay( vec3 base, vec3 blend ) {\n",[512,1550,1552],{"class":514,"line":1551},40,[512,1553,1554],{"class":539},"    return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n",[512,1556,1558],{"class":514,"line":1557},41,[512,1559,1537],{"class":539},[512,1561,1563],{"class":514,"line":1562},42,[512,1564,591],{"emptyLinePlaceholder":590},[512,1566,1568],{"class":514,"line":1567},43,[512,1569,1437],{"class":539},[512,1571,1573],{"class":514,"line":1572},44,[512,1574,1575],{"class":539},"    #include \u003Clogdepthbuf_fragment>\n",[512,1577,1579],{"class":514,"line":1578},45,[512,1580,591],{"emptyLinePlaceholder":590},[512,1582,1584],{"class":514,"line":1583},46,[512,1585,1586],{"class":539},"    vec4 base = texture2DProj( tDiffuse, vUv );\n",[512,1588,1590],{"class":514,"line":1589},47,[512,1591,1592],{"class":539},"    gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n",[512,1594,1596],{"class":514,"line":1595},48,[512,1597,591],{"emptyLinePlaceholder":590},[512,1599,1601],{"class":514,"line":1600},49,[512,1602,1603],{"class":539},"    #include \u003Ctonemapping_fragment>\n",[512,1605,1607],{"class":514,"line":1606},50,[512,1608,1609],{"class":539},"    #include \u003Ccolorspace_fragment>\n",[512,1611,1613,1615],{"class":514,"line":1612},51,[512,1614,1469],{"class":539},[512,1616,1404],{"class":518},[512,1618,1620],{"class":514,"line":1619},52,[512,1621,591],{"emptyLinePlaceholder":590},[512,1623,1625],{"class":514,"line":1624},53,[512,1626,1043],{"class":518},[1628,1629,1630],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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}",{"title":508,"searchDepth":515,"depth":548,"links":1632},[1633,1634,1635],{"id":501,"depth":548,"text":15},{"id":856,"depth":548,"text":857},{"id":970,"depth":548,"text":971,"children":1636},[1637],{"id":1271,"depth":577,"text":1272},"Create real-time reflections of your scene.","md",null,{},{"title":425,"description":1638},"24igh7rDYMu_PMUA2O2RSz3ThFBClmpHnB0dGe1M0hI",[1645,1647],{"title":421,"path":422,"stem":423,"description":1646,"children":-1},"Create organic blob-like shapes using metaballs.",{"title":429,"path":430,"stem":431,"description":1648,"children":-1},"Render text in 3D using TextGeometry.",1774953658125]