[{"data":1,"prerenderedAt":944},["ShallowReactive",2],{"doc:\u002Fvector-engine\u002Finternals\u002Fwasm":3,"surround:\u002Fvector-engine\u002Finternals\u002Fwasm":695,"navigation":706},{"id":4,"title":5,"body":6,"description":688,"extension":689,"meta":690,"navigation":256,"path":691,"seo":692,"stem":693,"__hash__":694},"docs\u002F03.vector-engine\u002F05.internals\u002F02.wasm.md","WebAssembly i workery",{"type":7,"value":8,"toc":679},"minimark",[9,14,23,58,64,72,79,94,98,176,180,190,196,225,229,471,475,615,619,626,639,642,646,649,655,667,675],[10,11,13],"h2",{"id":12},"build","Build",[15,16,17,18,22],"p",{},"Kompilacja natywnego rdzenia C++23 do zoptymalizowanego ",[19,20,21],"code",{},"-O3"," WASM:",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-bash shiki shiki-themes github-light github-dark","npm run wasm:build\nnpm run verify:wasm\n","bash","",[19,31,32,48],{"__ignoreMap":29},[33,34,37,41,45],"span",{"class":35,"line":36},"line",1,[33,38,40],{"class":39},"sScJk","npm",[33,42,44],{"class":43},"sZZnC"," run",[33,46,47],{"class":43}," wasm:build\n",[33,49,51,53,55],{"class":35,"line":50},2,[33,52,40],{"class":39},[33,54,44],{"class":43},[33,56,57],{"class":43}," verify:wasm\n",[15,59,60,63],{},[19,61,62],{},"scripts\u002Fbuild-wasm.mjs"," kompiluje wszystkie jednostki translacji z flagami:",[24,65,70],{"className":66,"code":68,"language":69,"meta":29},[67],"language-text","-std=c++23 -O3 -ffunction-sections -fdata-sections\n-Wl,--gc-sections -Wl,--strip-all\n","text",[19,71,68],{"__ignoreMap":29},[15,73,74,75,78],{},"Target: ",[19,76,77],{},"wasm32-wasi"," reactor mode. Artefakty:",[80,81,82,88],"ul",{},[83,84,85],"li",{},[19,86,87],{},"apps\u002Fweb\u002Fpublic\u002Fwasm\u002Fvector_engine.wasm",[83,89,90,93],{},[19,91,92],{},"apps\u002Fweb\u002Fpublic\u002Fwasm\u002Fvector_engine.js"," (loader zgodny z CSP)",[10,95,97],{"id":96},"publiczne-api-instancji","Publiczne API instancji",[99,100,101,114],"table",{},[102,103,104],"thead",{},[105,106,107,111],"tr",{},[108,109,110],"th",{},"Funkcja",[108,112,113],{},"Co robi",[115,116,117,128,138,148,162],"tbody",{},[105,118,119,125],{},[120,121,122],"td",{},[19,123,124],{},"validateJson(source)",[120,126,127],{},"Walidacja schemy, unikalnych ID, gradientów, warstw, workspace'ów i limitów",[105,129,130,135],{},[120,131,132],{},[19,133,134],{},"measureBounds(source, optionsJson)",[120,136,137],{},"Dokładne analityczne bounding boxy przez złożone transformacje i stroke",[105,139,140,145],{},[120,141,142],{},[19,143,144],{},"renderScopedSvg(source, optionsJson)",[120,146,147],{},"Ekstrakcja scope, viewport\u002Fmargin\u002Fclip\u002Ffit, zwraca SVG + metadane",[105,149,150,159],{},[120,151,152,155,156],{},[19,153,154],{},"exportScopedMeta(source, optionsJson)"," + ",[19,157,158],{},"takeLastBytes()",[120,160,161],{},"Rasteryzacja i enkodowanie; bajty kopiowane raz przez pamięć liniową",[105,163,164,173],{},[120,165,166,169,170],{},[19,167,168],{},"renderSvg(...)",", ",[19,171,172],{},"exportBinary(...)",[120,174,175],{},"Legacy convenience entrypoints",[10,177,179],{"id":178},"dedicated-worker","Dedicated Worker",[15,181,182,185,186,189],{},[19,183,184],{},"WorkerBackend"," uruchamia ",[19,187,188],{},"exportWorker.ts"," poza głównym wątkiem UI:",[24,191,194],{"className":192,"code":193,"language":69,"meta":29},[67],"UI thread                    Worker thread\n    │  export(source, opts)      │\n    │ ─────────────────────────▶ │  WASM render + encode\n    │                            │\n    │  Transferable ArrayBuffer  │\n    │ ◀───────────────────────── │  zero-copy transfer\n    │                            │\n    │  abort()                   │\n    │ ─────────────────────────▶ │  terminate() natychmiast\n    │  nowy worker przy next op  │\n",[19,195,193],{"__ignoreMap":29},[80,197,198,213,222],{},[83,199,200,201,212],{},"Zakodowane bufory wracają przez ",[202,203,204,205,208,209],"strong",{},"zero-copy ",[19,206,207],{},"Transferable"," ",[19,210,211],{},"ArrayBuffer"," — bez kopiowania megabajtów PNG między wątkami.",[83,214,215,208,218,221],{},[19,216,217],{},"AbortSignal.abort()",[202,219,220],{},"terminuje workera natychmiast",", bez blokowania UI.",[83,223,224],{},"Następna operacja transparentnie inicjuje czystego workera.",[10,226,228],{"id":227},"przykład-adapter","Przykład: adapter",[24,230,234],{"className":231,"code":232,"language":233,"meta":29,"style":29},"language-ts shiki shiki-themes github-light github-dark","import { WorkerBackend } from '@\u002Fengine\u002FworkerBackend'\n\nconst backend = new WorkerBackend()\n\nconst validation = await backend.validateJson(source)\nif (!validation.valid) throw new Error(validation.errors[0].message)\n\nconst meta = await backend.exportScopedMeta(source, JSON.stringify({\n  format: 'png',\n  width: 2400,\n  height: 1600,\n  background: 'transparent'\n}))\n\nconst bytes = backend.takeLastBytes()\nconst blob = new Blob([bytes], { type: 'image\u002Fpng' })\n","ts",[19,235,236,252,258,280,285,307,339,344,376,388,399,410,419,425,430,447],{"__ignoreMap":29},[33,237,238,242,246,249],{"class":35,"line":36},[33,239,241],{"class":240},"szBVR","import",[33,243,245],{"class":244},"sVt8B"," { WorkerBackend } ",[33,247,248],{"class":240},"from",[33,250,251],{"class":43}," '@\u002Fengine\u002FworkerBackend'\n",[33,253,254],{"class":35,"line":50},[33,255,257],{"emptyLinePlaceholder":256},true,"\n",[33,259,261,264,268,271,274,277],{"class":35,"line":260},3,[33,262,263],{"class":240},"const",[33,265,267],{"class":266},"sj4cs"," backend",[33,269,270],{"class":240}," =",[33,272,273],{"class":240}," new",[33,275,276],{"class":39}," WorkerBackend",[33,278,279],{"class":244},"()\n",[33,281,283],{"class":35,"line":282},4,[33,284,257],{"emptyLinePlaceholder":256},[33,286,288,290,293,295,298,301,304],{"class":35,"line":287},5,[33,289,263],{"class":240},[33,291,292],{"class":266}," validation",[33,294,270],{"class":240},[33,296,297],{"class":240}," await",[33,299,300],{"class":244}," backend.",[33,302,303],{"class":39},"validateJson",[33,305,306],{"class":244},"(source)\n",[33,308,310,313,316,319,322,325,327,330,333,336],{"class":35,"line":309},6,[33,311,312],{"class":240},"if",[33,314,315],{"class":244}," (",[33,317,318],{"class":240},"!",[33,320,321],{"class":244},"validation.valid) ",[33,323,324],{"class":240},"throw",[33,326,273],{"class":240},[33,328,329],{"class":39}," Error",[33,331,332],{"class":244},"(validation.errors[",[33,334,335],{"class":266},"0",[33,337,338],{"class":244},"].message)\n",[33,340,342],{"class":35,"line":341},7,[33,343,257],{"emptyLinePlaceholder":256},[33,345,347,349,352,354,356,358,361,364,367,370,373],{"class":35,"line":346},8,[33,348,263],{"class":240},[33,350,351],{"class":266}," meta",[33,353,270],{"class":240},[33,355,297],{"class":240},[33,357,300],{"class":244},[33,359,360],{"class":39},"exportScopedMeta",[33,362,363],{"class":244},"(source, ",[33,365,366],{"class":266},"JSON",[33,368,369],{"class":244},".",[33,371,372],{"class":39},"stringify",[33,374,375],{"class":244},"({\n",[33,377,379,382,385],{"class":35,"line":378},9,[33,380,381],{"class":244},"  format: ",[33,383,384],{"class":43},"'png'",[33,386,387],{"class":244},",\n",[33,389,391,394,397],{"class":35,"line":390},10,[33,392,393],{"class":244},"  width: ",[33,395,396],{"class":266},"2400",[33,398,387],{"class":244},[33,400,402,405,408],{"class":35,"line":401},11,[33,403,404],{"class":244},"  height: ",[33,406,407],{"class":266},"1600",[33,409,387],{"class":244},[33,411,413,416],{"class":35,"line":412},12,[33,414,415],{"class":244},"  background: ",[33,417,418],{"class":43},"'transparent'\n",[33,420,422],{"class":35,"line":421},13,[33,423,424],{"class":244},"}))\n",[33,426,428],{"class":35,"line":427},14,[33,429,257],{"emptyLinePlaceholder":256},[33,431,433,435,438,440,442,445],{"class":35,"line":432},15,[33,434,263],{"class":240},[33,436,437],{"class":266}," bytes",[33,439,270],{"class":240},[33,441,300],{"class":244},[33,443,444],{"class":39},"takeLastBytes",[33,446,279],{"class":244},[33,448,450,452,455,457,459,462,465,468],{"class":35,"line":449},16,[33,451,263],{"class":240},[33,453,454],{"class":266}," blob",[33,456,270],{"class":240},[33,458,273],{"class":240},[33,460,461],{"class":39}," Blob",[33,463,464],{"class":244},"([bytes], { type: ",[33,466,467],{"class":43},"'image\u002Fpng'",[33,469,470],{"class":244}," })\n",[10,472,474],{"id":473},"anulowanie-w-locie","Anulowanie w locie",[24,476,478],{"className":231,"code":477,"language":233,"meta":29,"style":29},"const controller = new AbortController()\n\nconst promise = backend.exportScopedMeta(source, options, controller.signal)\n\nsetTimeout(() => controller.abort(), 5000)\n\ntry {\n  await promise\n} catch (e) {\n  if (e.name === 'AbortError') {\n    status.value = 'Eksport anulowany'\n  }\n}\n",[19,479,480,496,500,516,520,546,550,558,566,577,594,605,610],{"__ignoreMap":29},[33,481,482,484,487,489,491,494],{"class":35,"line":36},[33,483,263],{"class":240},[33,485,486],{"class":266}," controller",[33,488,270],{"class":240},[33,490,273],{"class":240},[33,492,493],{"class":39}," AbortController",[33,495,279],{"class":244},[33,497,498],{"class":35,"line":50},[33,499,257],{"emptyLinePlaceholder":256},[33,501,502,504,507,509,511,513],{"class":35,"line":260},[33,503,263],{"class":240},[33,505,506],{"class":266}," promise",[33,508,270],{"class":240},[33,510,300],{"class":244},[33,512,360],{"class":39},[33,514,515],{"class":244},"(source, options, controller.signal)\n",[33,517,518],{"class":35,"line":282},[33,519,257],{"emptyLinePlaceholder":256},[33,521,522,525,528,531,534,537,540,543],{"class":35,"line":287},[33,523,524],{"class":39},"setTimeout",[33,526,527],{"class":244},"(() ",[33,529,530],{"class":240},"=>",[33,532,533],{"class":244}," controller.",[33,535,536],{"class":39},"abort",[33,538,539],{"class":244},"(), ",[33,541,542],{"class":266},"5000",[33,544,545],{"class":244},")\n",[33,547,548],{"class":35,"line":309},[33,549,257],{"emptyLinePlaceholder":256},[33,551,552,555],{"class":35,"line":341},[33,553,554],{"class":240},"try",[33,556,557],{"class":244}," {\n",[33,559,560,563],{"class":35,"line":346},[33,561,562],{"class":240},"  await",[33,564,565],{"class":244}," promise\n",[33,567,568,571,574],{"class":35,"line":378},[33,569,570],{"class":244},"} ",[33,572,573],{"class":240},"catch",[33,575,576],{"class":244}," (e) {\n",[33,578,579,582,585,588,591],{"class":35,"line":390},[33,580,581],{"class":240},"  if",[33,583,584],{"class":244}," (e.name ",[33,586,587],{"class":240},"===",[33,589,590],{"class":43}," 'AbortError'",[33,592,593],{"class":244},") {\n",[33,595,596,599,602],{"class":35,"line":401},[33,597,598],{"class":244},"    status.value ",[33,600,601],{"class":240},"=",[33,603,604],{"class":43}," 'Eksport anulowany'\n",[33,606,607],{"class":35,"line":412},[33,608,609],{"class":244},"  }\n",[33,611,612],{"class":35,"line":421},[33,613,614],{"class":244},"}\n",[10,616,618],{"id":617},"fallback-przeglądarkowy","Fallback przeglądarkowy",[15,620,621,622,625],{},"Gdy artefaktów WASM nie ma (świeży checkout bez builda), development używa ",[19,623,624],{},"BrowserBackend"," — implementacji zgodnej API w TypeScripcie. UI działa, ale produkcyjnie zawsze weryfikuj rdzeń:",[24,627,629],{"className":26,"code":628,"language":28,"meta":29,"style":29},"npm run verify:wasm\n",[19,630,631],{"__ignoreMap":29},[33,632,633,635,637],{"class":35,"line":36},[33,634,40],{"class":39},[33,636,44],{"class":43},[33,638,57],{"class":43},[15,640,641],{},"Weryfikacja sprawdza fabrykę JavaScript i magic header WebAssembly przed buildem Vite.",[10,643,645],{"id":644},"dostarczanie-wasm","Dostarczanie WASM",[15,647,648],{},"Deployment serwuje:",[24,650,653],{"className":651,"code":652,"language":69,"meta":29},[67],"\u002Fwasm\u002Fvector_engine.js\n\u002Fwasm\u002Fvector_engine.wasm\n",[19,654,652],{"__ignoreMap":29},[15,656,657,658,661,662,369],{},"z ",[19,659,660],{},"Content-Type: application\u002Fwasm",", same-origin resource policy i revalidation caching dla stabilnych nazw plików. Szczegóły: ",[663,664,666],"a",{"href":665},"\u002Fvector-engine\u002Fdeployment","Wdrożenie na Vercel",[668,669,672],"callout",{"title":670,"type":671},"Jeden rdzeń, trzy wyjścia","tip",[15,673,674],{},"Ta sama implementacja C++23 zasila natywną bibliotekę, CLI i WASM. Nie ma osobnego „renderera przeglądarkowego” do utrzymania — fallback dev to jedyny wyjątek i jest jawnie oznaczony.",[676,677,678],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":29,"searchDepth":260,"depth":260,"links":680},[681,682,683,684,685,686,687],{"id":12,"depth":50,"text":13},{"id":96,"depth":50,"text":97},{"id":178,"depth":50,"text":179},{"id":227,"depth":50,"text":228},{"id":473,"depth":50,"text":474},{"id":617,"depth":50,"text":618},{"id":644,"depth":50,"text":645},"Build C++23 do WASM, publiczne API instancji, Dedicated Worker z zero-copy transferami i anulowaniem przez AbortSignal.","md",{},"\u002Fvector-engine\u002Finternals\u002Fwasm",{"title":5,"description":688},"03.vector-engine\u002F05.internals\u002F02.wasm","ndKUWDXB5UOUoR4h7Yo0R7RuxbHC5wPII3nThEhjpkY",[696,701],{"title":697,"path":698,"stem":699,"description":700,"children":-1},"Architektura","\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture","Pipeline przetwarzania, warstwy UI\u002Forchestracji\u002Fworkera\u002Frdzenia C++23 i kontrakt EngineBackend. Jak JSON staje się pikselami.",{"title":702,"path":703,"stem":704,"description":705,"children":-1},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace","Cztery kolumny (Source, Canvas, Inspector, Export), trójstanowe zwijanie expanded → rail → hidden, sekcje akordeonu i persystencja.",[707,826,887],{"title":708,"path":709,"stem":710,"children":711},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[712,714,718,722,725,751,780,793,814,818,822],{"title":713,"path":709,"stem":710},"Przegląd",{"title":715,"path":716,"stem":717},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":719,"path":720,"stem":721},"Konfiguracja","\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":697,"path":723,"stem":724},"\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":726,"path":727,"stem":728,"children":729,"page":750},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[730,734,738,742,746],{"title":731,"path":732,"stem":733},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":735,"path":736,"stem":737},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":739,"path":740,"stem":741},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":743,"path":744,"stem":745},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":747,"path":748,"stem":749},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":752,"path":753,"stem":754,"children":755,"page":750},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[756,760,764,768,772,776],{"title":757,"path":758,"stem":759},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":761,"path":762,"stem":763},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":765,"path":766,"stem":767},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":769,"path":770,"stem":771},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":773,"path":774,"stem":775},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio",{"title":777,"path":778,"stem":779},"Tweeny i easing","\u002Fgame-engine\u002Fsystems\u002Ftweens","01.game-engine\u002F06.systems\u002F06.tweens",{"title":781,"path":782,"stem":783,"children":784,"page":750},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[785,789],{"title":786,"path":787,"stem":788},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format",{"title":790,"path":791,"stem":792},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":794,"path":795,"stem":796,"children":797,"page":750},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[798,802,806,810],{"title":799,"path":800,"stem":801},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":803,"path":804,"stem":805},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm",{"title":807,"path":808,"stem":809},"Debugowanie","\u002Fgame-engine\u002Fadvanced\u002Fdebugging","01.game-engine\u002F08.advanced\u002F03.debugging",{"title":811,"path":812,"stem":813},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance",{"title":815,"path":816,"stem":817},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment",{"title":819,"path":820,"stem":821},"Przykłady","\u002Fgame-engine\u002Fexamples","01.game-engine\u002F10.examples",{"title":823,"path":824,"stem":825},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr",{"title":827,"path":828,"stem":829,"children":830},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[831,832,835,838,859],{"title":713,"path":828,"stem":829},{"title":715,"path":833,"stem":834},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":719,"path":836,"stem":837},"\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration",{"title":839,"path":840,"stem":841,"children":842,"page":750},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[843,847,851,855],{"title":844,"path":845,"stem":846},"Load balancing","\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing","02.reverse-proxy\u002F04.traffic\u002F01.load-balancing",{"title":848,"path":849,"stem":850},"Health checks","\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks","02.reverse-proxy\u002F04.traffic\u002F02.health-checks",{"title":852,"path":853,"stem":854},"Circuit breaker i retry","\u002Freverse-proxy\u002Ftraffic\u002Fresilience","02.reverse-proxy\u002F04.traffic\u002F03.resilience",{"title":856,"path":857,"stem":858},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting",{"title":860,"path":861,"stem":862,"children":863,"page":750},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[864,868,872,876,879,883],{"title":865,"path":866,"stem":867},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":869,"path":870,"stem":871},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":873,"path":874,"stem":875},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":815,"path":877,"stem":878},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":880,"path":881,"stem":882},"Benchmarki","\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":884,"path":885,"stem":886},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":888,"path":889,"stem":890,"children":891},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[892,893,896,917,930,942],{"title":713,"path":889,"stem":890},{"title":715,"path":894,"stem":895},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":897,"path":898,"stem":899,"children":900,"page":750},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[901,905,909,913],{"title":902,"path":903,"stem":904},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":906,"path":907,"stem":908},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":910,"path":911,"stem":912},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":914,"path":915,"stem":916},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":918,"path":919,"stem":920,"children":921,"page":750},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[922,926],{"title":923,"path":924,"stem":925},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":927,"path":928,"stem":929},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":931,"path":932,"stem":933,"children":934,"page":750},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[935,936,937,938],{"title":697,"path":698,"stem":699},{"title":5,"path":691,"stem":693},{"title":702,"path":703,"stem":704},{"title":939,"path":940,"stem":941},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":666,"path":665,"stem":943},"03.vector-engine\u002F06.deployment",1793986308936]