@volter/model-editor 0.5.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BUNDLED_NOTICES +6748 -0
- package/LICENSE +686 -0
- package/LICENSE-BLENDER +1409 -0
- package/LICENSE-MCP +21 -0
- package/NOTICE +20 -0
- package/dist/.vite/manifest.json +1954 -0
- package/dist/assets/AudioViewer-CRWsJVYN.js +1 -0
- package/dist/assets/BVHLoader-xUHWsz84.js +1 -0
- package/dist/assets/ColladaLoader-Ccy_gHsu.js +3 -0
- package/dist/assets/EntityModelDocument-Dal8YnLK.js +1 -0
- package/dist/assets/EnvironmentAssetDocument-DFOFYX5v.js +1 -0
- package/dist/assets/FBXLoader-Dh0pOBW2.js +1 -0
- package/dist/assets/GameplaySessionTimeline-HJLZUV4Q.js +142 -0
- package/dist/assets/ImageViewer-BzqBpqL-.js +1 -0
- package/dist/assets/InspectorCanvasPreview-CLDhscy0.js +1 -0
- package/dist/assets/InspectorObjectPreview-BUZEp4xS.js +1 -0
- package/dist/assets/JsonAssetDocument-DCkqRS0N.js +2 -0
- package/dist/assets/LineSegments2-C8H20K8w.js +370 -0
- package/dist/assets/LiveModuleDocument-CuOBVz3A.js +2 -0
- package/dist/assets/LutAssetDocument-IyEir1rq.js +1 -0
- package/dist/assets/MTLLoader-C-rA0fNF.js +2 -0
- package/dist/assets/ModelAssetDocument-DNStNyCc.js +1 -0
- package/dist/assets/NonThreeAuthoringBootstrap-BE15Wpmw.js +2 -0
- package/dist/assets/OBJLoader-CopWRneC.js +5 -0
- package/dist/assets/Object3DDocumentToolbar-5Dv_8caG.js +1 -0
- package/dist/assets/Object3DPreview-C09u9uQZ.js +2 -0
- package/dist/assets/OnlineAssetDetail-DOPUI1iu.js +1 -0
- package/dist/assets/OrbitControls-DrFzvAAB.js +1 -0
- package/dist/assets/PLYLoader-D_esTZ2f.js +2 -0
- package/dist/assets/QuarksAssetDocument-BbSJ970L.js +2 -0
- package/dist/assets/RectAreaLightUniformsLib-u1ciScuw.js +1 -0
- package/dist/assets/STLLoader-Cl5I0sAi.js +1 -0
- package/dist/assets/ShaderAssetDocument-qlLeb2S3.js +12 -0
- package/dist/assets/SourceAssetViewer-DwhuqbA4.js +1 -0
- package/dist/assets/StageHost-D-o8MsFS.js +1122 -0
- package/dist/assets/TDSLoader-KKBg8ef1.js +1 -0
- package/dist/assets/ToolObject3DPreview-ILbch3kN.js +1 -0
- package/dist/assets/Toolbar-DYJjJKTt.js +1 -0
- package/dist/assets/TransientHint-D94hsJSR.js +1 -0
- package/dist/assets/VideoViewer-Bx3FPbgE.js +1 -0
- package/dist/assets/ViewportShadingMenu-B3N6hSdN.js +1 -0
- package/dist/assets/_commonjsHelpers-D6-XlEtG.js +1 -0
- package/dist/assets/agx-base-srgb-BjWZJgrZ.lut +0 -0
- package/dist/assets/agx-look-medium-high-contrast-D5F_ob1L.lut +0 -0
- package/dist/assets/agx-look-punchy-dxsnycNs.lut +0 -0
- package/dist/assets/animation-mixers.service-N9HxGOMf.js +1 -0
- package/dist/assets/asset-editor-persistence-DGD05u26.js +1 -0
- package/dist/assets/blender-emscripten-engine-CEsWgnR7.js +2 -0
- package/dist/assets/blender-node-editor.document-BT2M622g.js +1 -0
- package/dist/assets/blender-properties-tab-C5tUuCSv.js +3 -0
- package/dist/assets/blender-runtime-host-4ufXy47O.js +4 -0
- package/dist/assets/blender-runtime-skin-DMq0XAvO.js +7138 -0
- package/dist/assets/blender-runtime.document-DeFQQsF6.js +8 -0
- package/dist/assets/blender-timeline.document-BnlSdxy0.js +1 -0
- package/dist/assets/blender-uv-editor.document-UC-XeNn0.js +1 -0
- package/dist/assets/blender-version.status-BZP39oH7.js +1 -0
- package/dist/assets/blender-wali-engine-D3iKpzn9.js +2 -0
- package/dist/assets/blender.command-IGP5wuda.js +1 -0
- package/dist/assets/blender.environment-CG-pC7sk.js +1 -0
- package/dist/assets/blender.keymap-GAQgeklK.js +1 -0
- package/dist/assets/blender.status-ujwGU6dU.js +1 -0
- package/dist/assets/blender.style-CxfbTFcE.js +1 -0
- package/dist/assets/browserAll-2r3AVaAO.js +14 -0
- package/dist/assets/canvas-preview-frames-CO60PDM7.js +5 -0
- package/dist/assets/city-EkhAOo5s.exr +0 -0
- package/dist/assets/client-DNXj_opT.js +25 -0
- package/dist/assets/clip-planes-CnAI6DZn.js +1 -0
- package/dist/assets/courtyard-DqlebbpC.exr +0 -0
- package/dist/assets/editor-presentation-activity-C7SNSmTd.js +1 -0
- package/dist/assets/filmic-srgb-Ct35FIH6.lut +0 -0
- package/dist/assets/forest-P_CQY3b_.exr +0 -0
- package/dist/assets/hosted-asset-materialization-BXM49Qkc.js +2 -0
- package/dist/assets/index-B4bmKkgY.css +1 -0
- package/dist/assets/index-BP6wv2A0.js +5 -0
- package/dist/assets/index-Bge9JUr6.js +1 -0
- package/dist/assets/index-BncK9THk.js +1 -0
- package/dist/assets/index-BtfYaG4D.js +952 -0
- package/dist/assets/index-CJbYy-CF.js +3 -0
- package/dist/assets/index-CanA16PU.js +2 -0
- package/dist/assets/index-CinJrH5C.js +9 -0
- package/dist/assets/index-CtzuWnCS.js +1 -0
- package/dist/assets/index-D2LwEE0L.js +562 -0
- package/dist/assets/index-DUqP1RMl.js +1 -0
- package/dist/assets/index-D_NuPfjr.js +9 -0
- package/dist/assets/index-DaQZGF7d.js +1 -0
- package/dist/assets/index-DgapqSPi.js +7 -0
- package/dist/assets/index-IEjydI9d.js +1 -0
- package/dist/assets/index-cpXNKgvz.js +1498 -0
- package/dist/assets/index-gHZae-lw.js +13 -0
- package/dist/assets/interior-Bo_lba15.exr +0 -0
- package/dist/assets/jsx-runtime-DPjLkJKQ.js +9 -0
- package/dist/assets/live-mixers-BRkRHd6g.js +1 -0
- package/dist/assets/material-preview.view-DqNcpd_b.js +1 -0
- package/dist/assets/model-inspection-JC6gbV8Q.js +1 -0
- package/dist/assets/model.layout-BpZE1W9V.js +1 -0
- package/dist/assets/models.finder-BplPGS4I.js +1 -0
- package/dist/assets/night-CvV4Gybt.exr +0 -0
- package/dist/assets/product-CfZaqLpw.js +1 -0
- package/dist/assets/properties-bone-constraints.inspector-Di8kNtAi.js +1 -0
- package/dist/assets/properties-bone.inspector-CqAIKNsE.js +1 -0
- package/dist/assets/properties-collection.inspector-DpHC_fXW.js +1 -0
- package/dist/assets/properties-constraints.inspector-C7G7NOZU.js +1 -0
- package/dist/assets/properties-data.inspector-D1sUUst6.js +1 -0
- package/dist/assets/properties-material.inspector-BUSjc8tl.js +1 -0
- package/dist/assets/properties-modifiers.inspector-Sq9bcfFz.js +1 -0
- package/dist/assets/properties-object.inspector-BzqiU_29.js +1 -0
- package/dist/assets/properties-output.inspector-BWpFqvfT.js +1 -0
- package/dist/assets/properties-particles.inspector-DO1KoaTz.js +1 -0
- package/dist/assets/properties-physics.inspector-BgkrTNSA.js +1 -0
- package/dist/assets/properties-render.inspector-BU5NOVoQ.js +1 -0
- package/dist/assets/properties-scene.inspector-DbMErJ48.js +1 -0
- package/dist/assets/properties-texture.inspector-toPpEwqp.js +1 -0
- package/dist/assets/properties-view-layer.inspector-COpx9iEK.js +1 -0
- package/dist/assets/properties-world.inspector-CxU0DrYX.js +1 -0
- package/dist/assets/react-18-DyywM-Z2.js +1 -0
- package/dist/assets/react-story-board-B9V-j_Y5.js +1 -0
- package/dist/assets/react-three-rapier.esm-CN6t4A7c.js +1 -0
- package/dist/assets/regions-DWeEBnE2.js +1 -0
- package/dist/assets/sculpt.layout-D-K5cLw6.js +1 -0
- package/dist/assets/session-CsR0lApe.js +4886 -0
- package/dist/assets/shading.layout-CZZHKBer.js +1 -0
- package/dist/assets/sky-precompute-worker-ChN7J87v.js +1 -0
- package/dist/assets/spark.module-gG1EsWx8.js +12120 -0
- package/dist/assets/stage-keyboard-CzlqI0nh.js +1 -0
- package/dist/assets/stage-overlay-set-DQeskS16.js +1 -0
- package/dist/assets/stage-presence-markers-S1lMOwIa.js +1 -0
- package/dist/assets/stage-transform-tools-Cqtv-ZQ1.js +1 -0
- package/dist/assets/story-capture-DmIUyEQn.js +1 -0
- package/dist/assets/story-mount-turn-2IYGgHob.js +1 -0
- package/dist/assets/story-pixi-preview-aw8xQhvF.js +1 -0
- package/dist/assets/story-three-preview-DDmMjlI8.js +37 -0
- package/dist/assets/studio-CysTBGIb.exr +0 -0
- package/dist/assets/sunrise-Dj0psFrf.exr +0 -0
- package/dist/assets/sunset-Bw3x2Bot.exr +0 -0
- package/dist/assets/texture.layout-DASpHVht.js +1 -0
- package/dist/assets/three.module-ZILb6uB7.js +3840 -0
- package/dist/assets/transform-mode-request-DSPwviXs.js +1 -0
- package/dist/assets/uv-editing.layout-A8RA-cbM.js +1 -0
- package/dist/assets/vgai-shared-fontawesome-CFSkqz69.js +1 -0
- package/dist/assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js +1 -0
- package/dist/assets/vgai-shared-jsx-runtime-DIqBpTut.js +1 -0
- package/dist/assets/vgai-shared-react-CdM3D1mG.js +1 -0
- package/dist/assets/vgai-shared-react-dom-DFajMqMT.js +1 -0
- package/dist/assets/vgai-shared-react-dom-client-S0ozfl6_.js +1 -0
- package/dist/assets/vgai-shared-three-DzfWDqlp.js +1 -0
- package/dist/assets/viewport-pick-context-DkawXbEi.js +1 -0
- package/dist/assets/viewport-surface-status-DuININWe.js +20 -0
- package/dist/assets/webworkerAll-CqQUotBj.js +101 -0
- package/dist/assets/worker-B7zhIsFh.js +2 -0
- package/dist/assets/world-documents-DkBqH8VU.js +3 -0
- package/dist/vgai-shared-react.json +10 -0
- package/dist/vgai-shared-three.json +3 -0
- package/dist-node/cli.js +19722 -0
- package/dist-node/create.js +14102 -0
- package/package.json +61 -0
- package/presets.mjs +2 -0
- package/src/contributions.d.ts +4 -0
- package/src/index.ts +10 -0
- package/starter/cube.blend +0 -0
- package/starter/cube.py +81 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import{a as i}from"./jsx-runtime-DPjLkJKQ.js";import{bN as se,ap as U,bO as ie,P as ae,bP as z,L as G,M as oe,bQ as le,t as h,A as T,al as ce,ba as P,Q as _,C as ue}from"./index-cpXNKgvz.js";import{r as p}from"./index-DaQZGF7d.js";import"./index-CtzuWnCS.js";import"./index-D2LwEE0L.js";import{W as de,e as X,f as fe,g as me,r as pe,a8 as he,k as ge,ap as ve,d as ye,h as W,a as K,V as Z,o as q,b3 as xe,i as be,m as Se,ao as we,a4 as je,Z as Ee,u as $e}from"./three.module-ZILb6uB7.js";import{s as O}from"./asset-editor-persistence-DGD05u26.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";function Ce({value:e,onChange:t,disabled:r=!1}){const[n,s]=p.useState(e??""),a=se();p.useEffect(()=>{s(e??"")},[e]);const c=()=>{const o=n.trim();o&&o!==e&&t(o)};return e===null?i.jsxs("div",{className:"vgai-color-input",children:[i.jsx("div",{className:"vgai-color-input-mixed"}),i.jsx(U,{placeholder:"—",disabled:r,onChange:o=>{o.target.value&&t(o.target.value)},"data-mixed":"true"})]}):i.jsxs("div",{className:"vgai-color-input",children:[i.jsx(ie,{value:e,disabled:r,onChange:o=>{a?.begin(),t(o.target.value)},onBlur:()=>a?.end()}),i.jsx(U,{value:n,disabled:r,onChange:o=>s(o.target.value),onBlur:c,onKeyDown:o=>{o.key==="Enter"?(c(),o.target.blur()):o.key==="Escape"&&(s(e),o.target.blur())}})]})}const Re=[".vert",".vert.glsl"],Ae=[".frag",".frag.glsl"];function Le(e){return e.split(/[?#]/,1)[0].toLowerCase()}function Fe(e,t=""){const r=Le(e);return Re.some(n=>r.endsWith(n))?"vertex":Ae.some(n=>r.endsWith(n))?"fragment":/\bgl_Position\b/.test(t)?"vertex":"fragment"}function Q(e){const t=e.split(/[?#]/,1)[0];return/\.vert\.glsl$/i.test(t)?t.replace(/\.vert\.glsl$/i,".frag.glsl"):/\.frag\.glsl$/i.test(t)?t.replace(/\.frag\.glsl$/i,".vert.glsl"):/\.vert$/i.test(t)?t.replace(/\.vert$/i,".frag"):/\.frag$/i.test(t)?t.replace(/\.frag$/i,".vert"):null}function Te(e){return e.replace(/\/\*[\s\S]*?\*\//g,t=>t.replace(/[^\n]/g," ")).replace(/\/\/[^\n]*/g,"")}function V(e,t){const r=[],n=/\buniform\s+(?:(?:lowp|mediump|highp)\s+)?([A-Za-z_]\w*)\s+([A-Za-z_]\w*)\s*(?:\[\s*(\d+)\s*\])?\s*;/g;for(const s of Te(e).matchAll(n)){const a=s[1],c=s[2];if(!a||!c)continue;const o=s[3]?Number.parseInt(s[3],10):void 0;r.push({name:c,type:a,...o?{arraySize:o}:{},stages:[t]})}return r}function Ie(e,t){const r=new Map;for(const n of[...V(e,"vertex"),...V(t,"fragment")]){const s=r.get(n.name);if(!s){r.set(n.name,n);continue}r.set(n.name,{...s,stages:[...new Set([...s.stages,...n.stages])]})}return[...r.values()]}function I(e,t){const r=e.split(`
|
|
2
|
+
`).map(n=>Me(n.trim(),t)).filter(n=>n!==null);return r.length===0&&e.trim()&&r.push({stage:t,severity:"error",message:e.trim()}),r}function Me(e,t){if(!e)return null;const r=e.match(/^(ERROR|WARNING):\s*\d+:(\d+)(?::|\((\d+)\):)\s*(.*)$/i);if(r)return{stage:t,severity:r[1].toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(r[2],10),...r[3]?{column:Number.parseInt(r[3],10)}:{},message:r[4]||e};const n=e.match(/^\d+:(\d+)\((\d+)\):\s*(?:(error|warning)\s*:?)?\s*(.*)$/i);return n?{stage:t,severity:n[3]?.toLowerCase()==="warning"?"warning":"error",line:Number.parseInt(n[1],10),column:Number.parseInt(n[2],10),message:n[4]||e}:null}function B(e){return`#line 1
|
|
3
|
+
${e}`}const Ne=`varying vec2 vUv;
|
|
4
|
+
|
|
5
|
+
void main() {
|
|
6
|
+
vUv = uv;
|
|
7
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
8
|
+
}`,ke=`varying vec2 vUv;
|
|
9
|
+
|
|
10
|
+
void main() {
|
|
11
|
+
gl_FragColor = vec4(vUv, 0.55, 1.0);
|
|
12
|
+
}`;function M(e,t=null){return{path:t,source:e==="vertex"?Ne:ke,available:!1}}function $(e){return e?.split("/").pop()??"Preview fallback"}function N(e){return e.type==="vec3"&&/(colou?r|tint|albedo|emissive)/i.test(e.name)}function J(e){return/^(u|i)?time$/i.test(e.name)&&/^(float|double)$/.test(e.type)?"time":/^(u|i)?resolution$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"resolution":/^(u|i)?mouse$/i.test(e.name)&&/^([diu]?vec)[234]$/.test(e.type)?"mouse":null}function F(e){if(N(e))return/horizon/i.test(e.name)?"#badbe9":/zenith/i.test(e.name)?"#297aba":/sun/i.test(e.name)?"#fff0c2":"#6f8cff";if(e.type==="bool")return!1;if(/^(float|double|int|uint)$/.test(e.type))return 0;const t=e.type.match(/^(?:[biu]?vec)([234])$/);return t?Array.from({length:Number.parseInt(t[1],10)},()=>0):0}function De(){const e=new Uint8Array([38,43,58,255,176,190,255,255,176,190,255,255,38,43,58,255]),t=new je(e,2,2,Ee);return t.colorSpace=X,t.magFilter=$e,t.needsUpdate=!0,t}function Y(e,t,r){if(e.arraySize){const{arraySize:s,...a}=e;return Array.from({length:s},()=>Y(a,t,r))}if(/^sampler2D/.test(e.type)){const s=De();return r.push(s),s}if(/^sampler/.test(e.type))return null;if(e.type==="mat3")return new ve;if(e.type==="mat4")return new ye;if(N(e))return new W(typeof t=="string"?t:"#6f8cff");const n=e.type.match(/^(?:[biu]?vec)([234])$/);if(n){const s=Array.isArray(t)?t:[],a=Number.parseInt(n[1],10);return a===2?new K(s[0]??0,s[1]??0):a===3?new Z(s[0]??0,s[1]??0,s[2]??0):new q(s[0]??0,s[1]??0,s[2]??0,s[3]??0)}return t}function Ue(e,t,r,n,s){const a=J(t);if(a==="time"){e.value=n;return}if(e.value instanceof W&&typeof r=="string"){e.value.set(r);return}const c=Array.isArray(r)?r:[];if(e.value instanceof K){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0);return}if(e.value instanceof Z){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0,a==="resolution"?1:c[2]??0);return}if(e.value instanceof q){e.value.set(a==="resolution"?s.width:c[0]??0,a==="resolution"?s.height:c[1]??0,a==="resolution"?1:c[2]??0,c[3]??0);return}a!=="mouse"&&!t.arraySize&&!/^sampler|^mat/.test(t.type)&&(e.value=r)}function ze(e){return e==="box"?new xe(1.35,1.35,1.35,48,48,48):e==="plane"?new be(2.2,2.2,96,96):new Se(.95,96,64)}function Ge({vertexSource:e,fragmentSource:t,descriptors:r,valuesRef:n,geometry:s,onDiagnostics:a}){const c=p.useRef(null);return p.useEffect(()=>{const o=c.current;if(!o)return;let w=!1,d=0;const x=document.createElement("canvas");x.setAttribute("aria-label","Live shader preview"),x.style.width="100%",x.style.height="100%",x.style.display="block",o.replaceChildren(x);let f;try{f=new de({canvas:x,antialias:!0,alpha:!1})}catch(l){a([{stage:"program",severity:"error",message:l instanceof Error?l.message:String(l)}]);return}f.outputColorSpace=X,f.setClearColor(1119261,1),f.debug.checkShaderErrors=!0;const S=new fe,v=new me(38,1,.01,100);v.position.set(0,0,3.4);const C=[],g={};for(const l of r)g[l.name]={value:Y(l,n.current[l.name]??F(l),C)};const R=new pe({vertexShader:B(e),fragmentShader:B(t),uniforms:g,side:he,toneMapped:!1}),L=ze(s),u=new ge(L,R);S.add(u);const m=[];f.debug.onShaderError=(l,b,E,A)=>{const te=b,re=E,ne=A;m.push(...I(l.getProgramInfoLog(te)??"","program"),...I(l.getShaderInfoLog(re)??"","vertex"),...I(l.getShaderInfoLog(ne)??"","fragment"))};const y={width:1,height:1},j=()=>{const l=o.getBoundingClientRect();y.width=Math.max(1,Math.floor(l.width)),y.height=Math.max(1,Math.floor(l.height)),f.setPixelRatio(Math.min(window.devicePixelRatio||1,2)),f.setSize(y.width,y.height,!1),v.aspect=y.width/y.height,v.position.z=3.4/Math.min(1,v.aspect),v.updateProjectionMatrix()};j();const k=new ResizeObserver(j);k.observe(o);const ee=new we;try{f.compile(S,v),f.render(S,v),a(m.filter((l,b,E)=>E.findIndex(A=>A.stage===l.stage&&A.line===l.line&&A.message===l.message)===b))}catch(l){a([{stage:"program",severity:"error",message:l instanceof Error?l.message:String(l)}])}const D=()=>{if(w)return;const l=ee.getElapsedTime();for(const b of r){const E=g[b.name];E&&Ue(E,b,n.current[b.name]??F(b),l,y)}s!=="plane"&&(u.rotation.y=l*.18,u.rotation.x=Math.sin(l*.22)*.08),f.render(S,v),d=requestAnimationFrame(D)};return d=requestAnimationFrame(D),()=>{w=!0,cancelAnimationFrame(d),k.disconnect(),f.debug.onShaderError=null,L.dispose(),R.dispose();for(const l of C)l.dispose();f.dispose(),x.remove()}},[r,t,s,a,n,e]),i.jsx("div",{ref:c,"data-testid":"shader-preview",style:{width:"100%",height:"100%",minHeight:240,background:"#11141d"}})}function Pe({descriptors:e,values:t,onChange:r}){return e.length===0?i.jsx("div",{style:{color:h.content.muted},children:"No uniform declarations found."}):i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12,padding:4},children:[e.map(n=>i.jsx(_e,{uniform:n,value:t[n.name]??F(n),onChange:s=>r(n.name,s)},n.name)),i.jsx("div",{style:{color:h.content.muted,fontSize:10,lineHeight:1.4},children:"Preview values are session-only. Author runtime defaults beside the ShaderMaterial in TS/TSX."})]})}function _e({uniform:e,value:t,onChange:r}){const n=J(e),s=e.type.match(/^(?:[biu]?vec)([234])$/);let a;return n?a=i.jsxs("div",{style:{color:h.content.muted,fontSize:10},children:["Driven by preview ",n]}):N(e)?a=i.jsx(Ce,{value:typeof t=="string"?t:"#6f8cff",onChange:r}):e.type==="bool"?a=i.jsxs("label",{style:{display:"flex",alignItems:"center",gap:7,fontSize:11},children:[i.jsx(ue,{checked:!!t,onChange:c=>r(c.target.checked)}),t?"True":"False"]}):/^(float|double|int|uint)$/.test(e.type)?a=i.jsx(_,{value:typeof t=="number"?t:0,onChange:r,step:e.type==="int"||e.type==="uint"?1:.01,precision:e.type==="int"||e.type==="uint"?0:3}):s&&Array.isArray(t)?a=i.jsx("div",{style:{display:"grid",gridTemplateColumns:`repeat(${s[1]}, minmax(0, 1fr))`,gap:4},children:t.map((c,o)=>i.jsx(_,{value:c,label:"xyzw"[o],onChange:w=>{const d=[...t];d[o]=w,r(d)},step:.01},`${e.name}:${o}`))}):a=i.jsx("div",{style:{color:h.content.muted,fontSize:10},children:"Reflected for runtime binding; no scalar preview control."}),i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5},children:[i.jsxs("div",{style:{display:"flex",justifyContent:"space-between",gap:8},children:[i.jsx("span",{style:{color:h.content.primary,fontSize:11},children:e.name}),i.jsx("span",{style:{color:h.content.muted,fontSize:10},children:e.type})]}),a]})}function H({diagnostics:e,files:t}){return e.length===0?i.jsx("div",{style:{color:h.semantic.success,fontSize:11,padding:4},children:"Shader program compiled successfully."}):i.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6,padding:4},children:e.map((r,n)=>{const s=r.stage==="program"?null:t[r.stage];return i.jsxs("div",{style:{color:r.severity==="warning"?h.semantic.warning:h.semantic.danger,fontSize:10,lineHeight:1.45},children:[s?.available?$(s.path):r.stage,r.line?`:${r.line}${r.column?`:${r.column}`:""}`:""," · ",r.message]},`${r.stage}:${r.line??0}:${r.message}:${n}`)})})}async function Oe(e){const t=await P(e);if(t===null)throw new Error(`Could not read ${e}.`);const r=Fe(e,t),n=Q(e),s=n?await P(n):null,a={vertex:M("vertex"),fragment:M("fragment")};a[r]={path:e,source:t,available:!0};const c=r==="vertex"?"fragment":"vertex";return a[c]=s===null?M(c,n):{path:n,source:s,available:!0},a}function et({documentId:e,assetPath:t,active:r=!0}){const[n,s]=p.useState(null),[a,c]=p.useState(0),[o,w]=p.useState("sphere"),[d,x]=p.useState([]),[f,S]=p.useState({}),[v,C]=p.useState(null);p.useEffect(()=>{if(!r)return;const u=()=>c(j=>j+1),m=Q(t),y=[O(t,u),...m?[O(m,u)]:[]];return()=>{for(const j of y)j()}},[r,t]),p.useEffect(()=>{if(!r)return;let u=!1;return s(null),C(null),Oe(t).then(m=>{u||s(m)},m=>{u||C(m instanceof Error?m.message:String(m))}),()=>{u=!0}},[r,t,a]);const g=p.useMemo(()=>n?Ie(n.vertex.source,n.fragment.source):[],[n]);p.useEffect(()=>{S(u=>Object.fromEntries(g.map(m=>[m.name,u[m.name]??F(m)])))},[g]);const R=p.useRef(f);R.current=f;const L=p.useMemo(()=>[{id:"shader-pair",title:"Shader Pair",icon:z,order:ae,body:{kind:"custom",render:()=>i.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:5,padding:4,fontSize:10},children:[i.jsxs("span",{children:["Vertex · ",n?$(n.vertex.path):"Loading…",n&&!n.vertex.available?" (preview fallback)":""]}),i.jsxs("span",{children:["Fragment · ",n?$(n.fragment.path):"Loading…",n&&!n.fragment.available?" (preview fallback)":""]}),i.jsx("span",{style:{color:h.content.muted},children:"Ordinary sibling GLSL files; runtime composition stays in TS/TSX."})]})}},{id:"shader-uniforms",title:"Uniforms",icon:oe,order:G,description:`${g.length} reflected`,body:{kind:"custom",data:Object.fromEntries(g.map(u=>[u.name,f[u.name]])),render:()=>i.jsx(Pe,{descriptors:g,values:f,onChange:(u,m)=>S(y=>({...y,[u]:m}))})}},{id:"shader-diagnostics",title:"Diagnostics",icon:d.length>0?le:z,order:G+100,description:d.length===0?"Compiled":`${d.length} issue${d.length===1?"":"s"}`,body:{kind:"custom",data:{diagnostics:d},render:()=>n&&i.jsx(H,{diagnostics:d,files:n})}}],[g,d,n,f]);return v?i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),status:"Shader unavailable",children:i.jsx("div",{role:"alert",style:{padding:20,color:h.semantic.danger},children:v})}):n?i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),sections:L,status:d.length===0?`GLSL · compiles · ${g.length} uniforms`:`GLSL · ${d.length} compile issues`,fill:!0,children:i.jsxs("div",{style:{width:"100%",height:"100%",minHeight:0,position:"relative",background:h.surface.panel},children:[i.jsx(Ge,{vertexSource:n.vertex.source,fragmentSource:n.fragment.source,descriptors:g,valuesRef:R,geometry:o,onDiagnostics:x}),i.jsx("div",{style:{position:"absolute",left:10,top:10},children:i.jsxs(ce,{"aria-label":"Preview geometry",value:o,onChange:u=>w(u.target.value),children:[i.jsx("option",{value:"sphere",children:"Sphere"}),i.jsx("option",{value:"box",children:"Box"}),i.jsx("option",{value:"plane",children:"Plane"})]})}),d.length>0&&i.jsx("div",{style:{position:"absolute",left:12,right:12,bottom:12,maxHeight:120,overflow:"auto",padding:8,border:`1px solid ${h.semantic.danger}`,borderRadius:6,background:h.surface.overlay},children:i.jsx(H,{diagnostics:d,files:n})})]})}):i.jsx(T,{documentId:e,active:r,type:"shader",title:$(t),status:"Loading GLSL",children:i.jsx("div",{style:{padding:20,color:h.content.muted},children:"Loading shader files…"})})}export{et as ShaderAssetDocument};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as r}from"./jsx-runtime-DPjLkJKQ.js";import{A as m,t as n,n as x,q as $,u as C,v as V}from"./index-cpXNKgvz.js";import{r as f}from"./index-DaQZGF7d.js";import"./index-CtzuWnCS.js";import"./index-D2LwEE0L.js";import{J as A,C as E,c as N}from"./JsonAssetDocument-DCkqRS0N.js";import{AudioViewer as H}from"./AudioViewer-CRWsJVYN.js";import{ImageViewer as R}from"./ImageViewer-BzqBpqL-.js";import"./_commonjsHelpers-D6-XlEtG.js";import"./client-DNXj_opT.js";import"./index-D_NuPfjr.js";import"./index-CinJrH5C.js";import"./three.module-ZILb6uB7.js";function k(t){const e=(t.split(/[?#]/,1)[0]??"").replace(/^\//,"");return e.startsWith("src/")&&/\.(?:[cm]?[jt]sx?)$/.test(e)}function j(t){const e=$(t);return e.editor==="model"?"model":e.editor==="image"?"image":e.editor==="audio"?"audio":e.editor==="data"?"json":e.editor==="environment"?"environment":e.format==="cube"?"lut":e.format==="glsl"||e.format==="vert"||e.format==="frag"?"shader":k(t)?"module":e.editor==="source"&&e.previewable?"text":"binary"}function y({documentId:t,assetPath:e,active:i=!0}){const[o,l]=f.useState(null),[c,u]=f.useState(null),b=e.split("/").pop()??e;return f.useEffect(()=>{let a=!1;l(null),u(null);const w=e.replace(/^\//,"");let d=0;async function h(){const g=++d;try{const s=`/__editor/source-file?path=${encodeURIComponent(w)}`,S=await fetch(s,{cache:"no-store"}).then(p=>{if(!p.ok)throw new Error(`HTTP ${p.status}`);return p.text()});!a&&g===d&&(l(S),u(null))}catch(s){!a&&g===d&&u(s instanceof Error?s.message:String(s))}}const v=C();return h(),()=>{a=!0,v()}},[e]),r.jsx(m,{documentId:t,active:i,type:"source",title:b,sections:[],status:`source · ${e}`,fill:!0,children:r.jsx("div",{style:{padding:12,height:"100%",minHeight:0,display:"flex",flexDirection:"column",gap:8},children:r.jsx("div",{style:{padding:8,flex:1,minHeight:0,display:"flex",overflow:"hidden",background:n.surface.inset,border:`1px solid ${n.boundary.default}`,borderRadius:n.shape.small},children:c!==null||o===null?r.jsx("div",{style:{fontFamily:n.typography.mono,fontSize:11,lineHeight:1.5,color:c?n.semantic.danger:n.content.muted,padding:4},children:c??"Loading…"}):r.jsx(E,{value:o,followChanges:!0,language:N(e),fontSize:11,maxHeight:"100%",ariaLabel:`Source of ${e}`})})})})}function z({documentId:t,assetPath:e,active:i}){const o=e.split("/").pop()??e;return r.jsx(m,{documentId:t,active:i,type:"source",title:o,sections:[],status:`no viewer · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:["No editor package in this project renders ",o,"; the file is available in the project and stays selectable and referenceable."]})})}function O({documentId:t,assetPath:e,active:i=!0}){switch(j(e)){case"model":case"environment":case"lut":case"shader":{const o=j(e);return r.jsx(x,{route:o,documentId:t,assetPath:e,displayName:e.split("/").pop()??e,active:i,whenUnregistered:r.jsx(z,{documentId:t,assetPath:e,active:i})})}case"image":return r.jsx(R,{assetPath:e});case"audio":return r.jsx(H,{assetPath:e});case"json":return r.jsx(A,{documentId:t,assetPath:e,displayName:e.split("/").pop()??e,active:i,sections:[],status:`json · ${e}`});case"module":{const o=V()?.rootPath,l=r.jsx(y,{documentId:t,assetPath:e,active:i});return o?r.jsx(x,{route:"module",documentId:t,assetPath:e,projectRoot:o,displayName:e.split("/").pop()??e,active:i,fallback:l,whenUnregistered:l}):l}case"text":return r.jsx(y,{documentId:t,assetPath:e,active:i});case"binary":return r.jsx(m,{documentId:t,active:i,type:"binary source",title:e.split("/").pop()??e,sections:[],status:`binary · ${e}`,children:r.jsxs("div",{style:{padding:16,color:n.content.muted,fontSize:12},children:[r.jsx("div",{style:{color:n.content.primary,fontWeight:600,marginBottom:6},children:e.split("/").pop()}),"This binary source is available in the project, but it has no safe in-editor renderer. Its file remains selectable and referenceable without being misidentified as another format."]})})}}export{O as SourceAssetViewer,j as sourceAssetRoute};
|