[{"data":1,"prerenderedAt":1958},["ShallowReactive",2],{"navigation":3,"/api/objects/refractor":474,"/api/objects/refractor-surround":1953},[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,190,284,310,344,394,440],{"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],{"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},"Point Material","/api/materials/point-material","2.api/4.materials/point-material",{"title":187,"path":188,"stem":189},"Wobble Material","/api/materials/wobble-material","2.api/4.materials/wobble-material",{"title":191,"path":192,"stem":193,"children":194},"Shapes","/api/shapes","2.api/5.shapes/index",[195,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280],{"title":191,"path":192,"stem":193},{"title":197,"path":198,"stem":199},"Box","/api/shapes/box","2.api/5.shapes/box",{"title":201,"path":202,"stem":203},"CatmullRomCurve3","/api/shapes/catmullromcurve3","2.api/5.shapes/catmullromcurve3",{"title":205,"path":206,"stem":207},"Circle","/api/shapes/circle","2.api/5.shapes/circle",{"title":209,"path":210,"stem":211},"Cone","/api/shapes/cone","2.api/5.shapes/cone",{"title":213,"path":214,"stem":215},"Cubic Bezier Line","/api/shapes/cubic-bezier-line","2.api/5.shapes/cubic-bezier-line",{"title":217,"path":218,"stem":219},"Cylinder","/api/shapes/cylinder","2.api/5.shapes/cylinder",{"title":221,"path":222,"stem":223},"Dodecahedron","/api/shapes/dodecahedron","2.api/5.shapes/dodecahedron",{"title":225,"path":226,"stem":227},"Grid","/api/shapes/grid","2.api/5.shapes/grid",{"title":229,"path":230,"stem":231},"Icosahedron","/api/shapes/icosahedron","2.api/5.shapes/icosahedron",{"title":233,"path":234,"stem":235},"Line2","/api/shapes/line2","2.api/5.shapes/line2",{"title":237,"path":238,"stem":239},"Octahedron","/api/shapes/octahedron","2.api/5.shapes/octahedron",{"title":241,"path":242,"stem":243},"Plane","/api/shapes/plane","2.api/5.shapes/plane",{"title":245,"path":246,"stem":247},"Quadratic Bezier Line","/api/shapes/quadratic-bezier-line","2.api/5.shapes/quadratic-bezier-line",{"title":249,"path":250,"stem":251},"Ring","/api/shapes/ring","2.api/5.shapes/ring",{"title":253,"path":254,"stem":255},"Rounded Box","/api/shapes/rounded-box","2.api/5.shapes/rounded-box",{"title":257,"path":258,"stem":259},"Screen Quad","/api/shapes/screen-quad","2.api/5.shapes/screen-quad",{"title":261,"path":262,"stem":263},"Sphere","/api/shapes/sphere","2.api/5.shapes/sphere",{"title":265,"path":266,"stem":267},"Superformula","/api/shapes/superformula","2.api/5.shapes/superformula",{"title":269,"path":270,"stem":271},"Tetrahedron","/api/shapes/tetrahedron","2.api/5.shapes/tetrahedron",{"title":273,"path":274,"stem":275},"Torus","/api/shapes/torus","2.api/5.shapes/torus",{"title":277,"path":278,"stem":279},"Torus Knot","/api/shapes/torus-knot","2.api/5.shapes/torus-knot",{"title":281,"path":282,"stem":283},"Tube","/api/shapes/tube","2.api/5.shapes/tube",{"title":285,"path":286,"stem":287,"children":288},"Debug/Performance","/api/debug-performance","2.api/6.debug-performance/index",[289,290,294,298,302,306],{"title":285,"path":286,"stem":287},{"title":291,"path":292,"stem":293},"Helper","/api/debug-performance/helper","2.api/6.debug-performance/helper",{"title":295,"path":296,"stem":297},"LOD","/api/debug-performance/lod","2.api/6.debug-performance/lod",{"title":299,"path":300,"stem":301},"Stats","/api/debug-performance/stats","2.api/6.debug-performance/stats",{"title":303,"path":304,"stem":305},"StatsGl","/api/debug-performance/stats-gl","2.api/6.debug-performance/stats-gl",{"title":307,"path":308,"stem":309},"useBVH","/api/debug-performance/use-bvh","2.api/6.debug-performance/use-bvh",{"title":311,"path":312,"stem":313,"children":314},"Light/Shadow","/api/light-shadow","2.api/7.light-shadow/index",[315,316,320,324,328,332,336,340],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319},"Accumulative Shadows","/api/light-shadow/accumulative-shadows","2.api/7.light-shadow/accumulative-shadows",{"title":321,"path":322,"stem":323},"Bake Shadows","/api/light-shadow/bake-shadows","2.api/7.light-shadow/bake-shadows",{"title":325,"path":326,"stem":327},"Circle Shadow","/api/light-shadow/circle-shadow","2.api/7.light-shadow/circle-shadow",{"title":329,"path":330,"stem":331},"Contact Shadows","/api/light-shadow/contact-shadows","2.api/7.light-shadow/contact-shadows",{"title":333,"path":334,"stem":335},"Lensflare","/api/light-shadow/lensflare","2.api/7.light-shadow/lensflare",{"title":337,"path":338,"stem":339},"Randomized Lights","/api/light-shadow/randomized-lights","2.api/7.light-shadow/randomized-lights",{"title":341,"path":342,"stem":343},"Soft Shadows","/api/light-shadow/soft-shadows","2.api/7.light-shadow/soft-shadows",{"title":345,"path":346,"stem":347,"children":348},"Staging","/api/staging","2.api/8.staging/index",[349,350,354,358,362,366,370,374,378,382,386,390],{"title":345,"path":346,"stem":347},{"title":351,"path":352,"stem":353},"Environment","/api/staging/environment","2.api/8.staging/1.environment",{"title":355,"path":356,"stem":357},"useEnvironment","/api/staging/use-environment","2.api/8.staging/2.use-environment",{"title":359,"path":360,"stem":361},"Lightformer","/api/staging/lightformer","2.api/8.staging/3.lightformer",{"title":363,"path":364,"stem":365},"Backdrop","/api/staging/backdrop","2.api/8.staging/backdrop",{"title":367,"path":368,"stem":369},"Ocean","/api/staging/ocean","2.api/8.staging/ocean",{"title":371,"path":372,"stem":373},"Precipitation","/api/staging/precipitation","2.api/8.staging/precipitation",{"title":375,"path":376,"stem":377},"Sky","/api/staging/sky","2.api/8.staging/sky",{"title":379,"path":380,"stem":381},"Smoke","/api/staging/smoke","2.api/8.staging/smoke",{"title":383,"path":384,"stem":385},"Sparkles","/api/staging/sparkles","2.api/8.staging/sparkles",{"title":387,"path":388,"stem":389},"Stage","/api/staging/stage","2.api/8.staging/stage",{"title":391,"path":392,"stem":393},"Stars","/api/staging/stars","2.api/8.staging/stars",{"title":395,"path":396,"stem":397,"children":398},"Objects","/api/objects","2.api/9.objects/index",[399,400,404,408,412,416,420,424,428,432,436],{"title":395,"path":396,"stem":397},{"title":401,"path":402,"stem":403},"AnimatedSprite","/api/objects/animated-sprite","2.api/9.objects/animated-sprite",{"title":405,"path":406,"stem":407},"CubeCamera","/api/objects/cube-camera","2.api/9.objects/cube-camera",{"title":409,"path":410,"stem":411},"Fbo","/api/objects/fbo","2.api/9.objects/fbo",{"title":413,"path":414,"stem":415},"GradientTexture","/api/objects/gradient-texture","2.api/9.objects/gradient-texture",{"title":417,"path":418,"stem":419},"HTML","/api/objects/html","2.api/9.objects/html",{"title":421,"path":422,"stem":423},"Image","/api/objects/image","2.api/9.objects/image",{"title":425,"path":426,"stem":427},"MarchingCubes","/api/objects/marching-cubes","2.api/9.objects/marching-cubes",{"title":429,"path":430,"stem":431},"Reflector","/api/objects/reflector","2.api/9.objects/reflector",{"title":433,"path":434,"stem":435},"Refractor","/api/objects/refractor","2.api/9.objects/refractor",{"title":437,"path":438,"stem":439},"Text3D","/api/objects/text-3d","2.api/9.objects/text-3d",{"title":441,"path":442,"stem":443,"children":444},"Miscellaneous","/api/miscellaneous","2.api/miscellaneous/index",[445,446,450,454,458,462,466,470],{"title":441,"path":442,"stem":443},{"title":447,"path":448,"stem":449},"Bounds","/api/miscellaneous/bounds","2.api/miscellaneous/bounds",{"title":451,"path":452,"stem":453},"GlobalAudio","/api/miscellaneous/global-audio","2.api/miscellaneous/global-audio",{"title":455,"path":456,"stem":457},"MouseParallax","/api/miscellaneous/mouse-parallax","2.api/miscellaneous/mouse-parallax",{"title":459,"path":460,"stem":461},"PositionalAudio","/api/miscellaneous/positional-audio","2.api/miscellaneous/positional-audio",{"title":463,"path":464,"stem":465},"useAnimations","/api/miscellaneous/use-animations","2.api/miscellaneous/use-animations",{"title":467,"path":468,"stem":469},"useGLTFExporter","/api/miscellaneous/use-gltf-exporter","2.api/miscellaneous/use-gltf-exporter",{"title":471,"path":472,"stem":473},"useIntersect","/api/miscellaneous/use-intersect","2.api/miscellaneous/use-intersect",{"id":475,"title":433,"body":476,"description":1947,"extension":1948,"links":1949,"meta":1950,"navigation":598,"path":434,"seo":1951,"stem":435,"__hash__":1952},"docs/2.api/9.objects/refractor.md",{"type":477,"value":478,"toc":1940},"minimark",[479,485,506,510,879,883,996,1005,1009,1023,1693,1696,1701,1936],[480,481,482],"scene-controls-wrapper",{},[483,484],"objects-refractor",{},[486,487,488,489,493,494,501,502,505],"p",{},"The ",[490,491,492],"code",{},"cientos"," package provides an abstraction of the ",[495,496,500],"a",{"href":497,"rel":498},"https://github.com/mrdoob/three.js/blob/dev/examples/jsm/objects/Refractor.js",[499],"nofollow","Refractor class",", which creates a Mesh that renders what is behind it with a refractive distortion effect — useful for glass panels, water surfaces, and other transmissive materials. This Mesh extends from ",[490,503,504],{},"Mesh"," so all the default props can be passed as well.",[507,508,15],"h2",{"id":509},"usage",[511,512,517],"pre",{"className":513,"code":514,"language":515,"meta":516,"style":516},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nimport { Refractor } from '@tresjs/cientos'\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CTresCanvas shadows alpha>\n    \u003CTresPerspectiveCamera :position=\"[0, 2, 8]\" />\n    \u003COrbitControls />\n\n    \u003C!-- Place objects behind the refracting plane -->\n    \u003CTresMesh :position=\"[-2, 0, -2]\">\n      \u003CTresTorusKnotGeometry />\n      \u003CTresMeshStandardMaterial color=\"hotpink\" />\n    \u003C/TresMesh>\n\n    \u003CSuspense>\n      \u003CRefractor color=\"#9ec8d4\">\n        \u003CTresPlaneGeometry :args=\"[8, 5]\" />\n      \u003C/Refractor>\n    \u003C/Suspense>\n  \u003C/TresCanvas>\n\u003C/template>\n","vue","",[490,518,519,554,583,593,600,610,627,672,682,687,694,730,741,763,773,778,788,808,841,851,860,870],{"__ignoreMap":516},[520,521,524,528,532,536,539,542,545,549,551],"span",{"class":522,"line":523},"line",1,[520,525,527],{"class":526},"sMK4o","\u003C",[520,529,531],{"class":530},"swJcz","script",[520,533,535],{"class":534},"spNyl"," setup",[520,537,538],{"class":534}," lang",[520,540,541],{"class":526},"=",[520,543,544],{"class":526},"\"",[520,546,548],{"class":547},"sfazB","ts",[520,550,544],{"class":526},[520,552,553],{"class":526},">\n",[520,555,557,561,564,568,571,574,577,580],{"class":522,"line":556},2,[520,558,560],{"class":559},"s7zQu","import",[520,562,563],{"class":526}," {",[520,565,567],{"class":566},"sTEyZ"," Refractor",[520,569,570],{"class":526}," }",[520,572,573],{"class":559}," from",[520,575,576],{"class":526}," '",[520,578,579],{"class":547},"@tresjs/cientos",[520,581,582],{"class":526},"'\n",[520,584,586,589,591],{"class":522,"line":585},3,[520,587,588],{"class":526},"\u003C/",[520,590,531],{"class":530},[520,592,553],{"class":526},[520,594,596],{"class":522,"line":595},4,[520,597,599],{"emptyLinePlaceholder":598},true,"\n",[520,601,603,605,608],{"class":522,"line":602},5,[520,604,527],{"class":526},[520,606,607],{"class":530},"template",[520,609,553],{"class":526},[520,611,613,616,619,622,625],{"class":522,"line":612},6,[520,614,615],{"class":526},"  \u003C",[520,617,618],{"class":530},"TresCanvas",[520,620,621],{"class":534}," shadows",[520,623,624],{"class":534}," alpha",[520,626,553],{"class":526},[520,628,630,633,636,639,642,644,646,649,653,656,659,661,664,667,669],{"class":522,"line":629},7,[520,631,632],{"class":526},"    \u003C",[520,634,635],{"class":530},"TresPerspectiveCamera",[520,637,638],{"class":526}," :",[520,640,641],{"class":534},"position",[520,643,541],{"class":526},[520,645,544],{"class":526},[520,647,648],{"class":526},"[",[520,650,652],{"class":651},"sbssI","0",[520,654,655],{"class":526},", ",[520,657,658],{"class":651},"2",[520,660,655],{"class":526},[520,662,663],{"class":651},"8",[520,665,666],{"class":526},"]",[520,668,544],{"class":526},[520,670,671],{"class":526}," />\n",[520,673,675,677,680],{"class":522,"line":674},8,[520,676,632],{"class":526},[520,678,679],{"class":530},"OrbitControls",[520,681,671],{"class":526},[520,683,685],{"class":522,"line":684},9,[520,686,599],{"emptyLinePlaceholder":598},[520,688,690],{"class":522,"line":689},10,[520,691,693],{"class":692},"sHwdD","    \u003C!-- Place objects behind the refracting plane -->\n",[520,695,697,699,702,704,706,708,710,713,715,717,719,722,724,726,728],{"class":522,"line":696},11,[520,698,632],{"class":526},[520,700,701],{"class":530},"TresMesh",[520,703,638],{"class":526},[520,705,641],{"class":534},[520,707,541],{"class":526},[520,709,544],{"class":526},[520,711,712],{"class":526},"[-",[520,714,658],{"class":651},[520,716,655],{"class":526},[520,718,652],{"class":651},[520,720,721],{"class":526},", -",[520,723,658],{"class":651},[520,725,666],{"class":526},[520,727,544],{"class":526},[520,729,553],{"class":526},[520,731,733,736,739],{"class":522,"line":732},12,[520,734,735],{"class":526},"      \u003C",[520,737,738],{"class":530},"TresTorusKnotGeometry",[520,740,671],{"class":526},[520,742,744,746,749,752,754,756,759,761],{"class":522,"line":743},13,[520,745,735],{"class":526},[520,747,748],{"class":530},"TresMeshStandardMaterial",[520,750,751],{"class":534}," color",[520,753,541],{"class":526},[520,755,544],{"class":526},[520,757,758],{"class":547},"hotpink",[520,760,544],{"class":526},[520,762,671],{"class":526},[520,764,766,769,771],{"class":522,"line":765},14,[520,767,768],{"class":526},"    \u003C/",[520,770,701],{"class":530},[520,772,553],{"class":526},[520,774,776],{"class":522,"line":775},15,[520,777,599],{"emptyLinePlaceholder":598},[520,779,781,783,786],{"class":522,"line":780},16,[520,782,632],{"class":526},[520,784,785],{"class":530},"Suspense",[520,787,553],{"class":526},[520,789,791,793,795,797,799,801,804,806],{"class":522,"line":790},17,[520,792,735],{"class":526},[520,794,433],{"class":530},[520,796,751],{"class":534},[520,798,541],{"class":526},[520,800,544],{"class":526},[520,802,803],{"class":547},"#9ec8d4",[520,805,544],{"class":526},[520,807,553],{"class":526},[520,809,811,814,817,819,822,824,826,828,830,832,835,837,839],{"class":522,"line":810},18,[520,812,813],{"class":526},"        \u003C",[520,815,816],{"class":530},"TresPlaneGeometry",[520,818,638],{"class":526},[520,820,821],{"class":534},"args",[520,823,541],{"class":526},[520,825,544],{"class":526},[520,827,648],{"class":526},[520,829,663],{"class":651},[520,831,655],{"class":526},[520,833,834],{"class":651},"5",[520,836,666],{"class":526},[520,838,544],{"class":526},[520,840,671],{"class":526},[520,842,844,847,849],{"class":522,"line":843},19,[520,845,846],{"class":526},"      \u003C/",[520,848,433],{"class":530},[520,850,553],{"class":526},[520,852,854,856,858],{"class":522,"line":853},20,[520,855,768],{"class":526},[520,857,785],{"class":530},[520,859,553],{"class":526},[520,861,863,866,868],{"class":522,"line":862},21,[520,864,865],{"class":526},"  \u003C/",[520,867,618],{"class":530},[520,869,553],{"class":526},[520,871,873,875,877],{"class":522,"line":872},22,[520,874,588],{"class":526},[520,876,607],{"class":530},[520,878,553],{"class":526},[507,880,882],{"id":881},"props","Props",[884,885,886,903],"table",{},[887,888,889],"thead",{},[890,891,892,897,900],"tr",{},[893,894,896],"th",{"align":895},"left","Prop",[893,898,899],{"align":895},"Description",[893,901,902],{},"Default",[904,905,906,923,938,952,966,981],"tbody",{},[890,907,908,915,918],{},[909,910,911],"td",{"align":895},[912,913,914],"strong",{},"color",[909,916,917],{"align":895},"Color tint blended with the refracted image",[909,919,920],{},[490,921,922],{},"'#7f7f7f'",[890,924,925,930,933],{},[909,926,927],{"align":895},[912,928,929],{},"textureWidth",[909,931,932],{"align":895},"Width of the internal render target texture",[909,934,935],{},[490,936,937],{},"512",[890,939,940,945,948],{},[909,941,942],{"align":895},[912,943,944],{},"textureHeight",[909,946,947],{"align":895},"Height of the internal render target texture",[909,949,950],{},[490,951,937],{},[890,953,954,959,962],{},[909,955,956],{"align":895},[912,957,958],{},"clipBias",[909,960,961],{"align":895},"Clip bias for the virtual camera projection",[909,963,964],{},[490,965,652],{},[890,967,968,973,976],{},[909,969,970],{"align":895},[912,971,972],{},"multisample",[909,974,975],{"align":895},"Number of MSAA samples for the render target",[909,977,978],{},[490,979,980],{},"4",[890,982,983,988,991],{},[909,984,985],{"align":895},[912,986,987],{},"shader",[909,989,990],{"align":895},"Custom shader object to override the built-in shader",[909,992,993],{},[490,994,995],{},"Refractor.RefractorShader",[997,998,999],"prose-warning",{},[486,1000,1001,1002,1004],{},"All the props except ",[490,1003,914],{}," are not reactive",[507,1006,1008],{"id":1007},"custom-refraction-effect","Custom refraction effect",[486,1010,1011,1012,655,1015,1018,1019,1022],{},"You can provide your own shader by passing a full shader object with ",[490,1013,1014],{},"uniforms",[490,1016,1017],{},"vertexShader",", and ",[490,1020,1021],{},"fragmentShader",". The example below adds animated circular ripples emanating from the center of the surface, while preserving the color tint:",[511,1024,1026],{"className":513,"code":1025,"language":515,"meta":516,"style":516},"\u003Cscript setup lang=\"ts\">\nimport { Refractor } from '@tresjs/cientos'\nimport { useLoop } from '@tresjs/core'\nimport { shallowRef } from 'vue'\n\nconst refractorRef = shallowRef()\n\nconst customShader = {\n  uniforms: {\n    color: { value: null },\n    tDiffuse: { value: null },\n    textureMatrix: { value: null },\n    time: { value: 0 },\n  },\n  vertexShader: /* glsl */`\n    uniform mat4 textureMatrix;\n    varying vec4 vUv;\n    varying vec2 vPos;\n    void main() {\n      vUv = textureMatrix * vec4(position, 1.0);\n      vPos = position.xy;\n      gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n    }`,\n  fragmentShader: /* glsl */`\n    uniform vec3 color;\n    uniform sampler2D tDiffuse;\n    uniform float time;\n    varying vec4 vUv;\n    varying vec2 vPos;\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    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    void main() {\n      float dist = length(vPos);\n      float wave = sin(dist * 6.0 - time * 4.0) * 0.02;\n      vec2 dir = dist > 0.001 ? normalize(vPos) : vec2(0.0);\n      vec4 distortedUv = vUv + vec4(dir * wave, 0.0, 0.0);\n      vec4 base = texture2DProj(tDiffuse, distortedUv);\n      gl_FragColor = vec4(blendOverlay(base.rgb, color), 1.0);\n      #include \u003Ctonemapping_fragment>\n      #include \u003Ccolorspace_fragment>\n    }`,\n}\n\nconst { onBeforeRender } = useLoop()\nonBeforeRender(({ elapsed }) => {\n  const uniforms = refractorRef.value?.instance?.material?.uniforms\n  if (uniforms?.time) { uniforms.time.value = elapsed }\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003CRefractor\n    ref=\"refractorRef\"\n    color=\"#9ec8d4\"\n    :shader=\"customShader\"\n  >\n    \u003CTresPlaneGeometry :args=\"[8, 5]\" />\n  \u003C/Refractor>\n\u003C/template>\n",[490,1027,1028,1048,1066,1086,1105,1109,1125,1129,1141,1151,1171,1188,1205,1223,1228,1241,1246,1251,1256,1261,1266,1271,1276,1288,1300,1306,1312,1318,1323,1328,1334,1340,1346,1352,1358,1363,1368,1374,1380,1386,1392,1398,1404,1410,1416,1425,1431,1436,1456,1480,1516,1555,1563,1572,1577,1586,1594,1610,1623,1640,1646,1675,1684],{"__ignoreMap":516},[520,1029,1030,1032,1034,1036,1038,1040,1042,1044,1046],{"class":522,"line":523},[520,1031,527],{"class":526},[520,1033,531],{"class":530},[520,1035,535],{"class":534},[520,1037,538],{"class":534},[520,1039,541],{"class":526},[520,1041,544],{"class":526},[520,1043,548],{"class":547},[520,1045,544],{"class":526},[520,1047,553],{"class":526},[520,1049,1050,1052,1054,1056,1058,1060,1062,1064],{"class":522,"line":556},[520,1051,560],{"class":559},[520,1053,563],{"class":526},[520,1055,567],{"class":566},[520,1057,570],{"class":526},[520,1059,573],{"class":559},[520,1061,576],{"class":526},[520,1063,579],{"class":547},[520,1065,582],{"class":526},[520,1067,1068,1070,1072,1075,1077,1079,1081,1084],{"class":522,"line":585},[520,1069,560],{"class":559},[520,1071,563],{"class":526},[520,1073,1074],{"class":566}," useLoop",[520,1076,570],{"class":526},[520,1078,573],{"class":559},[520,1080,576],{"class":526},[520,1082,1083],{"class":547},"@tresjs/core",[520,1085,582],{"class":526},[520,1087,1088,1090,1092,1095,1097,1099,1101,1103],{"class":522,"line":595},[520,1089,560],{"class":559},[520,1091,563],{"class":526},[520,1093,1094],{"class":566}," shallowRef",[520,1096,570],{"class":526},[520,1098,573],{"class":559},[520,1100,576],{"class":526},[520,1102,515],{"class":547},[520,1104,582],{"class":526},[520,1106,1107],{"class":522,"line":602},[520,1108,599],{"emptyLinePlaceholder":598},[520,1110,1111,1114,1117,1119,1122],{"class":522,"line":612},[520,1112,1113],{"class":534},"const",[520,1115,1116],{"class":566}," refractorRef ",[520,1118,541],{"class":526},[520,1120,1094],{"class":1121},"s2Zo4",[520,1123,1124],{"class":566},"()\n",[520,1126,1127],{"class":522,"line":629},[520,1128,599],{"emptyLinePlaceholder":598},[520,1130,1131,1133,1136,1138],{"class":522,"line":674},[520,1132,1113],{"class":534},[520,1134,1135],{"class":566}," customShader ",[520,1137,541],{"class":526},[520,1139,1140],{"class":526}," {\n",[520,1142,1143,1146,1149],{"class":522,"line":684},[520,1144,1145],{"class":530},"  uniforms",[520,1147,1148],{"class":526},":",[520,1150,1140],{"class":526},[520,1152,1153,1156,1158,1160,1163,1165,1168],{"class":522,"line":689},[520,1154,1155],{"class":530},"    color",[520,1157,1148],{"class":526},[520,1159,563],{"class":526},[520,1161,1162],{"class":530}," value",[520,1164,1148],{"class":526},[520,1166,1167],{"class":526}," null",[520,1169,1170],{"class":526}," },\n",[520,1172,1173,1176,1178,1180,1182,1184,1186],{"class":522,"line":696},[520,1174,1175],{"class":530},"    tDiffuse",[520,1177,1148],{"class":526},[520,1179,563],{"class":526},[520,1181,1162],{"class":530},[520,1183,1148],{"class":526},[520,1185,1167],{"class":526},[520,1187,1170],{"class":526},[520,1189,1190,1193,1195,1197,1199,1201,1203],{"class":522,"line":732},[520,1191,1192],{"class":530},"    textureMatrix",[520,1194,1148],{"class":526},[520,1196,563],{"class":526},[520,1198,1162],{"class":530},[520,1200,1148],{"class":526},[520,1202,1167],{"class":526},[520,1204,1170],{"class":526},[520,1206,1207,1210,1212,1214,1216,1218,1221],{"class":522,"line":743},[520,1208,1209],{"class":530},"    time",[520,1211,1148],{"class":526},[520,1213,563],{"class":526},[520,1215,1162],{"class":530},[520,1217,1148],{"class":526},[520,1219,1220],{"class":651}," 0",[520,1222,1170],{"class":526},[520,1224,1225],{"class":522,"line":765},[520,1226,1227],{"class":526},"  },\n",[520,1229,1230,1233,1235,1238],{"class":522,"line":775},[520,1231,1232],{"class":530},"  vertexShader",[520,1234,1148],{"class":526},[520,1236,1237],{"class":692}," /* glsl */",[520,1239,1240],{"class":526},"`\n",[520,1242,1243],{"class":522,"line":780},[520,1244,1245],{"class":547},"    uniform mat4 textureMatrix;\n",[520,1247,1248],{"class":522,"line":790},[520,1249,1250],{"class":547},"    varying vec4 vUv;\n",[520,1252,1253],{"class":522,"line":810},[520,1254,1255],{"class":547},"    varying vec2 vPos;\n",[520,1257,1258],{"class":522,"line":843},[520,1259,1260],{"class":547},"    void main() {\n",[520,1262,1263],{"class":522,"line":853},[520,1264,1265],{"class":547},"      vUv = textureMatrix * vec4(position, 1.0);\n",[520,1267,1268],{"class":522,"line":862},[520,1269,1270],{"class":547},"      vPos = position.xy;\n",[520,1272,1273],{"class":522,"line":872},[520,1274,1275],{"class":547},"      gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n",[520,1277,1279,1282,1285],{"class":522,"line":1278},23,[520,1280,1281],{"class":547},"    }",[520,1283,1284],{"class":526},"`",[520,1286,1287],{"class":526},",\n",[520,1289,1291,1294,1296,1298],{"class":522,"line":1290},24,[520,1292,1293],{"class":530},"  fragmentShader",[520,1295,1148],{"class":526},[520,1297,1237],{"class":692},[520,1299,1240],{"class":526},[520,1301,1303],{"class":522,"line":1302},25,[520,1304,1305],{"class":547},"    uniform vec3 color;\n",[520,1307,1309],{"class":522,"line":1308},26,[520,1310,1311],{"class":547},"    uniform sampler2D tDiffuse;\n",[520,1313,1315],{"class":522,"line":1314},27,[520,1316,1317],{"class":547},"    uniform float time;\n",[520,1319,1321],{"class":522,"line":1320},28,[520,1322,1250],{"class":547},[520,1324,1326],{"class":522,"line":1325},29,[520,1327,1255],{"class":547},[520,1329,1331],{"class":522,"line":1330},30,[520,1332,1333],{"class":547},"    float blendOverlay(float base, float blend) {\n",[520,1335,1337],{"class":522,"line":1336},31,[520,1338,1339],{"class":547},"      return(base \u003C 0.5 ? (2.0 * base * blend) : (1.0 - 2.0 * (1.0 - base) * (1.0 - blend)));\n",[520,1341,1343],{"class":522,"line":1342},32,[520,1344,1345],{"class":547},"    }\n",[520,1347,1349],{"class":522,"line":1348},33,[520,1350,1351],{"class":547},"    vec3 blendOverlay(vec3 base, vec3 blend) {\n",[520,1353,1355],{"class":522,"line":1354},34,[520,1356,1357],{"class":547},"      return vec3(blendOverlay(base.r, blend.r), blendOverlay(base.g, blend.g), blendOverlay(base.b, blend.b));\n",[520,1359,1361],{"class":522,"line":1360},35,[520,1362,1345],{"class":547},[520,1364,1366],{"class":522,"line":1365},36,[520,1367,1260],{"class":547},[520,1369,1371],{"class":522,"line":1370},37,[520,1372,1373],{"class":547},"      float dist = length(vPos);\n",[520,1375,1377],{"class":522,"line":1376},38,[520,1378,1379],{"class":547},"      float wave = sin(dist * 6.0 - time * 4.0) * 0.02;\n",[520,1381,1383],{"class":522,"line":1382},39,[520,1384,1385],{"class":547},"      vec2 dir = dist > 0.001 ? normalize(vPos) : vec2(0.0);\n",[520,1387,1389],{"class":522,"line":1388},40,[520,1390,1391],{"class":547},"      vec4 distortedUv = vUv + vec4(dir * wave, 0.0, 0.0);\n",[520,1393,1395],{"class":522,"line":1394},41,[520,1396,1397],{"class":547},"      vec4 base = texture2DProj(tDiffuse, distortedUv);\n",[520,1399,1401],{"class":522,"line":1400},42,[520,1402,1403],{"class":547},"      gl_FragColor = vec4(blendOverlay(base.rgb, color), 1.0);\n",[520,1405,1407],{"class":522,"line":1406},43,[520,1408,1409],{"class":547},"      #include \u003Ctonemapping_fragment>\n",[520,1411,1413],{"class":522,"line":1412},44,[520,1414,1415],{"class":547},"      #include \u003Ccolorspace_fragment>\n",[520,1417,1419,1421,1423],{"class":522,"line":1418},45,[520,1420,1281],{"class":547},[520,1422,1284],{"class":526},[520,1424,1287],{"class":526},[520,1426,1428],{"class":522,"line":1427},46,[520,1429,1430],{"class":526},"}\n",[520,1432,1434],{"class":522,"line":1433},47,[520,1435,599],{"emptyLinePlaceholder":598},[520,1437,1439,1441,1443,1446,1449,1452,1454],{"class":522,"line":1438},48,[520,1440,1113],{"class":534},[520,1442,563],{"class":526},[520,1444,1445],{"class":566}," onBeforeRender ",[520,1447,1448],{"class":526},"}",[520,1450,1451],{"class":526}," =",[520,1453,1074],{"class":1121},[520,1455,1124],{"class":566},[520,1457,1459,1462,1465,1468,1472,1475,1478],{"class":522,"line":1458},49,[520,1460,1461],{"class":1121},"onBeforeRender",[520,1463,1464],{"class":566},"(",[520,1466,1467],{"class":526},"({",[520,1469,1471],{"class":1470},"sHdIc"," elapsed",[520,1473,1474],{"class":526}," })",[520,1476,1477],{"class":534}," =>",[520,1479,1140],{"class":526},[520,1481,1483,1486,1489,1491,1494,1497,1500,1503,1506,1508,1511,1513],{"class":522,"line":1482},50,[520,1484,1485],{"class":534},"  const",[520,1487,1488],{"class":566}," uniforms",[520,1490,1451],{"class":526},[520,1492,1493],{"class":566}," refractorRef",[520,1495,1496],{"class":526},".",[520,1498,1499],{"class":566},"value",[520,1501,1502],{"class":526},"?.",[520,1504,1505],{"class":566},"instance",[520,1507,1502],{"class":526},[520,1509,1510],{"class":566},"material",[520,1512,1502],{"class":526},[520,1514,1515],{"class":566},"uniforms\n",[520,1517,1519,1522,1525,1527,1529,1532,1535,1538,1540,1542,1544,1546,1548,1550,1552],{"class":522,"line":1518},51,[520,1520,1521],{"class":559},"  if",[520,1523,1524],{"class":530}," (",[520,1526,1014],{"class":566},[520,1528,1502],{"class":526},[520,1530,1531],{"class":566},"time",[520,1533,1534],{"class":530},") ",[520,1536,1537],{"class":526},"{",[520,1539,1488],{"class":566},[520,1541,1496],{"class":526},[520,1543,1531],{"class":566},[520,1545,1496],{"class":526},[520,1547,1499],{"class":566},[520,1549,1451],{"class":526},[520,1551,1471],{"class":566},[520,1553,1554],{"class":526}," }\n",[520,1556,1558,1560],{"class":522,"line":1557},52,[520,1559,1448],{"class":526},[520,1561,1562],{"class":566},")\n",[520,1564,1566,1568,1570],{"class":522,"line":1565},53,[520,1567,588],{"class":526},[520,1569,531],{"class":530},[520,1571,553],{"class":526},[520,1573,1575],{"class":522,"line":1574},54,[520,1576,599],{"emptyLinePlaceholder":598},[520,1578,1580,1582,1584],{"class":522,"line":1579},55,[520,1581,527],{"class":526},[520,1583,607],{"class":530},[520,1585,553],{"class":526},[520,1587,1589,1591],{"class":522,"line":1588},56,[520,1590,615],{"class":526},[520,1592,1593],{"class":530},"Refractor\n",[520,1595,1597,1600,1602,1604,1607],{"class":522,"line":1596},57,[520,1598,1599],{"class":534},"    ref",[520,1601,541],{"class":526},[520,1603,544],{"class":526},[520,1605,1606],{"class":547},"refractorRef",[520,1608,1609],{"class":526},"\"\n",[520,1611,1613,1615,1617,1619,1621],{"class":522,"line":1612},58,[520,1614,1155],{"class":534},[520,1616,541],{"class":526},[520,1618,544],{"class":526},[520,1620,803],{"class":547},[520,1622,1609],{"class":526},[520,1624,1626,1629,1631,1633,1635,1638],{"class":522,"line":1625},59,[520,1627,1628],{"class":526},"    :",[520,1630,987],{"class":534},[520,1632,541],{"class":526},[520,1634,544],{"class":526},[520,1636,1637],{"class":566},"customShader",[520,1639,1609],{"class":526},[520,1641,1643],{"class":522,"line":1642},60,[520,1644,1645],{"class":526},"  >\n",[520,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673],{"class":522,"line":1648},61,[520,1650,632],{"class":526},[520,1652,816],{"class":530},[520,1654,638],{"class":526},[520,1656,821],{"class":534},[520,1658,541],{"class":526},[520,1660,544],{"class":526},[520,1662,648],{"class":526},[520,1664,663],{"class":651},[520,1666,655],{"class":526},[520,1668,834],{"class":651},[520,1670,666],{"class":526},[520,1672,544],{"class":526},[520,1674,671],{"class":526},[520,1676,1678,1680,1682],{"class":522,"line":1677},62,[520,1679,865],{"class":526},[520,1681,433],{"class":530},[520,1683,553],{"class":526},[520,1685,1687,1689,1691],{"class":522,"line":1686},63,[520,1688,588],{"class":526},[520,1690,607],{"class":530},[520,1692,553],{"class":526},[486,1694,1695],{},"The Refractor shader uses the following configuration by default:",[1697,1698,1700],"h3",{"id":1699},"default-shader","Default shader",[511,1702,1706],{"className":1703,"code":1704,"language":1705,"meta":516,"style":516},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const shader = {\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    void main() {\n      vUv = textureMatrix * vec4( position, 1.0 );\n      gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n    }`,\n  fragmentShader: /* glsl */`\n    uniform vec3 color;\n    uniform sampler2D tDiffuse;\n    varying vec4 vUv;\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      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","js",[490,1707,1708,1719,1727,1735,1745,1750,1758,1766,1770,1778,1786,1790,1794,1804,1808,1812,1816,1820,1825,1830,1838,1848,1852,1856,1860,1864,1869,1874,1878,1882,1887,1892,1896,1900,1904,1909,1914,1918,1922,1926,1932],{"__ignoreMap":516},[520,1709,1710,1712,1715,1717],{"class":522,"line":523},[520,1711,1113],{"class":534},[520,1713,1714],{"class":566}," shader ",[520,1716,541],{"class":526},[520,1718,1140],{"class":526},[520,1720,1721,1723,1725],{"class":522,"line":556},[520,1722,1145],{"class":530},[520,1724,1148],{"class":526},[520,1726,1140],{"class":526},[520,1728,1729,1731,1733],{"class":522,"line":585},[520,1730,1155],{"class":530},[520,1732,1148],{"class":526},[520,1734,1140],{"class":526},[520,1736,1737,1740,1742],{"class":522,"line":595},[520,1738,1739],{"class":530},"      value",[520,1741,1148],{"class":526},[520,1743,1744],{"class":526}," null\n",[520,1746,1747],{"class":522,"line":602},[520,1748,1749],{"class":526},"    },\n",[520,1751,1752,1754,1756],{"class":522,"line":612},[520,1753,1175],{"class":530},[520,1755,1148],{"class":526},[520,1757,1140],{"class":526},[520,1759,1760,1762,1764],{"class":522,"line":629},[520,1761,1739],{"class":530},[520,1763,1148],{"class":526},[520,1765,1744],{"class":526},[520,1767,1768],{"class":522,"line":674},[520,1769,1749],{"class":526},[520,1771,1772,1774,1776],{"class":522,"line":684},[520,1773,1192],{"class":530},[520,1775,1148],{"class":526},[520,1777,1140],{"class":526},[520,1779,1780,1782,1784],{"class":522,"line":689},[520,1781,1739],{"class":530},[520,1783,1148],{"class":526},[520,1785,1744],{"class":526},[520,1787,1788],{"class":522,"line":696},[520,1789,1345],{"class":526},[520,1791,1792],{"class":522,"line":732},[520,1793,1227],{"class":526},[520,1795,1796,1798,1800,1802],{"class":522,"line":743},[520,1797,1232],{"class":530},[520,1799,1148],{"class":526},[520,1801,1237],{"class":692},[520,1803,1240],{"class":526},[520,1805,1806],{"class":522,"line":765},[520,1807,1245],{"class":547},[520,1809,1810],{"class":522,"line":775},[520,1811,1250],{"class":547},[520,1813,1814],{"class":522,"line":780},[520,1815,599],{"emptyLinePlaceholder":598},[520,1817,1818],{"class":522,"line":790},[520,1819,1260],{"class":547},[520,1821,1822],{"class":522,"line":810},[520,1823,1824],{"class":547},"      vUv = textureMatrix * vec4( position, 1.0 );\n",[520,1826,1827],{"class":522,"line":843},[520,1828,1829],{"class":547},"      gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n",[520,1831,1832,1834,1836],{"class":522,"line":853},[520,1833,1281],{"class":547},[520,1835,1284],{"class":526},[520,1837,1287],{"class":526},[520,1839,1840,1842,1844,1846],{"class":522,"line":862},[520,1841,1293],{"class":530},[520,1843,1148],{"class":526},[520,1845,1237],{"class":692},[520,1847,1240],{"class":526},[520,1849,1850],{"class":522,"line":872},[520,1851,1305],{"class":547},[520,1853,1854],{"class":522,"line":1278},[520,1855,1311],{"class":547},[520,1857,1858],{"class":522,"line":1290},[520,1859,1250],{"class":547},[520,1861,1862],{"class":522,"line":1302},[520,1863,599],{"emptyLinePlaceholder":598},[520,1865,1866],{"class":522,"line":1308},[520,1867,1868],{"class":547},"    float blendOverlay( float base, float blend ) {\n",[520,1870,1871],{"class":522,"line":1314},[520,1872,1873],{"class":547},"      return( base \u003C 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n",[520,1875,1876],{"class":522,"line":1320},[520,1877,1345],{"class":547},[520,1879,1880],{"class":522,"line":1325},[520,1881,599],{"emptyLinePlaceholder":598},[520,1883,1884],{"class":522,"line":1330},[520,1885,1886],{"class":547},"    vec3 blendOverlay( vec3 base, vec3 blend ) {\n",[520,1888,1889],{"class":522,"line":1336},[520,1890,1891],{"class":547},"      return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ), blendOverlay( base.b, blend.b ) );\n",[520,1893,1894],{"class":522,"line":1342},[520,1895,1345],{"class":547},[520,1897,1898],{"class":522,"line":1348},[520,1899,599],{"emptyLinePlaceholder":598},[520,1901,1902],{"class":522,"line":1354},[520,1903,1260],{"class":547},[520,1905,1906],{"class":522,"line":1360},[520,1907,1908],{"class":547},"      vec4 base = texture2DProj( tDiffuse, vUv );\n",[520,1910,1911],{"class":522,"line":1365},[520,1912,1913],{"class":547},"      gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n",[520,1915,1916],{"class":522,"line":1370},[520,1917,599],{"emptyLinePlaceholder":598},[520,1919,1920],{"class":522,"line":1376},[520,1921,1409],{"class":547},[520,1923,1924],{"class":522,"line":1382},[520,1925,1415],{"class":547},[520,1927,1928,1930],{"class":522,"line":1388},[520,1929,1281],{"class":547},[520,1931,1240],{"class":526},[520,1933,1934],{"class":522,"line":1394},[520,1935,1430],{"class":526},[1937,1938,1939],"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 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);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":516,"searchDepth":523,"depth":556,"links":1941},[1942,1943,1944],{"id":509,"depth":556,"text":15},{"id":881,"depth":556,"text":882},{"id":1007,"depth":556,"text":1008,"children":1945},[1946],{"id":1699,"depth":585,"text":1700},"Create real-time refractive (glass-like) surfaces in your scene.","md",null,{},{"title":433,"description":1947},"0S_zvDpr4VfCZrIb3n88oUTHkrLHsw7pJnIv_3ITHzM",[1954,1956],{"title":429,"path":430,"stem":431,"description":1955,"children":-1},"Create real-time reflections of your scene.",{"title":437,"path":438,"stem":439,"description":1957,"children":-1},"Render text in 3D using TextGeometry.",1781273440889]