framefields 2.0.3 → 2.0.5
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/README.md +4 -26
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +10 -10
- package/dist/{audio-DbxiKp5p.mjs → audio-COkiXyDb.mjs} +3 -3
- package/dist/{audio-DbxiKp5p.mjs.map → audio-COkiXyDb.mjs.map} +1 -1
- package/dist/{audio-Dvwwz8xU.d.mts → audio-nmU-BWxI.d.mts} +3 -3
- package/dist/{audio-Dvwwz8xU.d.mts.map → audio-nmU-BWxI.d.mts.map} +1 -1
- package/dist/{dist-CGIme1vZ.mjs → dist-55MP0aN4.mjs} +59 -16
- package/dist/dist-55MP0aN4.mjs.map +1 -0
- package/dist/{dist-DuIv211_.mjs → dist-DgIKXWZ1.mjs} +60 -15
- package/dist/dist-DgIKXWZ1.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +22 -22
- package/dist/{effects-B_APkGJJ.mjs → effects-m3FuatqZ.mjs} +2 -2
- package/dist/{effects-B_APkGJJ.mjs.map → effects-m3FuatqZ.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +1 -1
- package/dist/{fonts-CwwIhe1o.mjs → fonts-C_AWIMdb.mjs} +13 -2
- package/dist/fonts-C_AWIMdb.mjs.map +1 -0
- package/dist/{index-CnAk1hTw.d.mts → index-Bx7JBFT6.d.mts} +2 -2
- package/dist/index-Bx7JBFT6.d.mts.map +1 -0
- package/dist/{index-D7llSs-m.d.mts → index-C8rstr3Y.d.mts} +4 -4
- package/dist/{index-D7llSs-m.d.mts.map → index-C8rstr3Y.d.mts.map} +1 -1
- package/dist/{index-D2wJqSl5.d.mts → index-CAGDH7l6.d.mts} +3 -3
- package/dist/{index-D2wJqSl5.d.mts.map → index-CAGDH7l6.d.mts.map} +1 -1
- package/dist/{index-DiSKzDGR.d.mts → index-CbzEM_o6.d.mts} +8 -1
- package/dist/index-CbzEM_o6.d.mts.map +1 -0
- package/dist/{index-BMVVmc4G.d.mts → index-DY3mLoPO.d.mts} +2 -2
- package/dist/{index-BMVVmc4G.d.mts.map → index-DY3mLoPO.d.mts.map} +1 -1
- package/dist/{index-D1ZsMpke.d.mts → index-i0xPY4Fe.d.mts} +3 -3
- package/dist/{index-D1ZsMpke.d.mts.map → index-i0xPY4Fe.d.mts.map} +1 -1
- package/dist/{index-D2jDC7O5.d.mts → index-ogL8Y-Ng.d.mts} +9 -1
- package/dist/{index-D2jDC7O5.d.mts.map → index-ogL8Y-Ng.d.mts.map} +1 -1
- package/dist/index.d.mts +22 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +43 -38
- package/dist/index.mjs.map +1 -1
- package/dist/preview/index.d.mts +3 -3
- package/dist/preview/index.mjs +10 -10
- package/dist/{preview-D7TqF9i_.mjs → preview-BM0Zzcn1.mjs} +74 -66
- package/dist/preview-BM0Zzcn1.mjs.map +1 -0
- package/dist/preview-engine/{chunk-HAXK42HG.mjs → chunk-2RMSCL6V.mjs} +1 -1
- package/dist/preview-engine/chunk-45JOFIHE.mjs +8 -0
- package/dist/preview-engine/chunk-7S6ZFYLI.mjs +418 -0
- package/dist/preview-engine/chunk-KNZU3Z2F.mjs +3 -0
- package/dist/preview-engine/{chunk-GYG2IIBR.mjs → chunk-RJJRPL42.mjs} +1 -1
- package/dist/preview-engine/{chunk-4BEJJKEU.mjs → chunk-YK4XHUP4.mjs} +7 -7
- package/dist/preview-engine/fonts.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +84 -76
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/{renderers-R3XEYD5V.mjs → renderers-LFA5NW4V.mjs} +1 -1
- package/dist/{program-Cjva0Nw2.mjs → program-DGqyGGvj.mjs} +2 -2
- package/dist/{program-Cjva0Nw2.mjs.map → program-DGqyGGvj.mjs.map} +1 -1
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +2 -2
- package/dist/renderer--fkO4O8d.mjs +3 -0
- package/dist/{renderer-DVSagfD4.mjs → renderer-0gJC-sc8.mjs} +2 -2
- package/dist/{renderer-DVSagfD4.mjs.map → renderer-0gJC-sc8.mjs.map} +1 -1
- package/dist/{renderer-B8ugHLDi.mjs → renderer-2r4EgfdZ.mjs} +2 -2
- package/dist/{renderer-B8ugHLDi.mjs.map → renderer-2r4EgfdZ.mjs.map} +1 -1
- package/dist/{renderer-D9lcIxrz.mjs → renderer-5OiVjQan.mjs} +4 -4
- package/dist/{renderer-D9lcIxrz.mjs.map → renderer-5OiVjQan.mjs.map} +1 -1
- package/dist/renderer-6x7CgHhJ.mjs +3 -0
- package/dist/renderer-B0RDWv1C.mjs +3 -0
- package/dist/{renderer-CeF66MG3.mjs → renderer-B9l641o-.mjs} +2 -2
- package/dist/{renderer-CeF66MG3.mjs.map → renderer-B9l641o-.mjs.map} +1 -1
- package/dist/renderer-BFOkGS0N.mjs +3 -0
- package/dist/{renderer-DjYRCzzV.mjs → renderer-BJiL-BQY.mjs} +2 -2
- package/dist/{renderer-DjYRCzzV.mjs.map → renderer-BJiL-BQY.mjs.map} +1 -1
- package/dist/{renderer-B5Tq5MWB.mjs → renderer-BMrm2Zbz.mjs} +2 -2
- package/dist/{renderer-B5Tq5MWB.mjs.map → renderer-BMrm2Zbz.mjs.map} +1 -1
- package/dist/{renderer-Dm0r9IBd.mjs → renderer-BUHMkkLU.mjs} +2 -2
- package/dist/{renderer-Dm0r9IBd.mjs.map → renderer-BUHMkkLU.mjs.map} +1 -1
- package/dist/{renderer-B0DTz9Fr.mjs → renderer-BYsmLk63.mjs} +2 -2
- package/dist/{renderer-B0DTz9Fr.mjs.map → renderer-BYsmLk63.mjs.map} +1 -1
- package/dist/renderer-BaoJiMJO.mjs +3 -0
- package/dist/{renderer-NYcVjCOi.mjs → renderer-BtkU0BT-.mjs} +2 -2
- package/dist/{renderer-NYcVjCOi.mjs.map → renderer-BtkU0BT-.mjs.map} +1 -1
- package/dist/{renderer-CuppzplW.mjs → renderer-Bwsh5TUv.mjs} +2 -2
- package/dist/{renderer-CuppzplW.mjs.map → renderer-Bwsh5TUv.mjs.map} +1 -1
- package/dist/{renderer-B6YiOv7l.mjs → renderer-C28Bab-M.mjs} +2 -2
- package/dist/{renderer-B6YiOv7l.mjs.map → renderer-C28Bab-M.mjs.map} +1 -1
- package/dist/{renderer-BusX07ZE.mjs → renderer-C3L9SNRO.mjs} +2 -2
- package/dist/{renderer-BusX07ZE.mjs.map → renderer-C3L9SNRO.mjs.map} +1 -1
- package/dist/renderer-C4O-L73n.mjs +3 -0
- package/dist/{renderer-CxE-8m71.mjs → renderer-C9BKcHZb.mjs} +1 -1
- package/dist/renderer-CGVuhBbA.mjs +3 -0
- package/dist/renderer-CHKB-Or4.mjs +3 -0
- package/dist/renderer-CL9gPcfZ.mjs +3 -0
- package/dist/{renderer-CXO4wWOT.mjs → renderer-CMM4DZ1i.mjs} +2 -2
- package/dist/{renderer-CXO4wWOT.mjs.map → renderer-CMM4DZ1i.mjs.map} +1 -1
- package/dist/{renderer-DWvg6ZKK.mjs → renderer-COkFM1KL.mjs} +2 -2
- package/dist/{renderer-DWvg6ZKK.mjs.map → renderer-COkFM1KL.mjs.map} +1 -1
- package/dist/renderer-CSkFF-qe.mjs +3 -0
- package/dist/renderer-CU2c6zWc.mjs +3 -0
- package/dist/{renderer-DG3VnR50.mjs → renderer-CXUohIJ9.mjs} +2 -2
- package/dist/{renderer-DG3VnR50.mjs.map → renderer-CXUohIJ9.mjs.map} +1 -1
- package/dist/{renderer-BXDrwZNT.mjs → renderer-CeADvUU_.mjs} +2 -2
- package/dist/{renderer-BXDrwZNT.mjs.map → renderer-CeADvUU_.mjs.map} +1 -1
- package/dist/{renderer-s_HENMCc.mjs → renderer-CgVdRbc-.mjs} +2 -2
- package/dist/{renderer-s_HENMCc.mjs.map → renderer-CgVdRbc-.mjs.map} +1 -1
- package/dist/renderer-CiLiH6w_.mjs +3 -0
- package/dist/{renderer-Daa-Af8y.mjs → renderer-CnRoblJF.mjs} +2 -2
- package/dist/{renderer-Daa-Af8y.mjs.map → renderer-CnRoblJF.mjs.map} +1 -1
- package/dist/{renderer-Y7-Us00q.mjs → renderer-CsQ7nY0z.mjs} +1 -1
- package/dist/{renderer-CBdqOoTN.mjs → renderer-CwAjqb2o.mjs} +1 -1
- package/dist/{renderer-Bmt3fpzg.mjs → renderer-Cx5H41JR.mjs} +1 -1
- package/dist/{renderer-vnHsTpQf.mjs → renderer-D1Zs78PQ.mjs} +54 -84
- package/dist/{renderer-vnHsTpQf.mjs.map → renderer-D1Zs78PQ.mjs.map} +1 -1
- package/dist/{renderer-DFA0KBdj.mjs → renderer-D1ib-wB3.mjs} +2 -2
- package/dist/{renderer-DFA0KBdj.mjs.map → renderer-D1ib-wB3.mjs.map} +1 -1
- package/dist/{renderer-Bh1pfpzz.mjs → renderer-D54yO_M_.mjs} +2 -2
- package/dist/{renderer-Bh1pfpzz.mjs.map → renderer-D54yO_M_.mjs.map} +1 -1
- package/dist/{renderer-aH8p3zLE.mjs → renderer-D5N2JO7g.mjs} +2 -2
- package/dist/{renderer-aH8p3zLE.mjs.map → renderer-D5N2JO7g.mjs.map} +1 -1
- package/dist/{renderer-BgAzIw8w.mjs → renderer-DBp6A7tR.mjs} +2 -2
- package/dist/{renderer-BgAzIw8w.mjs.map → renderer-DBp6A7tR.mjs.map} +1 -1
- package/dist/{renderer-CcDfRa1o.mjs → renderer-DI2RcpKU.mjs} +2 -2
- package/dist/{renderer-CcDfRa1o.mjs.map → renderer-DI2RcpKU.mjs.map} +1 -1
- package/dist/renderer-DMaYsSM4.mjs +3 -0
- package/dist/renderer-DZ7t_l1d.mjs +3 -0
- package/dist/{renderer-CkLD7Lp7.mjs → renderer-D_QS6p1q.mjs} +2 -2
- package/dist/{renderer-CkLD7Lp7.mjs.map → renderer-D_QS6p1q.mjs.map} +1 -1
- package/dist/{renderer-DDp7_TUi.d.mts → renderer-DcPOsAVu.d.mts} +2 -2
- package/dist/{renderer-DDp7_TUi.d.mts.map → renderer-DcPOsAVu.d.mts.map} +1 -1
- package/dist/{renderer-BBweieq9.mjs → renderer-Dcd-Pkzd.mjs} +2 -2
- package/dist/{renderer-BBweieq9.mjs.map → renderer-Dcd-Pkzd.mjs.map} +1 -1
- package/dist/{renderer-VHpQTPbr.mjs → renderer-DjiUZ0Vs.mjs} +2 -2
- package/dist/{renderer-VHpQTPbr.mjs.map → renderer-DjiUZ0Vs.mjs.map} +1 -1
- package/dist/renderer-DkJEnKQu.mjs +3 -0
- package/dist/renderer-DlkrKqQj.mjs +3 -0
- package/dist/renderer-DxOQ5S8T.mjs +3 -0
- package/dist/renderer-Ibvw1tE_.mjs +3 -0
- package/dist/{renderer-BcckaXum.mjs → renderer-JjMO41Cv.mjs} +2 -2
- package/dist/{renderer-BcckaXum.mjs.map → renderer-JjMO41Cv.mjs.map} +1 -1
- package/dist/renderer-M0jeFo6S.mjs +4 -0
- package/dist/renderer-NhSzqWsQ.mjs +3 -0
- package/dist/renderer-OrhgkzVu.mjs +3 -0
- package/dist/{renderer-9ZcinEHr.mjs → renderer-Q7_DUcnu.mjs} +2 -2
- package/dist/{renderer-9ZcinEHr.mjs.map → renderer-Q7_DUcnu.mjs.map} +1 -1
- package/dist/{renderer-8dDNjgzG.mjs → renderer-QfSB-cRU.mjs} +2 -2
- package/dist/{renderer-8dDNjgzG.mjs.map → renderer-QfSB-cRU.mjs.map} +1 -1
- package/dist/{renderer-BQgAn_oc.mjs → renderer-WXylxlu2.mjs} +2 -2
- package/dist/{renderer-BQgAn_oc.mjs.map → renderer-WXylxlu2.mjs.map} +1 -1
- package/dist/renderer-WrFAaLxW.mjs +3 -0
- package/dist/renderer-bbOALT4F.mjs +3 -0
- package/dist/{renderer-DQQnEcSA.mjs → renderer-bebAt6Dz.mjs} +2 -2
- package/dist/{renderer-DQQnEcSA.mjs.map → renderer-bebAt6Dz.mjs.map} +1 -1
- package/dist/{renderer-1ccLpvz3.mjs → renderer-eC1gRPRo.mjs} +2 -2
- package/dist/{renderer-1ccLpvz3.mjs.map → renderer-eC1gRPRo.mjs.map} +1 -1
- package/dist/renderer-lXmyzdcx.mjs +3 -0
- package/dist/renderer-ospMsCzr.mjs +3 -0
- package/dist/{renderer-BwE5dnyL.mjs → renderer-vUjNMbLq.mjs} +2 -2
- package/dist/{renderer-BwE5dnyL.mjs.map → renderer-vUjNMbLq.mjs.map} +1 -1
- package/dist/{renderers-BWg16W-V-FofeEqQL.mjs → renderers-BWg16W-V-jhdCp6Vd.mjs} +2 -2
- package/dist/{renderers-BWg16W-V-FofeEqQL.mjs.map → renderers-BWg16W-V-jhdCp6Vd.mjs.map} +1 -1
- package/dist/signals/index.d.mts +5 -5
- package/dist/signals/index.mjs +4 -4
- package/package.json +55 -55
- package/dist/dist-CGIme1vZ.mjs.map +0 -1
- package/dist/dist-DuIv211_.mjs.map +0 -1
- package/dist/fonts-CwwIhe1o.mjs.map +0 -1
- package/dist/index-CnAk1hTw.d.mts.map +0 -1
- package/dist/index-DiSKzDGR.d.mts.map +0 -1
- package/dist/preview-D7TqF9i_.mjs.map +0 -1
- package/dist/preview-engine/chunk-47VT677S.mjs +0 -8
- package/dist/preview-engine/chunk-QARN3FLA.mjs +0 -418
- package/dist/preview-engine/chunk-SZ7YRPKO.mjs +0 -3
- package/dist/renderer-0kXgErRZ.mjs +0 -3
- package/dist/renderer-B9e4XyZy.mjs +0 -3
- package/dist/renderer-BBhCaxS2.mjs +0 -3
- package/dist/renderer-BC0iMueW.mjs +0 -3
- package/dist/renderer-BGd1VV9J.mjs +0 -3
- package/dist/renderer-BJKbasW6.mjs +0 -3
- package/dist/renderer-BV3mlZMX.mjs +0 -3
- package/dist/renderer-BgO4XWZz.mjs +0 -3
- package/dist/renderer-Bk842iGl.mjs +0 -4
- package/dist/renderer-Bn7jX6n3.mjs +0 -3
- package/dist/renderer-CPKOjnkT.mjs +0 -3
- package/dist/renderer-CSgVUPHu.mjs +0 -3
- package/dist/renderer-CUr66blo.mjs +0 -3
- package/dist/renderer-CYC-j_8W.mjs +0 -3
- package/dist/renderer-Cy7k7eN9.mjs +0 -3
- package/dist/renderer-D3poaM-T.mjs +0 -3
- package/dist/renderer-D69vFGNB.mjs +0 -3
- package/dist/renderer-DiXzb5FQ.mjs +0 -3
- package/dist/renderer-DkKjy-Q0.mjs +0 -3
- package/dist/renderer-DlxCfGuA.mjs +0 -3
- package/dist/renderer-DnUe5mD1.mjs +0 -3
- package/dist/renderer-DwtLqidh.mjs +0 -3
- package/dist/renderer-WaLyCr37.mjs +0 -3
- package/dist/renderer-rrz9Fhwo.mjs +0 -3
- package/dist/renderer-ssnm_dWv.mjs +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-Daa-Af8y.mjs","names":[],"sources":["../../../nodes/node-vignette/dist/renderers-BgSXYX3i.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst VIGNETTE_SHADER = `\nstruct VignetteUniforms {\n strength : f32,\n radius : f32,\n softness : f32,\n roundness : f32,\n\n centerX : f32,\n centerY : f32,\n hasStrengthSig : f32,\n hasRadiusSig : f32,\n\n hasSoftnessSig : f32,\n hasRoundnessSig: f32,\n hasCenterXSig : f32,\n hasCenterYSig : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : VignetteUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var strengthSigTex : texture_2d<f32>;\n@group(2) @binding(1) var radiusSigTex : texture_2d<f32>;\n@group(2) @binding(2) var softnessSigTex : texture_2d<f32>;\n@group(2) @binding(3) var roundnessSigTex : texture_2d<f32>;\n@group(2) @binding(4) var centerXSigTex : texture_2d<f32>;\n@group(2) @binding(5) var centerYSigTex : texture_2d<f32>;\n@group(2) @binding(6) var signalSamp : sampler;\n\nstruct VSOut {\n @builtin(position) pos : vec4<f32>,\n @location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n var pos = array<vec2<f32>, 4>(\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(1.0, 1.0),\n vec2<f32>(-1.0, -1.0),\n vec2<f32>(1.0, -1.0)\n );\n var uv = array<vec2<f32>, 4>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 1.0)\n );\n return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n let color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\n if (color.a < 1e-5) {\n return color;\n }\n\n // Resolve parameter overrides or dynamic signals\n var strength = u.strength;\n if (u.hasStrengthSig > 0.5) {\n strength = textureSampleLevel(strengthSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var radius = u.radius;\n if (u.hasRadiusSig > 0.5) {\n radius = textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var softness = u.softness;\n if (u.hasSoftnessSig > 0.5) {\n softness = textureSampleLevel(softnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var roundness = u.roundness;\n if (u.hasRoundnessSig > 0.5) {\n roundness = textureSampleLevel(roundnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var centerX = u.centerX;\n if (u.hasCenterXSig > 0.5) {\n centerX = textureSampleLevel(centerXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var centerY = u.centerY;\n if (u.hasCenterYSig > 0.5) {\n centerY = textureSampleLevel(centerYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n let center = vec2<f32>(centerX, centerY);\n let dimensions = vec2<f32>(textureDimensions(tex));\n let aspect = dimensions.x / dimensions.y;\n let uvOffset = in.uv - center;\n\n // Calculate aspect ratio corrected coordinate for circle\n let correctedOffset = vec2<f32>(\n uvOffset.x * mix(1.0, aspect, roundness),\n uvOffset.y\n );\n let dist = length(correctedOffset);\n\n // Calculate vignette edge falloff\n let edge0 = radius;\n let edge1 = max(0.0, radius - softness);\n let vignetteFactor = smoothstep(edge0, edge1, dist);\n\n // Blend based on strength\n let intensity = strength / 100.0;\n let finalVignette = mix(1.0, vignetteFactor, intensity);\n\n // Unpremultiply, apply vignette, and repremultiply\n let unpremult_rgb = color.rgb / color.a;\n let final_rgb = unpremult_rgb * finalVignette;\n\n return vec4<f32>(clamp(final_rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * color.a, color.a);\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst vignetteUniformData = new Float32Array(12);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tuniformLayout: device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tbuffer: { type: \"uniform\" }\n\t\t}] }),\n\t\tsingleTextureLayout: device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\ttexture: { sampleType: \"float\" }\n\t\t}, {\n\t\t\tbinding: 1,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tsampler: { type: \"filtering\" }\n\t\t}] }),\n\t\tsignalTextureLayout: device.createBindGroupLayout({ entries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tsampler: { type: \"filtering\" }\n\t\t\t}\n\t\t] }),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getVignetteResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `vignette_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst vignetteModule = device.createShaderModule({\n\t\t\tlabel: `vignette_${format}.wgsl`,\n\t\t\tcode: VIGNETTE_SHADER\n\t\t});\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: `VignettePipeline_${format}`,\n\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t] }),\n\t\t\tvertex: {\n\t\t\t\tmodule: vignetteModule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule: vignetteModule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tvignettePipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst VignetteWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetView, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Vignette\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = op.inputs ? Object.keys(op.inputs)[0] : \"vignette_node\";\n\tconst resolveBindable = (configKey, defaultValue, minVal, maxVal) => {\n\t\tconst handleId = op[`${configKey}HandleId`];\n\t\tconst input = handleId ? op.inputs?.[handleId] : null;\n\t\tconst hasSignal = !!(input?.connectionValid && (input.outputItem?.type === \"Signal\" || input.outputItem?.type === \"Numeric\"));\n\t\tconst sd = hasSignal && input?.outputItem?.data ? input.outputItem.data : null;\n\t\tlet val = defaultValue;\n\t\tlet hasStaticSig = false;\n\t\tlet gpuTextureView = void 0;\n\t\tif (!hasSignal) if (input?.connectionValid && input.outputItem?.type === \"Number\") val = Math.max(minVal, Math.min(maxVal, Number(input.outputItem.data ?? defaultValue)));\n\t\telse {\n\t\t\tlet rawVal = op[configKey];\n\t\t\tif (rawVal !== void 0 && rawVal !== null) {\n\t\t\t\tif (typeof rawVal === \"object\" && \"value\" in rawVal) {\n\t\t\t\t\tconst sig = rawVal;\n\t\t\t\t\tif (sig.gpuBinding?.textureView) {\n\t\t\t\t\t\tgpuTextureView = sig.gpuBinding.textureView;\n\t\t\t\t\t\thasStaticSig = true;\n\t\t\t\t\t}\n\t\t\t\t\trawVal = sig.value;\n\t\t\t\t} else if (typeof rawVal === \"function\") rawVal = rawVal(frame, fps);\n\t\t\t}\n\t\t\tconst numVal = Number(rawVal ?? defaultValue);\n\t\t\tval = Math.max(minVal, Math.min(maxVal, isNaN(numVal) ? defaultValue : numVal));\n\t\t}\n\t\telse if (sd) {\n\t\t\tval = Math.max(minVal, Math.min(maxVal, Number(sd.offset ?? 0)));\n\t\t\thasStaticSig = true;\n\t\t}\n\t\treturn {\n\t\t\tval,\n\t\t\thasStaticSig,\n\t\t\tsd,\n\t\t\tgpuTextureView\n\t\t};\n\t};\n\tconst strengthRes = resolveBindable(\"strength\", 50, 0, 100);\n\tconst radiusRes = resolveBindable(\"radius\", 1, .1, 2);\n\tconst softnessRes = resolveBindable(\"softness\", .5, 0, 1);\n\tconst roundnessRes = resolveBindable(\"roundness\", .5, 0, 1);\n\tconst centerXRes = resolveBindable(\"centerX\", .5, 0, 1);\n\tconst centerYRes = resolveBindable(\"centerY\", .5, 0, 1);\n\tconst tmpTex = ctx.renderer.getTemporaryTexture(width, height, [...props.excludeTextures || [], targetTexture]);\n\tconst tmpView = tmpTex.createView();\n\tctx.renderer.beginFrame(encoder, tmpView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tctx.renderer.pushScissor({\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t});\n\tctx.renderer.pushIdentity();\n\tawait drawChild(childMedia, {\n\t\t...props,\n\t\tvirtualMedia: childMedia\n\t}, tmpView, tmpTex, width, height);\n\tctx.renderer.popTransform();\n\tctx.renderer.popScissor();\n\targs.pass.end();\n\tconst { vignettePipeline: pipeline, uniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getVignetteResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps;\n\tconst durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 0;\n\tconst getSignalView = (res, suffix) => {\n\t\tif (res.gpuTextureView) return res.gpuTextureView;\n\t\tif (res.hasStaticSig && res.sd) return signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, res.sd.nodeId ?? `${nodeId}_${suffix}`, elapsedSeconds, durationSeconds, res.sd, width, height, props.renderId, frame, fps);\n\t\treturn signalRegistry.getDummy1x1TextureView(ctx.device);\n\t};\n\tconst strengthView = getSignalView(strengthRes, \"strength_sig\");\n\tconst radiusView = getSignalView(radiusRes, \"radius_sig\");\n\tconst softnessView = getSignalView(softnessRes, \"softness_sig\");\n\tconst roundnessView = getSignalView(roundnessRes, \"roundness_sig\");\n\tconst centerXView = getSignalView(centerXRes, \"centerX_sig\");\n\tconst centerYView = getSignalView(centerYRes, \"centerY_sig\");\n\tvignetteUniformData[0] = strengthRes.val;\n\tvignetteUniformData[1] = radiusRes.val;\n\tvignetteUniformData[2] = softnessRes.val;\n\tvignetteUniformData[3] = roundnessRes.val;\n\tvignetteUniformData[4] = centerXRes.val;\n\tvignetteUniformData[5] = centerYRes.val;\n\tvignetteUniformData[6] = strengthRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[7] = radiusRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[8] = softnessRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[9] = roundnessRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[10] = centerXRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[11] = centerYRes.hasStaticSig ? 1 : 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(vignetteUniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst vignettePass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: outTex.createView(),\n\t\tloadOp: \"clear\",\n\t\tstoreOp: \"store\",\n\t\tclearValue: {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}\n\t}] });\n\tvignettePass.setPipeline(pipeline);\n\tvignettePass.setBindGroup(0, ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t}));\n\tvignettePass.setBindGroup(1, ctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler));\n\tvignettePass.setBindGroup(2, ctx.device.createBindGroup({\n\t\tlayout: sigLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: strengthView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: radiusView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: softnessView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: roundnessView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: centerXView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: centerYView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t}));\n\tvignettePass.draw(4);\n\tvignettePass.end();\n\tconst finalPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"load\");\n\tctx.renderer.drawTexture(finalPass, outTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: targetWidth,\n\t\theight: targetHeight\n\t}, { opacity: op.opacity ?? 1 });\n\targs.pass = finalPass;\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: VignetteWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-BgSXYX3i.mjs.map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer-CnRoblJF.mjs","names":[],"sources":["../../../nodes/node-vignette/dist/renderers-BgSXYX3i.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst VIGNETTE_SHADER = `\nstruct VignetteUniforms {\n strength : f32,\n radius : f32,\n softness : f32,\n roundness : f32,\n\n centerX : f32,\n centerY : f32,\n hasStrengthSig : f32,\n hasRadiusSig : f32,\n\n hasSoftnessSig : f32,\n hasRoundnessSig: f32,\n hasCenterXSig : f32,\n hasCenterYSig : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : VignetteUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n\n@group(2) @binding(0) var strengthSigTex : texture_2d<f32>;\n@group(2) @binding(1) var radiusSigTex : texture_2d<f32>;\n@group(2) @binding(2) var softnessSigTex : texture_2d<f32>;\n@group(2) @binding(3) var roundnessSigTex : texture_2d<f32>;\n@group(2) @binding(4) var centerXSigTex : texture_2d<f32>;\n@group(2) @binding(5) var centerYSigTex : texture_2d<f32>;\n@group(2) @binding(6) var signalSamp : sampler;\n\nstruct VSOut {\n @builtin(position) pos : vec4<f32>,\n @location(0) uv : vec2<f32>,\n};\n\n@vertex fn vs(@builtin(vertex_index) vi: u32) -> VSOut {\n var pos = array<vec2<f32>, 4>(\n vec2<f32>(-1.0, 1.0),\n vec2<f32>(1.0, 1.0),\n vec2<f32>(-1.0, -1.0),\n vec2<f32>(1.0, -1.0)\n );\n var uv = array<vec2<f32>, 4>(\n vec2<f32>(0.0, 0.0),\n vec2<f32>(1.0, 0.0),\n vec2<f32>(0.0, 1.0),\n vec2<f32>(1.0, 1.0)\n );\n return VSOut(vec4<f32>(pos[vi], 0.0, 1.0), uv[vi]);\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n let color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\n if (color.a < 1e-5) {\n return color;\n }\n\n // Resolve parameter overrides or dynamic signals\n var strength = u.strength;\n if (u.hasStrengthSig > 0.5) {\n strength = textureSampleLevel(strengthSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var radius = u.radius;\n if (u.hasRadiusSig > 0.5) {\n radius = textureSampleLevel(radiusSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var softness = u.softness;\n if (u.hasSoftnessSig > 0.5) {\n softness = textureSampleLevel(softnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var roundness = u.roundness;\n if (u.hasRoundnessSig > 0.5) {\n roundness = textureSampleLevel(roundnessSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var centerX = u.centerX;\n if (u.hasCenterXSig > 0.5) {\n centerX = textureSampleLevel(centerXSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n var centerY = u.centerY;\n if (u.hasCenterYSig > 0.5) {\n centerY = textureSampleLevel(centerYSigTex, signalSamp, vec2<f32>(0.5, 0.5), 0.0).r;\n }\n\n let center = vec2<f32>(centerX, centerY);\n let dimensions = vec2<f32>(textureDimensions(tex));\n let aspect = dimensions.x / dimensions.y;\n let uvOffset = in.uv - center;\n\n // Calculate aspect ratio corrected coordinate for circle\n let correctedOffset = vec2<f32>(\n uvOffset.x * mix(1.0, aspect, roundness),\n uvOffset.y\n );\n let dist = length(correctedOffset);\n\n // Calculate vignette edge falloff\n let edge0 = radius;\n let edge1 = max(0.0, radius - softness);\n let vignetteFactor = smoothstep(edge0, edge1, dist);\n\n // Blend based on strength\n let intensity = strength / 100.0;\n let finalVignette = mix(1.0, vignetteFactor, intensity);\n\n // Unpremultiply, apply vignette, and repremultiply\n let unpremult_rgb = color.rgb / color.a;\n let final_rgb = unpremult_rgb * finalVignette;\n\n return vec4<f32>(clamp(final_rgb, vec3<f32>(0.0), vec3<f32>(1.0)) * color.a, color.a);\n}\n`;\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst vignetteUniformData = new Float32Array(12);\nfunction getDeviceLayouts(device) {\n\tlet res = deviceResourceCache.get(device);\n\tif (res) return res;\n\tres = {\n\t\tuniformLayout: device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tbuffer: { type: \"uniform\" }\n\t\t}] }),\n\t\tsingleTextureLayout: device.createBindGroupLayout({ entries: [{\n\t\t\tbinding: 0,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\ttexture: { sampleType: \"float\" }\n\t\t}, {\n\t\t\tbinding: 1,\n\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\tsampler: { type: \"filtering\" }\n\t\t}] }),\n\t\tsignalTextureLayout: device.createBindGroupLayout({ entries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\ttexture: { sampleType: \"float\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tvisibility: GPUShaderStage.FRAGMENT,\n\t\t\t\tsampler: { type: \"filtering\" }\n\t\t\t}\n\t\t] }),\n\t\tpipelineCache: /* @__PURE__ */ new Map()\n\t};\n\tdeviceResourceCache.set(device, res);\n\treturn res;\n}\nfunction getVignetteResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `vignette_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst vignetteModule = device.createShaderModule({\n\t\t\tlabel: `vignette_${format}.wgsl`,\n\t\t\tcode: VIGNETTE_SHADER\n\t\t});\n\t\tpipeline = device.createRenderPipeline({\n\t\t\tlabel: `VignettePipeline_${format}`,\n\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.singleTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t] }),\n\t\t\tvertex: {\n\t\t\t\tmodule: vignetteModule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule: vignetteModule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tvignettePipeline: pipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsingleTextureLayout: layouts.singleTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst VignetteWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetView, targetTexture, targetWidth, targetHeight, props, drawChild } = args;\n\tconst frame = props.frame ?? 0;\n\tconst fps = props.fps || 30;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Vignette\" || !op) return;\n\tconst childMedia = props.virtualMedia.children?.[0];\n\tif (!childMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst nodeId = op.inputs ? Object.keys(op.inputs)[0] : \"vignette_node\";\n\tconst resolveBindable = (configKey, defaultValue, minVal, maxVal) => {\n\t\tconst handleId = op[`${configKey}HandleId`];\n\t\tconst input = handleId ? op.inputs?.[handleId] : null;\n\t\tconst hasSignal = !!(input?.connectionValid && (input.outputItem?.type === \"Signal\" || input.outputItem?.type === \"Numeric\"));\n\t\tconst sd = hasSignal && input?.outputItem?.data ? input.outputItem.data : null;\n\t\tlet val = defaultValue;\n\t\tlet hasStaticSig = false;\n\t\tlet gpuTextureView = void 0;\n\t\tif (!hasSignal) if (input?.connectionValid && input.outputItem?.type === \"Number\") val = Math.max(minVal, Math.min(maxVal, Number(input.outputItem.data ?? defaultValue)));\n\t\telse {\n\t\t\tlet rawVal = op[configKey];\n\t\t\tif (rawVal !== void 0 && rawVal !== null) {\n\t\t\t\tif (typeof rawVal === \"object\" && \"value\" in rawVal) {\n\t\t\t\t\tconst sig = rawVal;\n\t\t\t\t\tif (sig.gpuBinding?.textureView) {\n\t\t\t\t\t\tgpuTextureView = sig.gpuBinding.textureView;\n\t\t\t\t\t\thasStaticSig = true;\n\t\t\t\t\t}\n\t\t\t\t\trawVal = sig.value;\n\t\t\t\t} else if (typeof rawVal === \"function\") rawVal = rawVal(frame, fps);\n\t\t\t}\n\t\t\tconst numVal = Number(rawVal ?? defaultValue);\n\t\t\tval = Math.max(minVal, Math.min(maxVal, isNaN(numVal) ? defaultValue : numVal));\n\t\t}\n\t\telse if (sd) {\n\t\t\tval = Math.max(minVal, Math.min(maxVal, Number(sd.offset ?? 0)));\n\t\t\thasStaticSig = true;\n\t\t}\n\t\treturn {\n\t\t\tval,\n\t\t\thasStaticSig,\n\t\t\tsd,\n\t\t\tgpuTextureView\n\t\t};\n\t};\n\tconst strengthRes = resolveBindable(\"strength\", 50, 0, 100);\n\tconst radiusRes = resolveBindable(\"radius\", 1, .1, 2);\n\tconst softnessRes = resolveBindable(\"softness\", .5, 0, 1);\n\tconst roundnessRes = resolveBindable(\"roundness\", .5, 0, 1);\n\tconst centerXRes = resolveBindable(\"centerX\", .5, 0, 1);\n\tconst centerYRes = resolveBindable(\"centerY\", .5, 0, 1);\n\tconst tmpTex = ctx.renderer.getTemporaryTexture(width, height, [...props.excludeTextures || [], targetTexture]);\n\tconst tmpView = tmpTex.createView();\n\tctx.renderer.beginFrame(encoder, tmpView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, width, height, \"clear\").end();\n\tctx.renderer.pushScissor({\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth,\n\t\theight\n\t});\n\tctx.renderer.pushIdentity();\n\tawait drawChild(childMedia, {\n\t\t...props,\n\t\tvirtualMedia: childMedia\n\t}, tmpView, tmpTex, width, height);\n\tctx.renderer.popTransform();\n\tctx.renderer.popScissor();\n\targs.pass.end();\n\tconst { vignettePipeline: pipeline, uniformLayout: uLayout, singleTextureLayout: tLayout, signalTextureLayout: sigLayout } = getVignetteResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : frame / fps;\n\tconst durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 0;\n\tconst getSignalView = (res, suffix) => {\n\t\tif (res.gpuTextureView) return res.gpuTextureView;\n\t\tif (res.hasStaticSig && res.sd) return signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, res.sd.nodeId ?? `${nodeId}_${suffix}`, elapsedSeconds, durationSeconds, res.sd, width, height, props.renderId, frame, fps);\n\t\treturn signalRegistry.getDummy1x1TextureView(ctx.device);\n\t};\n\tconst strengthView = getSignalView(strengthRes, \"strength_sig\");\n\tconst radiusView = getSignalView(radiusRes, \"radius_sig\");\n\tconst softnessView = getSignalView(softnessRes, \"softness_sig\");\n\tconst roundnessView = getSignalView(roundnessRes, \"roundness_sig\");\n\tconst centerXView = getSignalView(centerXRes, \"centerX_sig\");\n\tconst centerYView = getSignalView(centerYRes, \"centerY_sig\");\n\tvignetteUniformData[0] = strengthRes.val;\n\tvignetteUniformData[1] = radiusRes.val;\n\tvignetteUniformData[2] = softnessRes.val;\n\tvignetteUniformData[3] = roundnessRes.val;\n\tvignetteUniformData[4] = centerXRes.val;\n\tvignetteUniformData[5] = centerYRes.val;\n\tvignetteUniformData[6] = strengthRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[7] = radiusRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[8] = softnessRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[9] = roundnessRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[10] = centerXRes.hasStaticSig ? 1 : 0;\n\tvignetteUniformData[11] = centerYRes.hasStaticSig ? 1 : 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(vignetteUniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tconst vignettePass = encoder.beginRenderPass({ colorAttachments: [{\n\t\tview: outTex.createView(),\n\t\tloadOp: \"clear\",\n\t\tstoreOp: \"store\",\n\t\tclearValue: {\n\t\t\tr: 0,\n\t\t\tg: 0,\n\t\t\tb: 0,\n\t\t\ta: 0\n\t\t}\n\t}] });\n\tvignettePass.setPipeline(pipeline);\n\tvignettePass.setBindGroup(0, ctx.device.createBindGroup({\n\t\tlayout: uLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer: uniformBuffer }\n\t\t}]\n\t}));\n\tvignettePass.setBindGroup(1, ctx.renderer.bindGroupCache.getBindGroup(ctx.device, tLayout, tmpTex, sampler));\n\tvignettePass.setBindGroup(2, ctx.device.createBindGroup({\n\t\tlayout: sigLayout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: strengthView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: radiusView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: softnessView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: roundnessView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 4,\n\t\t\t\tresource: centerXView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 5,\n\t\t\t\tresource: centerYView\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 6,\n\t\t\t\tresource: sampler\n\t\t\t}\n\t\t]\n\t}));\n\tvignettePass.draw(4);\n\tvignettePass.end();\n\tconst finalPass = ctx.renderer.beginFrame(encoder, targetView, {\n\t\tr: 0,\n\t\tg: 0,\n\t\tb: 0,\n\t\ta: 0\n\t}, targetWidth, targetHeight, \"load\");\n\tctx.renderer.drawTexture(finalPass, outTex, {\n\t\tx: 0,\n\t\ty: 0,\n\t\twidth: targetWidth,\n\t\theight: targetHeight\n\t}, { opacity: op.opacity ?? 1 });\n\targs.pass = finalPass;\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: VignetteWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-BgSXYX3i.mjs.map"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as renderers_default, t as RefractionCaustics3DWebGPURenderer } from "./renderer-
|
|
1
|
+
import { n as renderers_default, t as RefractionCaustics3DWebGPURenderer } from "./renderer-Dcd-Pkzd.mjs";
|
|
2
2
|
|
|
3
3
|
export { RefractionCaustics3DWebGPURenderer, renderers_default as default };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as __toCommonJS, i as __require, o as __toESM, t as __commonJSMin } from "./chunk-GMkBE123.mjs";
|
|
2
2
|
import { Bt as takeRenderDiagnostics, Ht as updateClockSignals, wt as getMediaType } from "./dist-Bx6J0VcM.mjs";
|
|
3
3
|
import { r as registerWebGPURenderer, t as audioRegistry } from "./renderer-CtVkU_GA.mjs";
|
|
4
|
-
import { B as inputStore, C as WebGPUAudioProcessor, F as ensureDevice, G as lutStore,
|
|
5
|
-
import { i as mixAudioTracks, r as drawCompositionTree, t as compositionStateStore, y as
|
|
4
|
+
import { B as inputStore, C as WebGPUAudioProcessor, F as ensureDevice, G as lutStore, R as getRenderer2D, T as clearAllVideoCache, d as NodeSurfaceProvider, et as shaderStore, q as mediaDecoderCache, rt as textureCache, y as SlugFontCache, z as initHeadlessWebGPU } from "./dist-DgIKXWZ1.mjs";
|
|
5
|
+
import { i as mixAudioTracks, r as drawCompositionTree, t as compositionStateStore, y as preloadCompositionFonts } from "./dist-55MP0aN4.mjs";
|
|
6
6
|
import { t as require_dist_cjs$20 } from "./dist-cjs-BUwe2XhR.mjs";
|
|
7
7
|
import { D as require_dist_cjs$21, O as dist_es_exports$1, _ as require_dist_cjs$33, a as require_dist_cjs$26, b as init_protocols, c as require_dist_cjs$37, d as require_dist_cjs$32, f as require_dist_cjs$23, g as require_dist_cjs$34, h as require_dist_cjs$35, i as require_dist_cjs$28, k as init_dist_es$1, l as require_dist_cjs$27, m as require_dist_cjs$22, n as require_dist_cjs$31, o as require_dist_cjs$29, p as require_dist_cjs$24, r as require_dist_cjs$30, s as require_dist_cjs$25, t as require_dist_cjs$38, u as require_dist_cjs$36, v as dist_es_exports, x as protocols_exports, y as init_dist_es } from "./dist-cjs-BKmGCgtm.mjs";
|
|
8
8
|
import { F as require_dist_cjs$42, I as require_dist_cjs$44, P as require_dist_cjs$39, R as require_dist_cjs$43, T as schema_exports, t as require_dist_cjs$41, v as init_tslib_es6, w as init_schema, y as tslib_es6_exports, z as require_dist_cjs$40 } from "./dist-cjs-DsMdld8l.mjs";
|
|
@@ -21593,7 +21593,7 @@ const envSchema = z$1.object({
|
|
|
21593
21593
|
* App version read from the monorepo root package.json.
|
|
21594
21594
|
* Used for version-aware render fingerprinting.
|
|
21595
21595
|
*/
|
|
21596
|
-
const APP_VERSION = "2.0.
|
|
21596
|
+
const APP_VERSION = "2.0.5";
|
|
21597
21597
|
let loggerContext = {
|
|
21598
21598
|
getStore: () => void 0,
|
|
21599
21599
|
run: (_store, callback, ...args) => callback(...args)
|
|
@@ -21749,52 +21749,16 @@ S3StorageService = __decorate([
|
|
|
21749
21749
|
], S3StorageService);
|
|
21750
21750
|
|
|
21751
21751
|
//#endregion
|
|
21752
|
-
//#region ../renderer/dist/bootstrap-mediabunny-
|
|
21752
|
+
//#region ../renderer/dist/bootstrap-mediabunny-DIMlnLDP.mjs
|
|
21753
21753
|
/**
|
|
21754
|
-
*
|
|
21755
|
-
*
|
|
21754
|
+
* Preloads only the fonts (and emoji) a VirtualMediaData tree's text uses, so
|
|
21755
|
+
* typography renders correctly on Node.js without loading its media. Shared
|
|
21756
|
+
* with the browser preview; emoji need a font set with
|
|
21757
|
+
* `FontManager.registerEmojiFont()`.
|
|
21756
21758
|
*/
|
|
21757
21759
|
async function preloadFonts(media, device = null) {
|
|
21758
21760
|
if (!media) return;
|
|
21759
|
-
|
|
21760
|
-
const op = media.operation;
|
|
21761
|
-
if (R2_CUSTOM_DOMAIN) SlugFontCache.emojiFontUrl = `https://${R2_CUSTOM_DOMAIN}/static/NotoColorEmoji.ttf`;
|
|
21762
|
-
if (!SlugFontCache.emojiFontPath) try {
|
|
21763
|
-
const isDev = import.meta.url.endsWith(".ts");
|
|
21764
|
-
const emojiLocalUrl = new URL(isDev ? "./assets/NotoColorEmoji.ttf" : "../src/assets/NotoColorEmoji.ttf", import.meta.url).href;
|
|
21765
|
-
let fontPath = emojiLocalUrl;
|
|
21766
|
-
if (emojiLocalUrl.startsWith("file://")) try {
|
|
21767
|
-
fontPath = new URL(emojiLocalUrl).pathname;
|
|
21768
|
-
} catch {
|
|
21769
|
-
fontPath = emojiLocalUrl.replace(/^file:\/\//, "");
|
|
21770
|
-
}
|
|
21771
|
-
SlugFontCache.emojiFontPath = fontPath;
|
|
21772
|
-
} catch {}
|
|
21773
|
-
if (op) {
|
|
21774
|
-
const opText = op;
|
|
21775
|
-
const isTextNode = opText.op === "text" || opText.kind === "text" || opText.op === "caption" || opText.kind === "caption" || typeof opText.text === "string";
|
|
21776
|
-
const fontFamily = opText.fontFamily || (isTextNode ? "Inter" : void 0);
|
|
21777
|
-
if (fontFamily) {
|
|
21778
|
-
const fontUrl = getHeadlessFontPath(fontFamily) ?? GetFontAssetUrl(fontFamily);
|
|
21779
|
-
promises.push(preloadFont(fontFamily, fontUrl).catch((err) => {
|
|
21780
|
-
rendererLogger.error(err, `[HeadlessMediaRenderer] Failed to preload font "${fontFamily}" from ${fontUrl}`);
|
|
21781
|
-
}));
|
|
21782
|
-
if (device) promises.push(SlugFontCache.preloadSlugFont(device, fontFamily, fontUrl).catch((err) => {
|
|
21783
|
-
rendererLogger.error(err, `[HeadlessMediaRenderer] Failed to preload Slug font "${fontFamily}" from ${fontUrl}`);
|
|
21784
|
-
}));
|
|
21785
|
-
}
|
|
21786
|
-
if (opText.op === "text" && opText.text && device) {
|
|
21787
|
-
const matches = opText.text.match(/\p{Extended_Pictographic}/gu);
|
|
21788
|
-
if (matches) {
|
|
21789
|
-
const fontSize = opText.fontSize ?? 48;
|
|
21790
|
-
for (const char of matches) promises.push(SlugFontCache.preloadEmoji(device, char, fontSize).catch((err) => {
|
|
21791
|
-
rendererLogger.error(err, `[HeadlessMediaRenderer] Failed to preload emoji texture for "${char}"`);
|
|
21792
|
-
}));
|
|
21793
|
-
}
|
|
21794
|
-
}
|
|
21795
|
-
}
|
|
21796
|
-
if (media.children && media.children.length > 0) for (const child of media.children) promises.push(preloadFonts(child, device));
|
|
21797
|
-
await Promise.all(promises);
|
|
21761
|
+
await preloadCompositionFonts(media, device, (err, what) => rendererLogger.error(err, `[HeadlessMediaRenderer] Failed to preload ${what}`));
|
|
21798
21762
|
}
|
|
21799
21763
|
/**
|
|
21800
21764
|
* Pipelined Asynchronous DMA Staging Ring for WebGPU.
|
|
@@ -22004,52 +21968,52 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22004
21968
|
{
|
|
22005
21969
|
packageName: "@framefields/node-lut",
|
|
22006
21970
|
ops: ["ApplyLUT"],
|
|
22007
|
-
load: () => import("./renderer-
|
|
21971
|
+
load: () => import("./renderer-DxOQ5S8T.mjs")
|
|
22008
21972
|
},
|
|
22009
21973
|
{
|
|
22010
21974
|
packageName: "@framefields/node-audio-compressor",
|
|
22011
21975
|
ops: ["AudioCompressor"],
|
|
22012
|
-
load: () => import("./renderer-
|
|
21976
|
+
load: () => import("./renderer-CGVuhBbA.mjs")
|
|
22013
21977
|
},
|
|
22014
21978
|
{
|
|
22015
21979
|
packageName: "@framefields/node-audio-delay",
|
|
22016
21980
|
ops: ["AudioDelay"],
|
|
22017
|
-
load: () => import("./renderer-
|
|
21981
|
+
load: () => import("./renderer-C4O-L73n.mjs")
|
|
22018
21982
|
},
|
|
22019
21983
|
{
|
|
22020
21984
|
packageName: "@framefields/node-audio-fade",
|
|
22021
21985
|
ops: ["AudioFade"],
|
|
22022
|
-
load: () => import("./renderer-
|
|
21986
|
+
load: () => import("./renderer-lXmyzdcx.mjs")
|
|
22023
21987
|
},
|
|
22024
21988
|
{
|
|
22025
21989
|
packageName: "@framefields/node-audio-noise-gate",
|
|
22026
21990
|
ops: ["AudioNoiseGate"],
|
|
22027
|
-
load: () => import("./renderer-
|
|
21991
|
+
load: () => import("./renderer-Ibvw1tE_.mjs")
|
|
22028
21992
|
},
|
|
22029
21993
|
{
|
|
22030
21994
|
packageName: "@framefields/node-audio-parametric-eq",
|
|
22031
21995
|
ops: ["AudioParametricEq"],
|
|
22032
|
-
load: () => import("./renderer-
|
|
21996
|
+
load: () => import("./renderer-DZ7t_l1d.mjs")
|
|
22033
21997
|
},
|
|
22034
21998
|
{
|
|
22035
21999
|
packageName: "@framefields/node-audio-reverb",
|
|
22036
22000
|
ops: ["AudioReverb"],
|
|
22037
|
-
load: () => import("./renderer
|
|
22001
|
+
load: () => import("./renderer--fkO4O8d.mjs")
|
|
22038
22002
|
},
|
|
22039
22003
|
{
|
|
22040
22004
|
packageName: "@framefields/node-audio-signal-extractor",
|
|
22041
22005
|
ops: ["AudioSignalExtractor"],
|
|
22042
|
-
load: () => import("./renderer-
|
|
22006
|
+
load: () => import("./renderer-M0jeFo6S.mjs")
|
|
22043
22007
|
},
|
|
22044
22008
|
{
|
|
22045
22009
|
packageName: "@framefields/node-blur",
|
|
22046
22010
|
ops: ["Blur"],
|
|
22047
|
-
load: () => import("./renderer-
|
|
22011
|
+
load: () => import("./renderer-BFOkGS0N.mjs")
|
|
22048
22012
|
},
|
|
22049
22013
|
{
|
|
22050
22014
|
packageName: "@framefields/node-camera-parallax-3d",
|
|
22051
22015
|
ops: ["CameraParallax3D"],
|
|
22052
|
-
load: () => import("./renderer-
|
|
22016
|
+
load: () => import("./renderer-BUHMkkLU.mjs")
|
|
22053
22017
|
},
|
|
22054
22018
|
{
|
|
22055
22019
|
packageName: "@framefields/node-canvas-generator",
|
|
@@ -22069,17 +22033,17 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22069
22033
|
{
|
|
22070
22034
|
packageName: "@framefields/node-color-balance",
|
|
22071
22035
|
ops: ["ColorBalance"],
|
|
22072
|
-
load: () => import("./renderer-
|
|
22036
|
+
load: () => import("./renderer-Cx5H41JR.mjs")
|
|
22073
22037
|
},
|
|
22074
22038
|
{
|
|
22075
22039
|
packageName: "@framefields/node-colorkey",
|
|
22076
22040
|
ops: ["ColorKey"],
|
|
22077
|
-
load: () => import("./renderer-
|
|
22041
|
+
load: () => import("./renderer-ospMsCzr.mjs")
|
|
22078
22042
|
},
|
|
22079
22043
|
{
|
|
22080
22044
|
packageName: "@framefields/node-compositor",
|
|
22081
22045
|
ops: ["Compositor"],
|
|
22082
|
-
load: () => import("./renderer-
|
|
22046
|
+
load: () => import("./renderer-5OiVjQan.mjs")
|
|
22083
22047
|
},
|
|
22084
22048
|
{
|
|
22085
22049
|
packageName: "@framefields/node-corner-pin",
|
|
@@ -22104,7 +22068,7 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22104
22068
|
{
|
|
22105
22069
|
packageName: "@framefields/node-displacement-map",
|
|
22106
22070
|
ops: ["DisplacementMap"],
|
|
22107
|
-
load: () => import("./renderer-
|
|
22071
|
+
load: () => import("./renderer-bbOALT4F.mjs")
|
|
22108
22072
|
},
|
|
22109
22073
|
{
|
|
22110
22074
|
packageName: "@framefields/node-extract-frame",
|
|
@@ -22114,12 +22078,12 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22114
22078
|
{
|
|
22115
22079
|
packageName: "@framefields/node-extract-lut",
|
|
22116
22080
|
ops: ["ExtractLUT"],
|
|
22117
|
-
load: () => import("./renderer-
|
|
22081
|
+
load: () => import("./renderer-C3L9SNRO.mjs")
|
|
22118
22082
|
},
|
|
22119
22083
|
{
|
|
22120
22084
|
packageName: "@framefields/node-film-grain",
|
|
22121
22085
|
ops: ["FilmGrain"],
|
|
22122
|
-
load: () => import("./renderer-
|
|
22086
|
+
load: () => import("./renderer-OrhgkzVu.mjs")
|
|
22123
22087
|
},
|
|
22124
22088
|
{
|
|
22125
22089
|
packageName: "@framefields/node-flip",
|
|
@@ -22129,17 +22093,17 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22129
22093
|
{
|
|
22130
22094
|
packageName: "@framefields/node-gradient-map",
|
|
22131
22095
|
ops: ["GradientMap"],
|
|
22132
|
-
load: () => import("./renderer-
|
|
22096
|
+
load: () => import("./renderer-C9BKcHZb.mjs")
|
|
22133
22097
|
},
|
|
22134
22098
|
{
|
|
22135
22099
|
packageName: "@framefields/node-halftone-screen",
|
|
22136
22100
|
ops: ["HalftoneScreen"],
|
|
22137
|
-
load: () => import("./renderer-
|
|
22101
|
+
load: () => import("./renderer-BaoJiMJO.mjs")
|
|
22138
22102
|
},
|
|
22139
22103
|
{
|
|
22140
22104
|
packageName: "@framefields/node-high-pass",
|
|
22141
22105
|
ops: ["HighPass"],
|
|
22142
|
-
load: () => import("./renderer-
|
|
22106
|
+
load: () => import("./renderer-CiLiH6w_.mjs")
|
|
22143
22107
|
},
|
|
22144
22108
|
{
|
|
22145
22109
|
packageName: "@framefields/node-kenburns",
|
|
@@ -22154,7 +22118,7 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22154
22118
|
{
|
|
22155
22119
|
packageName: "@framefields/node-levels",
|
|
22156
22120
|
ops: ["Levels"],
|
|
22157
|
-
load: () => import("./renderer-
|
|
22121
|
+
load: () => import("./renderer-CL9gPcfZ.mjs")
|
|
22158
22122
|
},
|
|
22159
22123
|
{
|
|
22160
22124
|
packageName: "@framefields/node-liquify",
|
|
@@ -22164,7 +22128,7 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22164
22128
|
{
|
|
22165
22129
|
packageName: "@framefields/node-mask-math",
|
|
22166
22130
|
ops: ["MaskMath"],
|
|
22167
|
-
load: () => import("./renderer-
|
|
22131
|
+
load: () => import("./renderer-NhSzqWsQ.mjs")
|
|
22168
22132
|
},
|
|
22169
22133
|
{
|
|
22170
22134
|
packageName: "@framefields/node-mesh-warp",
|
|
@@ -22174,37 +22138,37 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22174
22138
|
{
|
|
22175
22139
|
packageName: "@framefields/node-modulate",
|
|
22176
22140
|
ops: ["Modulate"],
|
|
22177
|
-
load: () => import("./renderer-
|
|
22141
|
+
load: () => import("./renderer-B0RDWv1C.mjs")
|
|
22178
22142
|
},
|
|
22179
22143
|
{
|
|
22180
22144
|
packageName: "@framefields/node-noise-generator",
|
|
22181
22145
|
ops: ["NoiseGenerator"],
|
|
22182
|
-
load: () => import("./renderer-
|
|
22146
|
+
load: () => import("./renderer-eC1gRPRo.mjs")
|
|
22183
22147
|
},
|
|
22184
22148
|
{
|
|
22185
22149
|
packageName: "@framefields/node-paint",
|
|
22186
22150
|
ops: ["Paint"],
|
|
22187
|
-
load: () => import("./renderer-
|
|
22151
|
+
load: () => import("./renderer-CHKB-Or4.mjs")
|
|
22188
22152
|
},
|
|
22189
22153
|
{
|
|
22190
22154
|
packageName: "@framefields/node-patch-heal",
|
|
22191
22155
|
ops: ["PatchHeal"],
|
|
22192
|
-
load: () => import("./renderer-
|
|
22156
|
+
load: () => import("./renderer-CsQ7nY0z.mjs")
|
|
22193
22157
|
},
|
|
22194
22158
|
{
|
|
22195
22159
|
packageName: "@framefields/node-refine-edge",
|
|
22196
22160
|
ops: ["RefineEdge"],
|
|
22197
|
-
load: () => import("./renderer-
|
|
22161
|
+
load: () => import("./renderer-DMaYsSM4.mjs")
|
|
22198
22162
|
},
|
|
22199
22163
|
{
|
|
22200
22164
|
packageName: "@framefields/node-refraction-caustics",
|
|
22201
22165
|
ops: ["RefractionCaustics3D"],
|
|
22202
|
-
load: () => import("./renderer-
|
|
22166
|
+
load: () => import("./renderer-CwAjqb2o.mjs")
|
|
22203
22167
|
},
|
|
22204
22168
|
{
|
|
22205
22169
|
packageName: "@framefields/node-relight-3d",
|
|
22206
22170
|
ops: ["Relight3D"],
|
|
22207
|
-
load: () => import("./renderer-
|
|
22171
|
+
load: () => import("./renderer-CSkFF-qe.mjs")
|
|
22208
22172
|
},
|
|
22209
22173
|
{
|
|
22210
22174
|
packageName: "@framefields/node-resizer-scaler",
|
|
@@ -22219,12 +22183,12 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22219
22183
|
{
|
|
22220
22184
|
packageName: "@framefields/node-shadows-highlights",
|
|
22221
22185
|
ops: ["ShadowsHighlights"],
|
|
22222
|
-
load: () => import("./renderer-
|
|
22186
|
+
load: () => import("./renderer-DkJEnKQu.mjs")
|
|
22223
22187
|
},
|
|
22224
22188
|
{
|
|
22225
22189
|
packageName: "@framefields/node-shape-generator",
|
|
22226
22190
|
ops: ["ShapeGenerator"],
|
|
22227
|
-
load: () => import("./renderer-
|
|
22191
|
+
load: () => import("./renderer-0gJC-sc8.mjs")
|
|
22228
22192
|
},
|
|
22229
22193
|
{
|
|
22230
22194
|
packageName: "@framefields/node-signal-gate",
|
|
@@ -22234,22 +22198,22 @@ const BUILTIN_NODE_RENDERERS = [
|
|
|
22234
22198
|
{
|
|
22235
22199
|
packageName: "@framefields/node-stereo-panning",
|
|
22236
22200
|
ops: ["StereoPanning"],
|
|
22237
|
-
load: () => import("./renderer-
|
|
22201
|
+
load: () => import("./renderer-DlkrKqQj.mjs")
|
|
22238
22202
|
},
|
|
22239
22203
|
{
|
|
22240
22204
|
packageName: "@framefields/node-tile-offset",
|
|
22241
22205
|
ops: ["TileOffset"],
|
|
22242
|
-
load: () => import("./renderer-
|
|
22206
|
+
load: () => import("./renderer-6x7CgHhJ.mjs")
|
|
22243
22207
|
},
|
|
22244
22208
|
{
|
|
22245
22209
|
packageName: "@framefields/node-unsharp-mask",
|
|
22246
22210
|
ops: ["UnsharpMask"],
|
|
22247
|
-
load: () => import("./renderer-
|
|
22211
|
+
load: () => import("./renderer-CU2c6zWc.mjs")
|
|
22248
22212
|
},
|
|
22249
22213
|
{
|
|
22250
22214
|
packageName: "@framefields/node-vignette",
|
|
22251
22215
|
ops: ["Vignette"],
|
|
22252
|
-
load: () => import("./renderer-
|
|
22216
|
+
load: () => import("./renderer-WrFAaLxW.mjs")
|
|
22253
22217
|
},
|
|
22254
22218
|
{
|
|
22255
22219
|
packageName: "@framefields/node-vision",
|
|
@@ -22453,7 +22417,7 @@ const bootstrapMediabunny = () => {
|
|
|
22453
22417
|
};
|
|
22454
22418
|
|
|
22455
22419
|
//#endregion
|
|
22456
|
-
//#region ../renderer/dist/headless-webgpu-renderer-
|
|
22420
|
+
//#region ../renderer/dist/headless-webgpu-renderer-BSmCX3bP.mjs
|
|
22457
22421
|
const DEFAULTS = {
|
|
22458
22422
|
blackPixelThreshold: .1,
|
|
22459
22423
|
blackFrameRatio: .98,
|
|
@@ -23581,7 +23545,8 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
23581
23545
|
renderer,
|
|
23582
23546
|
surface
|
|
23583
23547
|
} : null;
|
|
23584
|
-
|
|
23548
|
+
const prePass = async (frame) => {
|
|
23549
|
+
if (!ctx || !renderer) return;
|
|
23585
23550
|
const preEncoder = device.createCommandEncoder();
|
|
23586
23551
|
const dummyTex = renderer.getTemporaryTexture(width, height);
|
|
23587
23552
|
const dummyView = dummyTex.createView();
|
|
@@ -23592,7 +23557,7 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
23592
23557
|
a: 0
|
|
23593
23558
|
}, width, height, "clear").end();
|
|
23594
23559
|
await drawCompositionTree(ctx, preEncoder, dummyView, dummyTex, width, height, virtualMedia, {
|
|
23595
|
-
frame
|
|
23560
|
+
frame,
|
|
23596
23561
|
fps,
|
|
23597
23562
|
isHeadless: true,
|
|
23598
23563
|
renderId,
|
|
@@ -23603,7 +23568,8 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
23603
23568
|
});
|
|
23604
23569
|
device.queue.submit([preEncoder.finish()]);
|
|
23605
23570
|
await lutStore.awaitAllPending(device);
|
|
23606
|
-
}
|
|
23571
|
+
};
|
|
23572
|
+
await prePass(0);
|
|
23607
23573
|
for (let i$1 = 0; i$1 < totalFrames; i$1++) {
|
|
23608
23574
|
if (i$1 % 10 === 0) rendererLogger.info({
|
|
23609
23575
|
renderId,
|
|
@@ -23611,6 +23577,10 @@ var HeadlessWebGPURenderer = class HeadlessWebGPURenderer$1 {
|
|
|
23611
23577
|
totalFrames
|
|
23612
23578
|
}, `[HeadlessWebGPURenderer] Rendering frame ${i$1}/${totalFrames}`);
|
|
23613
23579
|
if (ctx && surface && renderer && pipeline) {
|
|
23580
|
+
if (i$1 > 0 && (lutStore.hasPending(device) || SlugFontCache.hasPending())) {
|
|
23581
|
+
updateClockSignals(i$1, fps, durationMs);
|
|
23582
|
+
await prePass(i$1);
|
|
23583
|
+
}
|
|
23614
23584
|
compositionStateStore.setState(renderId, i$1, fps, true);
|
|
23615
23585
|
updateClockSignals(i$1, fps, durationMs);
|
|
23616
23586
|
const encoder = device.createCommandEncoder();
|
|
@@ -23916,4 +23886,4 @@ async function renderFrameGrid(target, options = {}) {
|
|
|
23916
23886
|
|
|
23917
23887
|
//#endregion
|
|
23918
23888
|
export { HeadlessWebGPURenderer as a, HeadlessMediaRenderer as i, renderFrameGrid as n, formatQaReport as o, resolveSamplePoints as r, renderSemaphore as s, computeGridLayout as t };
|
|
23919
|
-
//# sourceMappingURL=renderer-
|
|
23889
|
+
//# sourceMappingURL=renderer-D1Zs78PQ.mjs.map
|