framefields 2.6.2 → 2.7.0

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.
Files changed (463) hide show
  1. package/dist/audio/index.d.mts +4 -4
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-BHuVoNc-.mjs → audio-j3ttoRDX.mjs} +4 -4
  4. package/dist/{audio-BHuVoNc-.mjs.map → audio-j3ttoRDX.mjs.map} +1 -1
  5. package/dist/{audio-WcPMxtcz.d.mts → audio-tL8CcPra.d.mts} +3 -3
  6. package/dist/{audio-WcPMxtcz.d.mts.map → audio-tL8CcPra.d.mts.map} +1 -1
  7. package/dist/components/index.d.mts +10 -10
  8. package/dist/components/index.mjs +44 -44
  9. package/dist/{dist-Wsjx_Rza.mjs → dist-BHTd-EC1.mjs} +92 -19
  10. package/dist/{dist-Wsjx_Rza.mjs.map → dist-BHTd-EC1.mjs.map} +1 -1
  11. package/dist/{dist-CSU_2yUb.mjs → dist-BM0ilHvQ.mjs} +115 -21
  12. package/dist/dist-BM0ilHvQ.mjs.map +1 -0
  13. package/dist/{dist-CL5JOMSp.mjs → dist-BRXsfWKQ.mjs} +424 -8
  14. package/dist/dist-BRXsfWKQ.mjs.map +1 -0
  15. package/dist/{dist-PlaSQJ43.mjs → dist-CPtFZxtu.mjs} +2 -2
  16. package/dist/{dist-PlaSQJ43.mjs.map → dist-CPtFZxtu.mjs.map} +1 -1
  17. package/dist/effects/index.d.mts +4 -4
  18. package/dist/effects/index.mjs +35 -35
  19. package/dist/{effects-BvloJaPQ.mjs → effects-Dy661XS_.mjs} +3 -3
  20. package/dist/{effects-BvloJaPQ.mjs.map → effects-Dy661XS_.mjs.map} +1 -1
  21. package/dist/fonts/index.mjs +2 -2
  22. package/dist/{fonts-DpnBDAqM.mjs → fonts-BcFhAqqO.mjs} +2 -2
  23. package/dist/{fonts-DpnBDAqM.mjs.map → fonts-BcFhAqqO.mjs.map} +1 -1
  24. package/dist/{gpu-BvYDrqOC.mjs → gpu-zIhSz_0X.mjs} +2 -2
  25. package/dist/{gpu-BvYDrqOC.mjs.map → gpu-zIhSz_0X.mjs.map} +1 -1
  26. package/dist/{index-kj5uSzaI.d.mts → index-B1ENegOQ.d.mts} +204 -2
  27. package/dist/index-B1ENegOQ.d.mts.map +1 -0
  28. package/dist/{index-DsGBouQM.d.mts → index-CJRTBLZ4.d.mts} +4 -4
  29. package/dist/{index-DsGBouQM.d.mts.map → index-CJRTBLZ4.d.mts.map} +1 -1
  30. package/dist/{index-DcIR_DgU.d.mts → index-Cg30slle.d.mts} +2 -2
  31. package/dist/{index-DcIR_DgU.d.mts.map → index-Cg30slle.d.mts.map} +1 -1
  32. package/dist/{index-wUhS1_4W.d.mts → index-DeeMmoEA.d.mts} +2 -2
  33. package/dist/{index-wUhS1_4W.d.mts.map → index-DeeMmoEA.d.mts.map} +1 -1
  34. package/dist/{index-C541Ol1N.d.mts → index-ePGQ_C7f.d.mts} +39 -16
  35. package/dist/index-ePGQ_C7f.d.mts.map +1 -0
  36. package/dist/{index-C6ihzCpZ.d.mts → index-l1yRugLc.d.mts} +3 -3
  37. package/dist/{index-C6ihzCpZ.d.mts.map → index-l1yRugLc.d.mts.map} +1 -1
  38. package/dist/{index-BCzXnNpb.d.mts → index-uDZ9Yuv-.d.mts} +5 -8
  39. package/dist/index-uDZ9Yuv-.d.mts.map +1 -0
  40. package/dist/index.d.mts +11 -11
  41. package/dist/index.mjs +53 -53
  42. package/dist/preview/index.d.mts +3 -3
  43. package/dist/preview/index.mjs +10 -10
  44. package/dist/{preview-UMG4Colu.mjs → preview-IpdVFuxv.mjs} +3 -2
  45. package/dist/{preview-UMG4Colu.mjs.map → preview-IpdVFuxv.mjs.map} +1 -1
  46. package/dist/preview-engine/audio.mjs +1 -1
  47. package/dist/preview-engine/{chunk-RF62TV3G.mjs → chunk-25WRUINA.mjs} +1 -1
  48. package/dist/preview-engine/{chunk-MMVFX42U.mjs → chunk-2AEWPT6Y.mjs} +1 -1
  49. package/dist/preview-engine/{chunk-IIOHF7MH.mjs → chunk-2MDTUA3W.mjs} +1 -1
  50. package/dist/preview-engine/{chunk-KWTTANYN.mjs → chunk-2TLABBER.mjs} +1 -1
  51. package/dist/preview-engine/{chunk-MUOJMF7M.mjs → chunk-3QOJVABU.mjs} +1 -1
  52. package/dist/preview-engine/{chunk-RDEQ4LQU.mjs → chunk-4Q3ZUTQC.mjs} +1 -1
  53. package/dist/preview-engine/{chunk-OXXRKNHW.mjs → chunk-5BXCJ2QX.mjs} +1 -1
  54. package/dist/preview-engine/{chunk-JTT3YX7W.mjs → chunk-5R4UF7YK.mjs} +1 -1
  55. package/dist/preview-engine/{chunk-SVE3XWO7.mjs → chunk-6VDYWMP5.mjs} +1 -1
  56. package/dist/preview-engine/{chunk-ULPLHKM2.mjs → chunk-7B7QQDPZ.mjs} +1 -1
  57. package/dist/preview-engine/{chunk-ULVX4VYT.mjs → chunk-7ZA36EZE.mjs} +1 -1
  58. package/dist/preview-engine/{chunk-LYSU6S4O.mjs → chunk-AJ6BVUDB.mjs} +1 -1
  59. package/dist/preview-engine/{chunk-J24VHZS6.mjs → chunk-BDXGUSSF.mjs} +1 -1
  60. package/dist/preview-engine/{chunk-B7J72YSP.mjs → chunk-CC5V7UBF.mjs} +1 -1
  61. package/dist/preview-engine/{chunk-JD4TBC6Z.mjs → chunk-CP42LYD7.mjs} +1 -1
  62. package/dist/preview-engine/{chunk-LN3YAWUD.mjs → chunk-DJWDD3OE.mjs} +1 -1
  63. package/dist/preview-engine/{chunk-V3FODTPI.mjs → chunk-DZEWY4PR.mjs} +22 -22
  64. package/dist/preview-engine/{chunk-RKNV5N7D.mjs → chunk-ENGQ55LR.mjs} +1 -1
  65. package/dist/preview-engine/{chunk-NIILFJKE.mjs → chunk-FBXKVLTB.mjs} +14 -14
  66. package/dist/preview-engine/{chunk-MJCK5FLZ.mjs → chunk-FMEXTHL7.mjs} +1 -1
  67. package/dist/preview-engine/{chunk-UEQIO6AH.mjs → chunk-FQ7UCMWR.mjs} +1 -1
  68. package/dist/preview-engine/{chunk-TPFDAOW7.mjs → chunk-FRIBHQTM.mjs} +1 -1
  69. package/dist/preview-engine/chunk-FT7HJ6IE.mjs +3 -0
  70. package/dist/preview-engine/{chunk-YEPYVASB.mjs → chunk-G3UOUGIE.mjs} +1 -1
  71. package/dist/preview-engine/{chunk-4JX5LBE2.mjs → chunk-H4GDIVX4.mjs} +1 -1
  72. package/dist/preview-engine/{chunk-DDFWN7DI.mjs → chunk-I7QIQURU.mjs} +1 -1
  73. package/dist/preview-engine/{chunk-3KHD67Q3.mjs → chunk-ID344UBN.mjs} +1 -1
  74. package/dist/preview-engine/{chunk-5NT7WWJR.mjs → chunk-IGCXUGHT.mjs} +1 -1
  75. package/dist/preview-engine/{chunk-QPBTLJ5W.mjs → chunk-IK3YA6MC.mjs} +1 -1
  76. package/dist/preview-engine/chunk-J5SKQFJ6.mjs +1 -0
  77. package/dist/preview-engine/{chunk-Q7JN4EHX.mjs → chunk-JOPZNSZJ.mjs} +1 -1
  78. package/dist/preview-engine/{chunk-SQ52PBF3.mjs → chunk-JOSNIMFT.mjs} +1 -1
  79. package/dist/preview-engine/{chunk-SXNCNG4L.mjs → chunk-JR443L5E.mjs} +1 -1
  80. package/dist/preview-engine/{chunk-FZLKPBKS.mjs → chunk-KCAFMWDM.mjs} +1 -1
  81. package/dist/preview-engine/{chunk-QRYCB6E3.mjs → chunk-LAEPNVOE.mjs} +1 -1
  82. package/dist/preview-engine/chunk-MAALUQK3.mjs +1974 -0
  83. package/dist/preview-engine/chunk-MHCXSWK7.mjs +1 -0
  84. package/dist/preview-engine/{chunk-4INGTMZ5.mjs → chunk-MWBARRK2.mjs} +1 -1
  85. package/dist/preview-engine/{chunk-GQIRV466.mjs → chunk-MXPN2GB7.mjs} +1 -1
  86. package/dist/preview-engine/{chunk-W2EZFV4Q.mjs → chunk-NHYB5YC3.mjs} +1 -1
  87. package/dist/preview-engine/{chunk-22BLMBWX.mjs → chunk-PXSKIGAP.mjs} +6 -6
  88. package/dist/preview-engine/{chunk-SP22JWN2.mjs → chunk-PYM2FBFA.mjs} +1 -1
  89. package/dist/preview-engine/chunk-QDTJ4MOJ.mjs +1 -0
  90. package/dist/preview-engine/{chunk-6PMATELR.mjs → chunk-RQU2GFGH.mjs} +1 -1
  91. package/dist/preview-engine/{chunk-UQD2UE6I.mjs → chunk-RWDPBES3.mjs} +1 -1
  92. package/dist/preview-engine/{chunk-QVW5METG.mjs → chunk-S5ONWSZF.mjs} +1 -1
  93. package/dist/preview-engine/{chunk-2YGR5YCN.mjs → chunk-SIU6JU2R.mjs} +1 -1
  94. package/dist/preview-engine/{chunk-NQZRPPUU.mjs → chunk-SJ3Q4AQP.mjs} +1 -1
  95. package/dist/preview-engine/chunk-TEBZRQPG.mjs +1 -0
  96. package/dist/preview-engine/{chunk-WDWHOXSA.mjs → chunk-UUDML2SN.mjs} +1 -1
  97. package/dist/preview-engine/{chunk-RHXZXWJ4.mjs → chunk-VAS4IJZR.mjs} +1 -1
  98. package/dist/preview-engine/{chunk-DOCFOSA6.mjs → chunk-WTDK6H46.mjs} +1 -1
  99. package/dist/preview-engine/chunk-XNMEVVQB.mjs +1 -0
  100. package/dist/preview-engine/{chunk-AKT4YQWL.mjs → chunk-YVGT4NK6.mjs} +2 -2
  101. package/dist/preview-engine/chunk-ZYTXBBIX.mjs +1 -0
  102. package/dist/preview-engine/components.mjs +1 -1
  103. package/dist/preview-engine/effects.mjs +1 -1
  104. package/dist/preview-engine/framefields.mjs +1 -1
  105. package/dist/preview-engine/player.mjs +2 -2
  106. package/dist/preview-engine/{renderers-FC7G7KU7.mjs → renderers-2AKYMAIK.mjs} +1 -1
  107. package/dist/preview-engine/renderers-363CKEIG.mjs +1 -0
  108. package/dist/preview-engine/{renderers-EJGF3PYQ.mjs → renderers-36L24ZVS.mjs} +1 -1
  109. package/dist/preview-engine/renderers-3FMMVDMA.mjs +1 -0
  110. package/dist/preview-engine/{renderers-56TGEFDK.mjs → renderers-44AANAXR.mjs} +1 -1
  111. package/dist/preview-engine/renderers-4UUU62VV.mjs +1 -0
  112. package/dist/preview-engine/renderers-4ZTZFSAR.mjs +1 -0
  113. package/dist/preview-engine/{renderers-PYDOSDEY.mjs → renderers-5ZSB75GY.mjs} +1 -1
  114. package/dist/preview-engine/renderers-6KDD75BM.mjs +1 -0
  115. package/dist/preview-engine/renderers-7BJRD4G2.mjs +1 -0
  116. package/dist/preview-engine/{renderers-HBIBRZD7.mjs → renderers-AIIHGDJM.mjs} +1 -1
  117. package/dist/preview-engine/{renderers-P2FTCDZ7.mjs → renderers-AU746ORP.mjs} +1 -1
  118. package/dist/preview-engine/renderers-BIF2BETK.mjs +1 -0
  119. package/dist/preview-engine/{renderers-FD3ZT73R.mjs → renderers-BTQCHVHV.mjs} +1 -1
  120. package/dist/preview-engine/{renderers-HMNCIEU3.mjs → renderers-CFHBOAZG.mjs} +1 -1
  121. package/dist/preview-engine/renderers-CU5RW5UA.mjs +1 -0
  122. package/dist/preview-engine/renderers-DK5OBTKE.mjs +1 -0
  123. package/dist/preview-engine/renderers-EAKCDGTY.mjs +1 -0
  124. package/dist/preview-engine/{renderers-FYI6QNUH.mjs → renderers-EGBGC7MU.mjs} +1 -1
  125. package/dist/preview-engine/renderers-EVXCU7G7.mjs +1 -0
  126. package/dist/preview-engine/renderers-EXEYEH3F.mjs +1 -0
  127. package/dist/preview-engine/{renderers-RDHHVXRE.mjs → renderers-EXJDPS3T.mjs} +1 -1
  128. package/dist/preview-engine/renderers-F3WALPWI.mjs +1 -0
  129. package/dist/preview-engine/{renderers-4RVSLTCX.mjs → renderers-FS3EOB4J.mjs} +1 -1
  130. package/dist/preview-engine/{renderers-C3YXNKNM.mjs → renderers-GUL2MXDD.mjs} +1 -1
  131. package/dist/preview-engine/{renderers-EQDINUMT.mjs → renderers-H4HC44B5.mjs} +1 -1
  132. package/dist/preview-engine/renderers-H6565HO4.mjs +1 -0
  133. package/dist/preview-engine/renderers-HT5V6OZ2.mjs +1 -0
  134. package/dist/preview-engine/renderers-HXMOARWO.mjs +1 -0
  135. package/dist/preview-engine/renderers-HZ2Q7BGK.mjs +1 -0
  136. package/dist/preview-engine/renderers-I4N2K2KW.mjs +1 -0
  137. package/dist/preview-engine/renderers-I5J7U6CB.mjs +1 -0
  138. package/dist/preview-engine/renderers-IZV6QXR5.mjs +1 -0
  139. package/dist/preview-engine/renderers-JWGAPHWX.mjs +1 -0
  140. package/dist/preview-engine/renderers-KNDSVQTY.mjs +1 -0
  141. package/dist/preview-engine/renderers-KNDUOO6M.mjs +1 -0
  142. package/dist/preview-engine/renderers-KQAO3QEI.mjs +1 -0
  143. package/dist/preview-engine/{renderers-7SW2AHM2.mjs → renderers-LCSQLXRD.mjs} +1 -1
  144. package/dist/preview-engine/renderers-M34LOEHC.mjs +1 -0
  145. package/dist/preview-engine/renderers-ML6GNCWB.mjs +1 -0
  146. package/dist/preview-engine/renderers-NARG274F.mjs +1 -0
  147. package/dist/preview-engine/renderers-NCFPOSWR.mjs +1 -0
  148. package/dist/preview-engine/{renderers-ZAMSS7QN.mjs → renderers-PCOTECQB.mjs} +1 -1
  149. package/dist/preview-engine/renderers-PG5JHI2S.mjs +1 -0
  150. package/dist/preview-engine/{renderers-LTV5RFDJ.mjs → renderers-Q7MNLQJF.mjs} +1 -1
  151. package/dist/preview-engine/{renderers-GHP7SL5M.mjs → renderers-QXVSJYZL.mjs} +1 -1
  152. package/dist/preview-engine/{renderers-H2UI7YEO.mjs → renderers-R3ERZ3ZY.mjs} +1 -1
  153. package/dist/preview-engine/renderers-RXQKV65L.mjs +1 -0
  154. package/dist/preview-engine/renderers-SA73GD2B.mjs +1 -0
  155. package/dist/preview-engine/renderers-SLIXUHNX.mjs +1 -0
  156. package/dist/preview-engine/renderers-T462JZNA.mjs +1 -0
  157. package/dist/preview-engine/{renderers-LV6LLULR.mjs → renderers-TH2XZAYW.mjs} +1 -1
  158. package/dist/preview-engine/{renderers-ART3EGSZ.mjs → renderers-UHZIERVH.mjs} +1 -1
  159. package/dist/preview-engine/renderers-V7CFVGYK.mjs +1 -0
  160. package/dist/preview-engine/renderers-VY5E7BPK.mjs +1 -0
  161. package/dist/preview-engine/{renderers-ZDMDDWLN.mjs → renderers-WKXGELRG.mjs} +1 -1
  162. package/dist/preview-engine/{renderers-GY4R467B.mjs → renderers-WLDIIFR5.mjs} +1 -1
  163. package/dist/preview-engine/{renderers-NTKSN32T.mjs → renderers-WM6WBRH6.mjs} +1 -1
  164. package/dist/preview-engine/renderers-WT5FQZM7.mjs +228 -0
  165. package/dist/preview-engine/{renderers-YK74777T.mjs → renderers-WTKRLNNR.mjs} +1 -1
  166. package/dist/preview-engine/{renderers-BWRNCXR6.mjs → renderers-X6GKEVP7.mjs} +1 -1
  167. package/dist/preview-engine/renderers-Y47N5EYR.mjs +1 -0
  168. package/dist/preview-engine/renderers-Y4CUVZYI.mjs +1 -0
  169. package/dist/preview-engine/renderers-Y6YC7ZAK.mjs +1 -0
  170. package/dist/preview-engine/renderers-Y6ZYUAQG.mjs +1 -0
  171. package/dist/preview-engine/{renderers-YBTWN76S.mjs → renderers-YRWXYT5A.mjs} +1 -1
  172. package/dist/preview-engine/{renderers-SY435YU3.mjs → renderers-YWC4MXPG.mjs} +1 -1
  173. package/dist/preview-engine/{renderers-7GMW52G3.mjs → renderers-ZWNPYZN6.mjs} +1 -1
  174. package/dist/preview-engine/signals.mjs +1 -1
  175. package/dist/{program-B6YvXPhj.mjs → program-KPBfq9tw.mjs} +84 -15
  176. package/dist/program-KPBfq9tw.mjs.map +1 -0
  177. package/dist/registry/index.json +1 -1
  178. package/dist/registry/lower-third.json +1 -1
  179. package/dist/registry/text-reveal.json +2 -2
  180. package/dist/registry/title-card.json +1 -1
  181. package/dist/renderer/index.d.mts +2 -2
  182. package/dist/renderer/index.mjs +2 -2
  183. package/dist/{renderer-DFGSy_ay.mjs → renderer-1-FLx8kd.mjs} +3 -3
  184. package/dist/{renderer-DFGSy_ay.mjs.map → renderer-1-FLx8kd.mjs.map} +1 -1
  185. package/dist/{renderer-Ck74BZ_L.mjs → renderer-47d3etrX.mjs} +4 -4
  186. package/dist/{renderer-Ck74BZ_L.mjs.map → renderer-47d3etrX.mjs.map} +1 -1
  187. package/dist/{renderer-Cs8Od5S8.mjs → renderer-6GCG6JxD.mjs} +3 -3
  188. package/dist/{renderer-Cs8Od5S8.mjs.map → renderer-6GCG6JxD.mjs.map} +1 -1
  189. package/dist/{renderer-BLn9MrDC.mjs → renderer-8BIDdgjt.mjs} +3 -3
  190. package/dist/{renderer-BLn9MrDC.mjs.map → renderer-8BIDdgjt.mjs.map} +1 -1
  191. package/dist/renderer-B-5TlncB.mjs +5 -0
  192. package/dist/{renderer-CkbIz6M-.mjs → renderer-B1yzSbvC.mjs} +4 -4
  193. package/dist/{renderer-CkbIz6M-.mjs.map → renderer-B1yzSbvC.mjs.map} +1 -1
  194. package/dist/{renderer-BYNbtv_d.mjs → renderer-B2YiXpp-.mjs} +2 -2
  195. package/dist/{renderer-BYNbtv_d.mjs.map → renderer-B2YiXpp-.mjs.map} +1 -1
  196. package/dist/{renderer-DXfYdQ2o.mjs → renderer-B55ljMI_.mjs} +2 -2
  197. package/dist/{renderer-DXfYdQ2o.mjs.map → renderer-B55ljMI_.mjs.map} +1 -1
  198. package/dist/{renderer-CopRZnwp.mjs → renderer-B6Tg4UgH.mjs} +4 -4
  199. package/dist/{renderer-CopRZnwp.mjs.map → renderer-B6Tg4UgH.mjs.map} +1 -1
  200. package/dist/{renderer-CuQceSLi.mjs → renderer-BFnf-8Yt.mjs} +3 -3
  201. package/dist/{renderer-CuQceSLi.mjs.map → renderer-BFnf-8Yt.mjs.map} +1 -1
  202. package/dist/{renderer-BmarvBo8.mjs → renderer-BGHHoPiD.mjs} +2 -2
  203. package/dist/{renderer-CLvXiFPk.mjs → renderer-BHUjPi24.mjs} +2 -2
  204. package/dist/{renderer-CLvXiFPk.mjs.map → renderer-BHUjPi24.mjs.map} +1 -1
  205. package/dist/renderer-BHXtDg5_.mjs +3 -0
  206. package/dist/{renderer-CTQTbvWR.mjs → renderer-BIk67-jU.mjs} +2 -2
  207. package/dist/{renderer-CTQTbvWR.mjs.map → renderer-BIk67-jU.mjs.map} +1 -1
  208. package/dist/{renderer-BHjw4EdY.d.mts → renderer-BLEmr0Lt.d.mts} +2 -2
  209. package/dist/{renderer-BHjw4EdY.d.mts.map → renderer-BLEmr0Lt.d.mts.map} +1 -1
  210. package/dist/{renderer-BcH6-FsA.mjs → renderer-BLs5sDdk.mjs} +3 -3
  211. package/dist/{renderer-BcH6-FsA.mjs.map → renderer-BLs5sDdk.mjs.map} +1 -1
  212. package/dist/renderer-BPd3gvEt.mjs +5 -0
  213. package/dist/{renderer-Hs9t2qY-.mjs → renderer-BXul0Wy6.mjs} +3 -3
  214. package/dist/{renderer-Hs9t2qY-.mjs.map → renderer-BXul0Wy6.mjs.map} +1 -1
  215. package/dist/{renderer-BX2tt7zA.mjs → renderer-B_1SLBPa.mjs} +3 -3
  216. package/dist/{renderer-BX2tt7zA.mjs.map → renderer-B_1SLBPa.mjs.map} +1 -1
  217. package/dist/renderer-B_ep98BH.mjs +5 -0
  218. package/dist/renderer-Ba_KUbKW.mjs +5 -0
  219. package/dist/{renderer-v779MqRx.mjs → renderer-BbyNUjE_.mjs} +3 -3
  220. package/dist/{renderer-v779MqRx.mjs.map → renderer-BbyNUjE_.mjs.map} +1 -1
  221. package/dist/{renderer-rLhze-dj.mjs → renderer-BcVr_cIk.mjs} +2 -2
  222. package/dist/{renderer-rLhze-dj.mjs.map → renderer-BcVr_cIk.mjs.map} +1 -1
  223. package/dist/renderer-BeL2hstU.mjs +5 -0
  224. package/dist/renderer-Bj81osPQ.mjs +5 -0
  225. package/dist/{renderer-Cy_rrWEC.mjs → renderer-BjL7sKGU.mjs} +3 -3
  226. package/dist/{renderer-Cy_rrWEC.mjs.map → renderer-BjL7sKGU.mjs.map} +1 -1
  227. package/dist/{renderer-BZ9zGp0Z.mjs → renderer-BjNcuJ4H.mjs} +3 -3
  228. package/dist/{renderer-BZ9zGp0Z.mjs.map → renderer-BjNcuJ4H.mjs.map} +1 -1
  229. package/dist/{renderer-Da5Xcwx5.mjs → renderer-Br8aDmf0.mjs} +2 -2
  230. package/dist/renderer-BvZQngSm.mjs +5 -0
  231. package/dist/renderer-BxgN8oXx.mjs +5 -0
  232. package/dist/{renderer-CptS_UFe.mjs → renderer-ByOvGGzp.mjs} +3 -3
  233. package/dist/{renderer-CptS_UFe.mjs.map → renderer-ByOvGGzp.mjs.map} +1 -1
  234. package/dist/{renderer-C3gJco03.mjs → renderer-C11qLlrz.mjs} +3 -3
  235. package/dist/{renderer-C3gJco03.mjs.map → renderer-C11qLlrz.mjs.map} +1 -1
  236. package/dist/{renderer-D4KKtfTl.mjs → renderer-C5dyPQjG.mjs} +3 -3
  237. package/dist/{renderer-D4KKtfTl.mjs.map → renderer-C5dyPQjG.mjs.map} +1 -1
  238. package/dist/renderer-C5jDrTBc.mjs +5 -0
  239. package/dist/{renderer-Dk88a53K.mjs → renderer-C6TbU8U5.mjs} +3 -3
  240. package/dist/{renderer-Dk88a53K.mjs.map → renderer-C6TbU8U5.mjs.map} +1 -1
  241. package/dist/{renderer-DKkXBsVx.mjs → renderer-C9bcEaBE.mjs} +3 -3
  242. package/dist/{renderer-DKkXBsVx.mjs.map → renderer-C9bcEaBE.mjs.map} +1 -1
  243. package/dist/{renderer-COAYUhv2.mjs → renderer-CAH00Lub.mjs} +2 -2
  244. package/dist/{renderer-GNgSEbBu.mjs → renderer-CAhsBEpU.mjs} +2 -2
  245. package/dist/{renderer-GNgSEbBu.mjs.map → renderer-CAhsBEpU.mjs.map} +1 -1
  246. package/dist/renderer-CBK4M82Y.mjs +5 -0
  247. package/dist/{renderer-876_ArdD.mjs → renderer-CCH0gSF7.mjs} +3 -3
  248. package/dist/{renderer-876_ArdD.mjs.map → renderer-CCH0gSF7.mjs.map} +1 -1
  249. package/dist/{renderer-DNNxsVQh.mjs → renderer-CCbOp0BM.mjs} +3 -3
  250. package/dist/{renderer-DNNxsVQh.mjs.map → renderer-CCbOp0BM.mjs.map} +1 -1
  251. package/dist/{renderer-UPRkHFPp.mjs → renderer-CEb5GjcU.mjs} +3 -3
  252. package/dist/{renderer-UPRkHFPp.mjs.map → renderer-CEb5GjcU.mjs.map} +1 -1
  253. package/dist/{renderer-Cwhm9oQe.mjs → renderer-CIL9zh-a.mjs} +3 -3
  254. package/dist/{renderer-Cwhm9oQe.mjs.map → renderer-CIL9zh-a.mjs.map} +1 -1
  255. package/dist/{renderer-URxsYx_I.mjs → renderer-CIbXIFOb.mjs} +4 -4
  256. package/dist/{renderer-URxsYx_I.mjs.map → renderer-CIbXIFOb.mjs.map} +1 -1
  257. package/dist/renderer-CLHtCctc.mjs +5 -0
  258. package/dist/{renderer-Q6A9dB56.mjs → renderer-CLX33fIK.mjs} +3 -3
  259. package/dist/{renderer-Q6A9dB56.mjs.map → renderer-CLX33fIK.mjs.map} +1 -1
  260. package/dist/{renderer-DJJXvO27.mjs → renderer-CLXpWDqx.mjs} +2 -2
  261. package/dist/{renderer-DJJXvO27.mjs.map → renderer-CLXpWDqx.mjs.map} +1 -1
  262. package/dist/renderer-CLin7MNN.mjs +5 -0
  263. package/dist/{renderer-BBnurLTw.mjs → renderer-CLypsmiH.mjs} +3 -3
  264. package/dist/{renderer-BBnurLTw.mjs.map → renderer-CLypsmiH.mjs.map} +1 -1
  265. package/dist/renderer-CN7TypOB.mjs +5 -0
  266. package/dist/renderer-CV5Jfwq7.mjs +5 -0
  267. package/dist/renderer-Ca5E46WK.mjs +5 -0
  268. package/dist/renderer-CdbOtoOU.mjs +5 -0
  269. package/dist/renderer-CeD_bqWj.mjs +5 -0
  270. package/dist/{renderer-nIKvk_ij.mjs → renderer-CfEuoZ7b.mjs} +3 -3
  271. package/dist/{renderer-nIKvk_ij.mjs.map → renderer-CfEuoZ7b.mjs.map} +1 -1
  272. package/dist/renderer-CfzNNUOd.mjs +5 -0
  273. package/dist/{renderer-I-KtRtuL.mjs → renderer-Cg3h0Mz9.mjs} +3 -3
  274. package/dist/{renderer-I-KtRtuL.mjs.map → renderer-Cg3h0Mz9.mjs.map} +1 -1
  275. package/dist/renderer-Cl8TmdU8.mjs +5 -0
  276. package/dist/{renderer-CW05KUXE.mjs → renderer-ClHqvIps.mjs} +10 -10
  277. package/dist/renderer-ClHqvIps.mjs.map +1 -0
  278. package/dist/renderer-CosBP_IM.mjs +5 -0
  279. package/dist/renderer-CpwVs5Fh.mjs +5 -0
  280. package/dist/renderer-Cq7baxNb.mjs +5 -0
  281. package/dist/{renderer-PTV0M2HP.mjs → renderer-CqMz_iXy.mjs} +2 -2
  282. package/dist/{renderer-PTV0M2HP.mjs.map → renderer-CqMz_iXy.mjs.map} +1 -1
  283. package/dist/{renderer-DGUL7JlO.mjs → renderer-CqSmfrE1.mjs} +3 -3
  284. package/dist/{renderer-DGUL7JlO.mjs.map → renderer-CqSmfrE1.mjs.map} +1 -1
  285. package/dist/{renderer-D1fjdDVu.d.mts → renderer-CrhJJKFY.d.mts} +5 -3
  286. package/dist/renderer-CrhJJKFY.d.mts.map +1 -0
  287. package/dist/{renderer-sQjiRkiF.mjs → renderer-CxxwhUwy.mjs} +3 -3
  288. package/dist/{renderer-sQjiRkiF.mjs.map → renderer-CxxwhUwy.mjs.map} +1 -1
  289. package/dist/{renderer-BsSZdDHQ.mjs → renderer-D24aiXmB.mjs} +3 -3
  290. package/dist/{renderer-BsSZdDHQ.mjs.map → renderer-D24aiXmB.mjs.map} +1 -1
  291. package/dist/renderer-D6GkxwAx.mjs +5 -0
  292. package/dist/renderer-D7SfGdzX.mjs +5 -0
  293. package/dist/renderer-D7wt09_l.mjs +5 -0
  294. package/dist/{renderer-BHJzeFp9.mjs → renderer-DBslE7fc.mjs} +2 -2
  295. package/dist/{renderer-BHJzeFp9.mjs.map → renderer-DBslE7fc.mjs.map} +1 -1
  296. package/dist/{renderer-DfQWeysg.mjs → renderer-DE3Ki96C.mjs} +3 -3
  297. package/dist/{renderer-DfQWeysg.mjs.map → renderer-DE3Ki96C.mjs.map} +1 -1
  298. package/dist/{renderer-C6YcfNbV.mjs → renderer-DJCqc98W.mjs} +3 -3
  299. package/dist/{renderer-C6YcfNbV.mjs.map → renderer-DJCqc98W.mjs.map} +1 -1
  300. package/dist/{renderer-CdxHmvvf.mjs → renderer-DODOyrty.mjs} +3 -3
  301. package/dist/{renderer-CdxHmvvf.mjs.map → renderer-DODOyrty.mjs.map} +1 -1
  302. package/dist/{renderer-B51lS0Zb.mjs → renderer-DRYxcfgi.mjs} +2 -2
  303. package/dist/renderer-DSuDMYqY.mjs +5 -0
  304. package/dist/{renderer-BfYAlY63.mjs → renderer-DYreml_A.mjs} +3 -3
  305. package/dist/{renderer-BfYAlY63.mjs.map → renderer-DYreml_A.mjs.map} +1 -1
  306. package/dist/{renderer-Byp6c5Y4.mjs → renderer-DZJnNISO.mjs} +2 -2
  307. package/dist/{renderer-Byp6c5Y4.mjs.map → renderer-DZJnNISO.mjs.map} +1 -1
  308. package/dist/renderer-DaIstCIs.mjs +5 -0
  309. package/dist/renderer-DbOD3Nc0.mjs +5 -0
  310. package/dist/{renderer-Bpm12fcQ.mjs → renderer-DbenSRjl.mjs} +3 -3
  311. package/dist/{renderer-Bpm12fcQ.mjs.map → renderer-DbenSRjl.mjs.map} +1 -1
  312. package/dist/{renderer-56T9Wf1N.mjs → renderer-DcXxkxds.mjs} +75 -72
  313. package/dist/renderer-DcXxkxds.mjs.map +1 -0
  314. package/dist/renderer-DdRCA1bn.mjs +6 -0
  315. package/dist/{renderer-15a6H6Yg.mjs → renderer-DdUtL-qF.mjs} +3 -3
  316. package/dist/{renderer-15a6H6Yg.mjs.map → renderer-DdUtL-qF.mjs.map} +1 -1
  317. package/dist/renderer-DfO37haf.mjs +5 -0
  318. package/dist/renderer-DjZwzxZ7.mjs +5 -0
  319. package/dist/renderer-DnAvySNy.mjs +5 -0
  320. package/dist/{renderer-IP6Iy2RQ.mjs → renderer-DnbY04Qk.mjs} +3 -3
  321. package/dist/{renderer-IP6Iy2RQ.mjs.map → renderer-DnbY04Qk.mjs.map} +1 -1
  322. package/dist/renderer-DnvEPm5E.mjs +5 -0
  323. package/dist/{renderer-HW-6FmmO.mjs → renderer-Do9mW_-B.mjs} +3 -3
  324. package/dist/{renderer-HW-6FmmO.mjs.map → renderer-Do9mW_-B.mjs.map} +1 -1
  325. package/dist/{renderer-DlboTFM8.mjs → renderer-Dqg8qxjq.mjs} +3 -3
  326. package/dist/{renderer-DlboTFM8.mjs.map → renderer-Dqg8qxjq.mjs.map} +1 -1
  327. package/dist/{renderer-BfuMCx2c.mjs → renderer-DvkRbmb2.mjs} +3 -3
  328. package/dist/{renderer-BfuMCx2c.mjs.map → renderer-DvkRbmb2.mjs.map} +1 -1
  329. package/dist/renderer-DwNpKnWf.mjs +5 -0
  330. package/dist/{renderer-Djpx4utT.mjs → renderer-Dw_xy3zx.mjs} +3 -3
  331. package/dist/{renderer-Djpx4utT.mjs.map → renderer-Dw_xy3zx.mjs.map} +1 -1
  332. package/dist/renderer-Dx3Dghus.mjs +5 -0
  333. package/dist/{renderer-SPq9BbnG.mjs → renderer-DyrNti45.mjs} +3 -3
  334. package/dist/{renderer-SPq9BbnG.mjs.map → renderer-DyrNti45.mjs.map} +1 -1
  335. package/dist/renderer-KvaoEwIk.mjs +5 -0
  336. package/dist/{renderer-BxtbwOSp.mjs → renderer-SwUFJ4aA.mjs} +3 -3
  337. package/dist/{renderer-BxtbwOSp.mjs.map → renderer-SwUFJ4aA.mjs.map} +1 -1
  338. package/dist/{renderer-DF_TswHB.mjs → renderer-XEoQnDs5.mjs} +3 -3
  339. package/dist/{renderer-DF_TswHB.mjs.map → renderer-XEoQnDs5.mjs.map} +1 -1
  340. package/dist/{renderer-QYjSQL80.mjs → renderer-Xw9Zn3pD.mjs} +2 -2
  341. package/dist/{renderer-QYjSQL80.mjs.map → renderer-Xw9Zn3pD.mjs.map} +1 -1
  342. package/dist/{renderer-XU08U1If.mjs → renderer-ZWIDTOLV.mjs} +2 -2
  343. package/dist/{renderer-XU08U1If.mjs.map → renderer-ZWIDTOLV.mjs.map} +1 -1
  344. package/dist/{renderer-8ZxKRprN.mjs → renderer-bGhRdKB7.mjs} +2 -2
  345. package/dist/{renderer-8ZxKRprN.mjs.map → renderer-bGhRdKB7.mjs.map} +1 -1
  346. package/dist/{renderer-DUx7rcc5.mjs → renderer-d4weUlVq.mjs} +2 -2
  347. package/dist/{renderer-DUx7rcc5.mjs.map → renderer-d4weUlVq.mjs.map} +1 -1
  348. package/dist/{renderer-Bf0Bhqot.mjs → renderer-g7CMgD1v.mjs} +3 -3
  349. package/dist/{renderer-Bf0Bhqot.mjs.map → renderer-g7CMgD1v.mjs.map} +1 -1
  350. package/dist/{renderer-BUj6OsWX.mjs → renderer-gjLFqdv-.mjs} +4 -4
  351. package/dist/{renderer-BUj6OsWX.mjs.map → renderer-gjLFqdv-.mjs.map} +1 -1
  352. package/dist/{renderer-DLpjygMO.mjs → renderer-gv0u9XmU.mjs} +3 -3
  353. package/dist/{renderer-DLpjygMO.mjs.map → renderer-gv0u9XmU.mjs.map} +1 -1
  354. package/dist/{renderer-KS_JYan2.mjs → renderer-jJWwrha1.mjs} +3 -3
  355. package/dist/{renderer-KS_JYan2.mjs.map → renderer-jJWwrha1.mjs.map} +1 -1
  356. package/dist/{renderer-C7BxBoHC.mjs → renderer-kl_pAczD.mjs} +3 -3
  357. package/dist/{renderer-C7BxBoHC.mjs.map → renderer-kl_pAczD.mjs.map} +1 -1
  358. package/dist/{renderer-Bxs9zUIN.mjs → renderer-lrKwPhZi.mjs} +2 -2
  359. package/dist/{renderer-Bxs9zUIN.mjs.map → renderer-lrKwPhZi.mjs.map} +1 -1
  360. package/dist/{renderer-DJy8V_nb.mjs → renderer-pnYj1REL.mjs} +3 -3
  361. package/dist/{renderer-DJy8V_nb.mjs.map → renderer-pnYj1REL.mjs.map} +1 -1
  362. package/dist/{renderers-CP8CFWDs-CPfe6IN0.mjs → renderers-CP8CFWDs-CDikhBRO.mjs} +3 -3
  363. package/dist/{renderers-CP8CFWDs-CPfe6IN0.mjs.map → renderers-CP8CFWDs-CDikhBRO.mjs.map} +1 -1
  364. package/dist/signals/index.d.mts +5 -5
  365. package/dist/signals/index.mjs +6 -6
  366. package/dist/{signals-BRgYyspQ.mjs → signals-BeAWA_1Y.mjs} +3 -3
  367. package/dist/{signals-BRgYyspQ.mjs.map → signals-BeAWA_1Y.mjs.map} +1 -1
  368. package/dist/{src-Be7rjknf.mjs → src-LYcH_X8o.mjs} +233 -27
  369. package/dist/src-LYcH_X8o.mjs.map +1 -0
  370. package/package.json +58 -58
  371. package/dist/dist-CL5JOMSp.mjs.map +0 -1
  372. package/dist/dist-CSU_2yUb.mjs.map +0 -1
  373. package/dist/index-BCzXnNpb.d.mts.map +0 -1
  374. package/dist/index-C541Ol1N.d.mts.map +0 -1
  375. package/dist/index-kj5uSzaI.d.mts.map +0 -1
  376. package/dist/preview-engine/chunk-3SR6BI4B.mjs +0 -1
  377. package/dist/preview-engine/chunk-ALSOO22Q.mjs +0 -1
  378. package/dist/preview-engine/chunk-NKGXINCU.mjs +0 -1
  379. package/dist/preview-engine/chunk-PJMX2GFY.mjs +0 -1
  380. package/dist/preview-engine/chunk-SIXIF5QZ.mjs +0 -3
  381. package/dist/preview-engine/chunk-TXX2POD2.mjs +0 -1974
  382. package/dist/preview-engine/renderers-3HFRWF2G.mjs +0 -1
  383. package/dist/preview-engine/renderers-4CRXZJ5G.mjs +0 -1
  384. package/dist/preview-engine/renderers-5QF4OLFQ.mjs +0 -1
  385. package/dist/preview-engine/renderers-5SOW6OVE.mjs +0 -1
  386. package/dist/preview-engine/renderers-6M2HPY2J.mjs +0 -1
  387. package/dist/preview-engine/renderers-7HT5NW7W.mjs +0 -1
  388. package/dist/preview-engine/renderers-ATTGUTYY.mjs +0 -1
  389. package/dist/preview-engine/renderers-AYWCRBQC.mjs +0 -1
  390. package/dist/preview-engine/renderers-BA6ZCPI5.mjs +0 -1
  391. package/dist/preview-engine/renderers-BAS7RXTC.mjs +0 -1
  392. package/dist/preview-engine/renderers-CZTCW4FC.mjs +0 -1
  393. package/dist/preview-engine/renderers-D2XEQ2YY.mjs +0 -1
  394. package/dist/preview-engine/renderers-DFIJYBW2.mjs +0 -1
  395. package/dist/preview-engine/renderers-EJN6M6DO.mjs +0 -1
  396. package/dist/preview-engine/renderers-EK3HQUUF.mjs +0 -1
  397. package/dist/preview-engine/renderers-G34C5J27.mjs +0 -1
  398. package/dist/preview-engine/renderers-GKVTNDVH.mjs +0 -1
  399. package/dist/preview-engine/renderers-HZBYQKIQ.mjs +0 -1
  400. package/dist/preview-engine/renderers-IK7ZJJKJ.mjs +0 -1
  401. package/dist/preview-engine/renderers-ISASPH6T.mjs +0 -1
  402. package/dist/preview-engine/renderers-IW5MWDBI.mjs +0 -1
  403. package/dist/preview-engine/renderers-JBRPKCKF.mjs +0 -228
  404. package/dist/preview-engine/renderers-K2PI4WJS.mjs +0 -1
  405. package/dist/preview-engine/renderers-KESHVFL2.mjs +0 -1
  406. package/dist/preview-engine/renderers-KTZZVAB2.mjs +0 -1
  407. package/dist/preview-engine/renderers-KY5CJEOV.mjs +0 -1
  408. package/dist/preview-engine/renderers-M5W6SUQD.mjs +0 -1
  409. package/dist/preview-engine/renderers-MEM3REMI.mjs +0 -1
  410. package/dist/preview-engine/renderers-O5XMWFPY.mjs +0 -1
  411. package/dist/preview-engine/renderers-QJA35PKC.mjs +0 -1
  412. package/dist/preview-engine/renderers-TJIFTQHV.mjs +0 -1
  413. package/dist/preview-engine/renderers-TN4XN436.mjs +0 -1
  414. package/dist/preview-engine/renderers-UDYLCYCB.mjs +0 -1
  415. package/dist/preview-engine/renderers-WZ7SFIBZ.mjs +0 -1
  416. package/dist/preview-engine/renderers-X6QNDC6R.mjs +0 -1
  417. package/dist/preview-engine/renderers-X6RNTJOV.mjs +0 -1
  418. package/dist/preview-engine/renderers-Y3N7236P.mjs +0 -1
  419. package/dist/preview-engine/renderers-YP3ASXIJ.mjs +0 -1
  420. package/dist/preview-engine/renderers-YVJAG3PD.mjs +0 -1
  421. package/dist/preview-engine/renderers-ZPPZNMKJ.mjs +0 -1
  422. package/dist/program-B6YvXPhj.mjs.map +0 -1
  423. package/dist/renderer-1qAST5qk.mjs +0 -5
  424. package/dist/renderer-2dntY9lQ.mjs +0 -5
  425. package/dist/renderer-56T9Wf1N.mjs.map +0 -1
  426. package/dist/renderer-83Knj3DI.mjs +0 -5
  427. package/dist/renderer-B2GWXOwP.mjs +0 -5
  428. package/dist/renderer-B3LlOjNo.mjs +0 -5
  429. package/dist/renderer-B5cPLblQ.mjs +0 -5
  430. package/dist/renderer-B7uorwdR.mjs +0 -5
  431. package/dist/renderer-BJ6LDZlX.mjs +0 -5
  432. package/dist/renderer-BaQC4ylR.mjs +0 -5
  433. package/dist/renderer-BfQzj_uW.mjs +0 -5
  434. package/dist/renderer-Bl9uy1ra.mjs +0 -6
  435. package/dist/renderer-Bu4FyXDo.mjs +0 -5
  436. package/dist/renderer-BxbJwS3T.mjs +0 -5
  437. package/dist/renderer-C51hhQ7B.mjs +0 -5
  438. package/dist/renderer-C8ZShnSH.mjs +0 -5
  439. package/dist/renderer-CQh1RgN8.mjs +0 -5
  440. package/dist/renderer-CRYaMhGd.mjs +0 -5
  441. package/dist/renderer-CULThR_r.mjs +0 -5
  442. package/dist/renderer-CW05KUXE.mjs.map +0 -1
  443. package/dist/renderer-C_KDGeMJ.mjs +0 -5
  444. package/dist/renderer-Ce4Gam_S.mjs +0 -5
  445. package/dist/renderer-CkZ6xcN6.mjs +0 -5
  446. package/dist/renderer-Co4C29rw.mjs +0 -5
  447. package/dist/renderer-CyReVcsb.mjs +0 -3
  448. package/dist/renderer-CzgPat6y.mjs +0 -5
  449. package/dist/renderer-D-pFBDki.mjs +0 -5
  450. package/dist/renderer-D1fjdDVu.d.mts.map +0 -1
  451. package/dist/renderer-DELCePyB.mjs +0 -5
  452. package/dist/renderer-DWijRKGh.mjs +0 -5
  453. package/dist/renderer-Di-PH-vG.mjs +0 -5
  454. package/dist/renderer-Dn9CR9KL.mjs +0 -5
  455. package/dist/renderer-ICmKc1Bq.mjs +0 -5
  456. package/dist/renderer-IR3rE4TW.mjs +0 -5
  457. package/dist/renderer-Qyc4xLZY.mjs +0 -5
  458. package/dist/renderer-Riuen1UO.mjs +0 -5
  459. package/dist/renderer-YKJt5oPu.mjs +0 -5
  460. package/dist/renderer-asS1sOXb.mjs +0 -5
  461. package/dist/renderer-mAQErqBN.mjs +0 -5
  462. package/dist/renderer-pZazoCK-.mjs +0 -5
  463. package/dist/src-Be7rjknf.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-C7BxBoHC.mjs","names":[],"sources":["../../../nodes/node-camera-parallax-3d/dist/renderers-3w0EgvnV.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveSignalField } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst CAMERA_PARALLAX_SHADER = `\nstruct CameraParallaxUniforms {\n // vec4 0\n motionPreset : f32, // 0=Custom, 1=DollyZoom, 2=Orbit, 3=FlyThrough, 4=HandheldShake, 5=RackFocus\n panX : f32,\n panY : f32,\n dollyZ : f32,\n\n // vec4 1\n fov : f32,\n parallaxAmount : f32,\n dofAperture : f32,\n focusPlane : f32,\n\n // vec4 2\n edgeDilation : f32,\n depthInvert : f32,\n hasDepthMap : f32,\n timeProgress : f32, // normalized 0.0 - 1.0 (or continuous)\n\n // vec4 3\n aspect : f32,\n _pad1 : f32,\n _pad2 : f32,\n _pad3 : f32,\n\n // vec4 4: signal flags\n hasSigPanX : f32,\n hasSigPanY : f32,\n hasSigDollyZ : f32,\n hasSigFocusPlane : f32,\n\n // vec4 5: signal flags\n hasSigParallax : f32,\n hasSigAperture : f32,\n hasSigFOV : f32,\n hasSigEdgeDilation : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : CameraParallaxUniforms;\n\n@group(1) @binding(0) var srcTex : texture_2d<f32>;\n@group(1) @binding(1) var srcSamp : sampler;\n\n@group(2) @binding(0) var depthTex : texture_2d<f32>;\n@group(2) @binding(1) var depthSamp : sampler;\n\n@group(3) @binding(0) var panXSigTex : texture_2d<f32>;\n@group(3) @binding(1) var panYSigTex : texture_2d<f32>;\n@group(3) @binding(2) var dollyZSigTex : texture_2d<f32>;\n@group(3) @binding(3) var focusPlaneSigTex : texture_2d<f32>;\n@group(3) @binding(4) var parallaxSigTex : texture_2d<f32>;\n@group(3) @binding(5) var apertureSigTex : texture_2d<f32>;\n@group(3) @binding(6) var fovSigTex : texture_2d<f32>;\n@group(3) @binding(7) var edgeDilationSigTex : texture_2d<f32>;\n@group(3) @binding(8) var sigSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn sampleDepth(uv: vec2<f32>) -> f32 {\n let clampedUV = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n var raw: f32 = 0.0;\n if (u.hasDepthMap > 0.5) {\n let dSample = textureSampleLevel(depthTex, depthSamp, clampedUV, 0.0);\n raw = dot(dSample.rgb, vec3<f32>(0.299, 0.587, 0.114));\n } else {\n let c = textureSampleLevel(srcTex, srcSamp, clampedUV, 0.0);\n raw = dot(c.rgb, vec3<f32>(0.299, 0.587, 0.114));\n }\n if (u.depthInvert > 0.5) {\n raw = 1.0 - raw;\n }\n return clamp(raw, 0.0, 1.0);\n}\n\nfn sampleAlbedo(uv: vec2<f32>) -> vec4<f32> {\n if (uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0) {\n return textureSampleLevel(srcTex, srcSamp, uv, 0.0);\n }\n // Mirror with subtle fade for border inpainting\n let mirroredUV = abs(fract(uv * 0.5 + 0.5) * 2.0 - 1.0);\n let clampedUV = clamp(mirroredUV, vec2<f32>(0.001), vec2<f32>(0.999));\n return textureSampleLevel(srcTex, srcSamp, clampedUV, 0.0);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n let dims = vec2<f32>(textureDimensions(srcTex));\n let texelSize = vec2<f32>(1.0 / dims.x, 1.0 / dims.y);\n let aspect = select(u.aspect, dims.x / max(1.0, dims.y), u.aspect <= 0.0);\n\n // Resolve signals\n var panX = u.panX;\n if (u.hasSigPanX > 0.5) {\n panX = textureSampleLevel(panXSigTex, sigSamp, in.uv, 0.0).r;\n }\n\n var panY = u.panY;\n if (u.hasSigPanY > 0.5) {\n panY = textureSampleLevel(panYSigTex, sigSamp, in.uv, 0.0).r;\n }\n\n var dollyZ = u.dollyZ;\n if (u.hasSigDollyZ > 0.5) {\n dollyZ = textureSampleLevel(dollyZSigTex, sigSamp, in.uv, 0.0).r;\n }\n\n var focusPlane = u.focusPlane;\n if (u.hasSigFocusPlane > 0.5) {\n focusPlane = clamp(textureSampleLevel(focusPlaneSigTex, sigSamp, in.uv, 0.0).r, 0.0, 1.0);\n }\n\n var parallaxAmount = u.parallaxAmount;\n if (u.hasSigParallax > 0.5) {\n parallaxAmount = max(0.0, textureSampleLevel(parallaxSigTex, sigSamp, in.uv, 0.0).r);\n }\n\n var dofAperture = u.dofAperture;\n if (u.hasSigAperture > 0.5) {\n dofAperture = clamp(textureSampleLevel(apertureSigTex, sigSamp, in.uv, 0.0).r, 0.0, 1.0);\n }\n\n var fov = u.fov;\n if (u.hasSigFOV > 0.5) {\n fov = clamp(textureSampleLevel(fovSigTex, sigSamp, in.uv, 0.0).r, 15.0, 120.0);\n }\n\n var edgeDilation = u.edgeDilation;\n if (u.hasSigEdgeDilation > 0.5) {\n edgeDilation = clamp(textureSampleLevel(edgeDilationSigTex, sigSamp, in.uv, 0.0).r, 0.0, 1.0);\n }\n\n // Motion Presets Computation\n let t = u.timeProgress;\n let twoPi = 6.2831853;\n let pi = 3.14159265;\n\n var motionPanX: f32 = 0.0;\n var motionPanY: f32 = 0.0;\n var motionDollyZ: f32 = 0.0;\n var motionFocus: f32 = 0.0;\n\n let preset = u.motionPreset;\n\n if (preset > 0.5 && preset < 1.5) {\n // DollyZoom (Vertigo effect)\n let s = sin(t * pi);\n motionDollyZ = (s * 2.0 - 1.0) * 0.45;\n motionPanX = sin(t * twoPi) * 0.06;\n motionPanY = cos(t * twoPi) * 0.03;\n } else if (preset > 1.5 && preset < 2.5) {\n // Orbit\n let angle = t * twoPi;\n motionPanX = cos(angle) * 0.32;\n motionPanY = sin(angle) * 0.18;\n motionDollyZ = sin(angle * 2.0) * 0.12;\n } else if (preset > 2.5 && preset < 3.5) {\n // FlyThrough\n let phase = sin(t * pi);\n motionDollyZ = phase * 0.65;\n motionPanX = sin(t * twoPi) * 0.12;\n motionPanY = cos(t * pi) * 0.08;\n motionFocus = (phase - 0.5) * 0.6;\n } else if (preset > 3.5 && preset < 4.5) {\n // HandheldShake\n motionPanX = (sin(t * twoPi * 1.6) * 0.06 + sin(t * twoPi * 3.7) * 0.03);\n motionPanY = (cos(t * twoPi * 1.3) * 0.05 + sin(t * twoPi * 4.2) * 0.025);\n motionDollyZ = sin(t * twoPi * 0.8) * 0.04;\n } else if (preset > 4.5) {\n // RackFocus\n let focusWave = sin(t * pi);\n motionFocus = (focusWave - 0.5) * 0.8;\n motionPanX = sin(t * twoPi) * 0.04;\n motionPanY = cos(t * twoPi) * 0.02;\n motionDollyZ = sin(t * pi) * 0.06;\n }\n\n // Cumulative camera parameters\n let effectivePanX = clamp(panX + motionPanX, -1.0, 1.0);\n let effectivePanY = clamp(panY + motionPanY, -1.0, 1.0);\n let effectiveDollyZ = clamp(dollyZ + motionDollyZ, -1.0, 1.0);\n let effectiveFocusPlane = clamp(focusPlane + motionFocus, 0.0, 1.0);\n\n // FOV & perspective distortion factor\n let fovRad = (fov * pi) / 180.0;\n let fovScale = tan(fovRad * 0.5) / tan(50.0 * pi / 360.0);\n\n // 3D Camera Raymarch Offset\n let camOffset = vec2<f32>(effectivePanX * aspect, -effectivePanY) * (parallaxAmount * 0.15 * fovScale);\n let zoomFactor = max(0.5, 1.0 + effectiveDollyZ * 0.4);\n\n let centeredUV = (in.uv - 0.5) / zoomFactor + 0.5;\n\n // Steep Relief Raymarching (16 linear steps + 4 binary refinement steps)\n let numSteps = 16.0;\n let stepSize = 1.0 / numSteps;\n var currentRayZ: f32 = 1.0;\n var currentUV = centeredUV;\n var lastUV = centeredUV;\n var lastRayZ: f32 = 1.0;\n var lastDepth: f32 = sampleDepth(centeredUV);\n var foundHit = false;\n\n for (var i = 0; i < 16; i = i + 1) {\n let sampleUV = centeredUV + camOffset * (currentRayZ - effectiveFocusPlane);\n let sceneDepth = sampleDepth(sampleUV);\n\n if (sceneDepth >= currentRayZ) {\n foundHit = true;\n lastUV = sampleUV;\n break;\n }\n\n lastRayZ = currentRayZ;\n lastDepth = sceneDepth;\n currentRayZ = currentRayZ - stepSize;\n }\n\n // Binary refinement search for sub-pixel surface accuracy\n var hitUV = lastUV;\n var hitDepth = lastDepth;\n var minZ = currentRayZ;\n var maxZ = lastRayZ;\n\n for (var b = 0; b < 4; b = b + 1) {\n let midZ = (minZ + maxZ) * 0.5;\n let testUV = centeredUV + camOffset * (midZ - effectiveFocusPlane);\n let testDepth = sampleDepth(testUV);\n if (testDepth >= midZ) {\n minZ = midZ;\n hitUV = testUV;\n hitDepth = testDepth;\n } else {\n maxZ = midZ;\n }\n }\n\n // Edge inpainting / dilation clamping\n var finalUV = hitUV;\n if (hitUV.x < 0.0 || hitUV.x > 1.0 || hitUV.y < 0.0 || hitUV.y > 1.0) {\n let clampedBorderUV = clamp(hitUV, vec2<f32>(0.0), vec2<f32>(1.0));\n finalUV = mix(hitUV, clampedBorderUV, edgeDilation);\n }\n\n // Circle of Confusion (Physical Bokeh Blur)\n let coc = abs(hitDepth - effectiveFocusPlane) * dofAperture * 0.04;\n\n if (coc < 0.0008) {\n return sampleAlbedo(finalUV);\n }\n\n // Multi-tap Golden Spiral Bokeh Disk Blur (16 taps)\n var accumColor = vec4<f32>(0.0);\n var totalWeight: f32 = 0.0;\n let goldenAngle = 2.39996323;\n\n for (var tap = 0; tap < 16; tap = tap + 1) {\n let fTap = f32(tap);\n let r = sqrt((fTap + 0.5) / 16.0);\n let theta = fTap * goldenAngle;\n let offset = vec2<f32>(cos(theta), sin(theta) * aspect) * (r * coc);\n\n let tapUV = finalUV + offset;\n let tapColor = sampleAlbedo(tapUV);\n let tapDepth = sampleDepth(tapUV);\n\n // Bokeh depth weighting: prevents foreground blur from bleeding into background\n let depthDelta = tapDepth - hitDepth;\n let bokehWeight = select(1.0, smoothstep(-0.08, 0.04, depthDelta), depthDelta < 0.0) / (1.0 + r * r * 0.5);\n\n accumColor = accumColor + tapColor * bokehWeight;\n totalWeight = totalWeight + bokehWeight;\n }\n\n let finalColor = accumColor / max(totalWeight, 0.0001);\n return vec4<f32>(clamp(finalColor.rgb, vec3<f32>(0.0), vec3<f32>(1.0)), finalColor.a);\n}\n`;\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsrcTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tdepthTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: texturesLayout(device, 8),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getCameraParallaxResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `camera_parallax_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: `camera_parallax_${format}.wgsl`,\n\t\t\tcode: CAMERA_PARALLAX_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `CameraParallaxPipeline_${format}`,\n\t\t\tmodule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.srcTextureLayout,\n\t\t\t\tlayouts.depthTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsrcTextureLayout: layouts.srcTextureLayout,\n\t\tdepthTextureLayout: layouts.depthTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst CameraParallax3DWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 60;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"CameraParallax3D\" || !op) return;\n\tconst sourceMedia = props.virtualMedia.children?.[0];\n\tif (!sourceMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: srcTex } = await drawChildToTexture(args, sourceMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: sourceMedia,\n\t\tcontainerWidth: width,\n\t\tcontainerHeight: height\n\t} });\n\targs.pass.end();\n\tconst depthMedia = op.depthMedia;\n\tlet depthTex;\n\tlet hasDepthMap = false;\n\tif (depthMedia) {\n\t\t({texture: depthTex} = await drawChildToTexture(args, depthMedia, {\n\t\t\tprops: {\n\t\t\t\t...props,\n\t\t\t\tvirtualMedia: depthMedia,\n\t\t\t\tcontainerWidth: width,\n\t\t\t\tcontainerHeight: height\n\t\t\t},\n\t\t\texclude: [srcTex]\n\t\t}));\n\t\targs.pass.end();\n\t\thasDepthMap = true;\n\t} else {\n\t\tdepthTex = srcTex;\n\t\thasDepthMap = false;\n\t}\n\tconst { pipeline, uniformLayout: uLayout, srcTextureLayout: srcLayout, depthTextureLayout: depthLayout, signalTextureLayout: sigLayout } = getCameraParallaxResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : compositionFrame / fps;\n\tconst durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 4;\n\tconst timeProgress = durationSeconds > 0 ? elapsedSeconds % durationSeconds / durationSeconds : 0;\n\tconst panXInfo = resolveSignalField(op, \"panX\", 0, -1, 1);\n\tconst panYInfo = resolveSignalField(op, \"panY\", 0, -1, 1);\n\tconst dollyZInfo = resolveSignalField(op, \"dollyZ\", 0, -1, 1);\n\tconst fovInfo = resolveSignalField(op, \"fov\", 50, 15, 120);\n\tconst parallaxInfo = resolveSignalField(op, \"parallaxAmount\", .6, 0, 2);\n\tconst apertureInfo = resolveSignalField(op, \"dofAperture\", .3, 0, 1);\n\tconst focusPlaneInfo = resolveSignalField(op, \"focusPlane\", .4, 0, 1);\n\tconst edgeDilationInfo = resolveSignalField(op, \"edgeDilation\", .5, 0, 1);\n\tconst getSigTextureView = (info, fallbackId) => {\n\t\tif (info.hasSignal && info.sd) return signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, info.sd.nodeId ?? fallbackId, elapsedSeconds, durationSeconds, info.sd, width, height, props.renderId, frame, fps);\n\t\treturn signalRegistry.getDummy1x1TextureView(ctx.device);\n\t};\n\tconst sigPanXView = getSigTextureView(panXInfo, \"cam_panx_sig\");\n\tconst sigPanYView = getSigTextureView(panYInfo, \"cam_pany_sig\");\n\tconst sigDollyZView = getSigTextureView(dollyZInfo, \"cam_dollyz_sig\");\n\tconst sigFocusPlaneView = getSigTextureView(focusPlaneInfo, \"cam_focus_sig\");\n\tconst sigParallaxView = getSigTextureView(parallaxInfo, \"cam_plax_sig\");\n\tconst sigApertureView = getSigTextureView(apertureInfo, \"cam_ap_sig\");\n\tconst sigFOVView = getSigTextureView(fovInfo, \"cam_fov_sig\");\n\tconst sigEdgeDilationView = getSigTextureView(edgeDilationInfo, \"cam_edge_sig\");\n\tconst uniformData = new Float32Array(24);\n\tuniformData[0] = op.motionPreset === \"DollyZoom\" ? 1 : op.motionPreset === \"Orbit\" ? 2 : op.motionPreset === \"FlyThrough\" ? 3 : op.motionPreset === \"HandheldShake\" ? 4 : op.motionPreset === \"RackFocus\" ? 5 : 0;\n\tuniformData[1] = panXInfo.value;\n\tuniformData[2] = panYInfo.value;\n\tuniformData[3] = dollyZInfo.value;\n\tuniformData[4] = fovInfo.value;\n\tuniformData[5] = parallaxInfo.value;\n\tuniformData[6] = apertureInfo.value;\n\tuniformData[7] = focusPlaneInfo.value;\n\tuniformData[8] = edgeDilationInfo.value;\n\tuniformData[9] = op.depthInvert ? 1 : 0;\n\tuniformData[10] = hasDepthMap ? 1 : 0;\n\tuniformData[11] = timeProgress;\n\tuniformData[12] = width / Math.max(1, height);\n\tuniformData[13] = 0;\n\tuniformData[14] = 0;\n\tuniformData[15] = 0;\n\tuniformData[16] = panXInfo.hasSignal ? 1 : 0;\n\tuniformData[17] = panYInfo.hasSignal ? 1 : 0;\n\tuniformData[18] = dollyZInfo.hasSignal ? 1 : 0;\n\tuniformData[19] = focusPlaneInfo.hasSignal ? 1 : 0;\n\tuniformData[20] = parallaxInfo.hasSignal ? 1 : 0;\n\tuniformData[21] = apertureInfo.hasSignal ? 1 : 0;\n\tuniformData[22] = fovInfo.hasSignal ? 1 : 0;\n\tuniformData[23] = edgeDilationInfo.hasSignal ? 1 : 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\tsrcTex,\n\t\tdepthTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: uniformBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, srcLayout, srcTex, sampler),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, depthLayout, depthTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: sigPanXView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: sigPanYView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: sigDollyZView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sigFocusPlaneView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 4,\n\t\t\t\t\tresource: sigParallaxView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 5,\n\t\t\t\t\tresource: sigApertureView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 6,\n\t\t\t\t\tresource: sigFOVView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 7,\n\t\t\t\t\tresource: sigEdgeDilationView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 8,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: CameraParallax3DWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-3w0EgvnV.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"renderer-kl_pAczD.mjs","names":[],"sources":["../../../nodes/node-camera-parallax-3d/dist/renderers-3w0EgvnV.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveSignalField } from \"@framefields/node-sdk\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice, texturesLayout } from \"@framefields/node-sdk/gpu\";\nimport { signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst CAMERA_PARALLAX_SHADER = `\nstruct CameraParallaxUniforms {\n // vec4 0\n motionPreset : f32, // 0=Custom, 1=DollyZoom, 2=Orbit, 3=FlyThrough, 4=HandheldShake, 5=RackFocus\n panX : f32,\n panY : f32,\n dollyZ : f32,\n\n // vec4 1\n fov : f32,\n parallaxAmount : f32,\n dofAperture : f32,\n focusPlane : f32,\n\n // vec4 2\n edgeDilation : f32,\n depthInvert : f32,\n hasDepthMap : f32,\n timeProgress : f32, // normalized 0.0 - 1.0 (or continuous)\n\n // vec4 3\n aspect : f32,\n _pad1 : f32,\n _pad2 : f32,\n _pad3 : f32,\n\n // vec4 4: signal flags\n hasSigPanX : f32,\n hasSigPanY : f32,\n hasSigDollyZ : f32,\n hasSigFocusPlane : f32,\n\n // vec4 5: signal flags\n hasSigParallax : f32,\n hasSigAperture : f32,\n hasSigFOV : f32,\n hasSigEdgeDilation : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : CameraParallaxUniforms;\n\n@group(1) @binding(0) var srcTex : texture_2d<f32>;\n@group(1) @binding(1) var srcSamp : sampler;\n\n@group(2) @binding(0) var depthTex : texture_2d<f32>;\n@group(2) @binding(1) var depthSamp : sampler;\n\n@group(3) @binding(0) var panXSigTex : texture_2d<f32>;\n@group(3) @binding(1) var panYSigTex : texture_2d<f32>;\n@group(3) @binding(2) var dollyZSigTex : texture_2d<f32>;\n@group(3) @binding(3) var focusPlaneSigTex : texture_2d<f32>;\n@group(3) @binding(4) var parallaxSigTex : texture_2d<f32>;\n@group(3) @binding(5) var apertureSigTex : texture_2d<f32>;\n@group(3) @binding(6) var fovSigTex : texture_2d<f32>;\n@group(3) @binding(7) var edgeDilationSigTex : texture_2d<f32>;\n@group(3) @binding(8) var sigSamp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn sampleDepth(uv: vec2<f32>) -> f32 {\n let clampedUV = clamp(uv, vec2<f32>(0.0), vec2<f32>(1.0));\n var raw: f32 = 0.0;\n if (u.hasDepthMap > 0.5) {\n let dSample = textureSampleLevel(depthTex, depthSamp, clampedUV, 0.0);\n raw = dot(dSample.rgb, vec3<f32>(0.299, 0.587, 0.114));\n } else {\n let c = textureSampleLevel(srcTex, srcSamp, clampedUV, 0.0);\n raw = dot(c.rgb, vec3<f32>(0.299, 0.587, 0.114));\n }\n if (u.depthInvert > 0.5) {\n raw = 1.0 - raw;\n }\n return clamp(raw, 0.0, 1.0);\n}\n\nfn sampleAlbedo(uv: vec2<f32>) -> vec4<f32> {\n if (uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0) {\n return textureSampleLevel(srcTex, srcSamp, uv, 0.0);\n }\n // Mirror with subtle fade for border inpainting\n let mirroredUV = abs(fract(uv * 0.5 + 0.5) * 2.0 - 1.0);\n let clampedUV = clamp(mirroredUV, vec2<f32>(0.001), vec2<f32>(0.999));\n return textureSampleLevel(srcTex, srcSamp, clampedUV, 0.0);\n}\n\n@fragment fn fs(in: VSOut) -> @location(0) vec4<f32> {\n let dims = vec2<f32>(textureDimensions(srcTex));\n let texelSize = vec2<f32>(1.0 / dims.x, 1.0 / dims.y);\n let aspect = select(u.aspect, dims.x / max(1.0, dims.y), u.aspect <= 0.0);\n\n // Resolve signals\n var panX = u.panX;\n if (u.hasSigPanX > 0.5) {\n panX = textureSampleLevel(panXSigTex, sigSamp, in.uv, 0.0).r;\n }\n\n var panY = u.panY;\n if (u.hasSigPanY > 0.5) {\n panY = textureSampleLevel(panYSigTex, sigSamp, in.uv, 0.0).r;\n }\n\n var dollyZ = u.dollyZ;\n if (u.hasSigDollyZ > 0.5) {\n dollyZ = textureSampleLevel(dollyZSigTex, sigSamp, in.uv, 0.0).r;\n }\n\n var focusPlane = u.focusPlane;\n if (u.hasSigFocusPlane > 0.5) {\n focusPlane = clamp(textureSampleLevel(focusPlaneSigTex, sigSamp, in.uv, 0.0).r, 0.0, 1.0);\n }\n\n var parallaxAmount = u.parallaxAmount;\n if (u.hasSigParallax > 0.5) {\n parallaxAmount = max(0.0, textureSampleLevel(parallaxSigTex, sigSamp, in.uv, 0.0).r);\n }\n\n var dofAperture = u.dofAperture;\n if (u.hasSigAperture > 0.5) {\n dofAperture = clamp(textureSampleLevel(apertureSigTex, sigSamp, in.uv, 0.0).r, 0.0, 1.0);\n }\n\n var fov = u.fov;\n if (u.hasSigFOV > 0.5) {\n fov = clamp(textureSampleLevel(fovSigTex, sigSamp, in.uv, 0.0).r, 15.0, 120.0);\n }\n\n var edgeDilation = u.edgeDilation;\n if (u.hasSigEdgeDilation > 0.5) {\n edgeDilation = clamp(textureSampleLevel(edgeDilationSigTex, sigSamp, in.uv, 0.0).r, 0.0, 1.0);\n }\n\n // Motion Presets Computation\n let t = u.timeProgress;\n let twoPi = 6.2831853;\n let pi = 3.14159265;\n\n var motionPanX: f32 = 0.0;\n var motionPanY: f32 = 0.0;\n var motionDollyZ: f32 = 0.0;\n var motionFocus: f32 = 0.0;\n\n let preset = u.motionPreset;\n\n if (preset > 0.5 && preset < 1.5) {\n // DollyZoom (Vertigo effect)\n let s = sin(t * pi);\n motionDollyZ = (s * 2.0 - 1.0) * 0.45;\n motionPanX = sin(t * twoPi) * 0.06;\n motionPanY = cos(t * twoPi) * 0.03;\n } else if (preset > 1.5 && preset < 2.5) {\n // Orbit\n let angle = t * twoPi;\n motionPanX = cos(angle) * 0.32;\n motionPanY = sin(angle) * 0.18;\n motionDollyZ = sin(angle * 2.0) * 0.12;\n } else if (preset > 2.5 && preset < 3.5) {\n // FlyThrough\n let phase = sin(t * pi);\n motionDollyZ = phase * 0.65;\n motionPanX = sin(t * twoPi) * 0.12;\n motionPanY = cos(t * pi) * 0.08;\n motionFocus = (phase - 0.5) * 0.6;\n } else if (preset > 3.5 && preset < 4.5) {\n // HandheldShake\n motionPanX = (sin(t * twoPi * 1.6) * 0.06 + sin(t * twoPi * 3.7) * 0.03);\n motionPanY = (cos(t * twoPi * 1.3) * 0.05 + sin(t * twoPi * 4.2) * 0.025);\n motionDollyZ = sin(t * twoPi * 0.8) * 0.04;\n } else if (preset > 4.5) {\n // RackFocus\n let focusWave = sin(t * pi);\n motionFocus = (focusWave - 0.5) * 0.8;\n motionPanX = sin(t * twoPi) * 0.04;\n motionPanY = cos(t * twoPi) * 0.02;\n motionDollyZ = sin(t * pi) * 0.06;\n }\n\n // Cumulative camera parameters\n let effectivePanX = clamp(panX + motionPanX, -1.0, 1.0);\n let effectivePanY = clamp(panY + motionPanY, -1.0, 1.0);\n let effectiveDollyZ = clamp(dollyZ + motionDollyZ, -1.0, 1.0);\n let effectiveFocusPlane = clamp(focusPlane + motionFocus, 0.0, 1.0);\n\n // FOV & perspective distortion factor\n let fovRad = (fov * pi) / 180.0;\n let fovScale = tan(fovRad * 0.5) / tan(50.0 * pi / 360.0);\n\n // 3D Camera Raymarch Offset\n let camOffset = vec2<f32>(effectivePanX * aspect, -effectivePanY) * (parallaxAmount * 0.15 * fovScale);\n let zoomFactor = max(0.5, 1.0 + effectiveDollyZ * 0.4);\n\n let centeredUV = (in.uv - 0.5) / zoomFactor + 0.5;\n\n // Steep Relief Raymarching (16 linear steps + 4 binary refinement steps)\n let numSteps = 16.0;\n let stepSize = 1.0 / numSteps;\n var currentRayZ: f32 = 1.0;\n var currentUV = centeredUV;\n var lastUV = centeredUV;\n var lastRayZ: f32 = 1.0;\n var lastDepth: f32 = sampleDepth(centeredUV);\n var foundHit = false;\n\n for (var i = 0; i < 16; i = i + 1) {\n let sampleUV = centeredUV + camOffset * (currentRayZ - effectiveFocusPlane);\n let sceneDepth = sampleDepth(sampleUV);\n\n if (sceneDepth >= currentRayZ) {\n foundHit = true;\n lastUV = sampleUV;\n break;\n }\n\n lastRayZ = currentRayZ;\n lastDepth = sceneDepth;\n currentRayZ = currentRayZ - stepSize;\n }\n\n // Binary refinement search for sub-pixel surface accuracy\n var hitUV = lastUV;\n var hitDepth = lastDepth;\n var minZ = currentRayZ;\n var maxZ = lastRayZ;\n\n for (var b = 0; b < 4; b = b + 1) {\n let midZ = (minZ + maxZ) * 0.5;\n let testUV = centeredUV + camOffset * (midZ - effectiveFocusPlane);\n let testDepth = sampleDepth(testUV);\n if (testDepth >= midZ) {\n minZ = midZ;\n hitUV = testUV;\n hitDepth = testDepth;\n } else {\n maxZ = midZ;\n }\n }\n\n // Edge inpainting / dilation clamping\n var finalUV = hitUV;\n if (hitUV.x < 0.0 || hitUV.x > 1.0 || hitUV.y < 0.0 || hitUV.y > 1.0) {\n let clampedBorderUV = clamp(hitUV, vec2<f32>(0.0), vec2<f32>(1.0));\n finalUV = mix(hitUV, clampedBorderUV, edgeDilation);\n }\n\n // Circle of Confusion (Physical Bokeh Blur)\n let coc = abs(hitDepth - effectiveFocusPlane) * dofAperture * 0.04;\n\n if (coc < 0.0008) {\n return sampleAlbedo(finalUV);\n }\n\n // Multi-tap Golden Spiral Bokeh Disk Blur (16 taps)\n var accumColor = vec4<f32>(0.0);\n var totalWeight: f32 = 0.0;\n let goldenAngle = 2.39996323;\n\n for (var tap = 0; tap < 16; tap = tap + 1) {\n let fTap = f32(tap);\n let r = sqrt((fTap + 0.5) / 16.0);\n let theta = fTap * goldenAngle;\n let offset = vec2<f32>(cos(theta), sin(theta) * aspect) * (r * coc);\n\n let tapUV = finalUV + offset;\n let tapColor = sampleAlbedo(tapUV);\n let tapDepth = sampleDepth(tapUV);\n\n // Bokeh depth weighting: prevents foreground blur from bleeding into background\n let depthDelta = tapDepth - hitDepth;\n let bokehWeight = select(1.0, smoothstep(-0.08, 0.04, depthDelta), depthDelta < 0.0) / (1.0 + r * r * 0.5);\n\n accumColor = accumColor + tapColor * bokehWeight;\n totalWeight = totalWeight + bokehWeight;\n }\n\n let finalColor = accumColor / max(totalWeight, 0.0001);\n return vec4<f32>(clamp(finalColor.rgb, vec3<f32>(0.0), vec3<f32>(1.0)), finalColor.a);\n}\n`;\nconst getDeviceLayouts = perDevice((device) => ({\n\tuniformLayout: fragmentBindGroupLayout(device, [\"uniform\"]),\n\tsrcTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tdepthTextureLayout: fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]),\n\tsignalTextureLayout: texturesLayout(device, 8),\n\tpipelineCache: /* @__PURE__ */ new Map()\n}));\nfunction getCameraParallaxResources(device, format) {\n\tconst layouts = getDeviceLayouts(device);\n\tconst cacheKey = `camera_parallax_${format}`;\n\tlet pipeline = layouts.pipelineCache.get(cacheKey);\n\tif (!pipeline) {\n\t\tconst module = device.createShaderModule({\n\t\t\tlabel: `camera_parallax_${format}.wgsl`,\n\t\t\tcode: CAMERA_PARALLAX_SHADER\n\t\t});\n\t\tpipeline = createFullscreenPipeline(device, {\n\t\t\tlabel: `CameraParallaxPipeline_${format}`,\n\t\t\tmodule,\n\t\t\tlayouts: [\n\t\t\t\tlayouts.uniformLayout,\n\t\t\t\tlayouts.srcTextureLayout,\n\t\t\t\tlayouts.depthTextureLayout,\n\t\t\t\tlayouts.signalTextureLayout\n\t\t\t],\n\t\t\tformat\n\t\t});\n\t\tlayouts.pipelineCache.set(cacheKey, pipeline);\n\t}\n\treturn {\n\t\tpipeline,\n\t\tuniformLayout: layouts.uniformLayout,\n\t\tsrcTextureLayout: layouts.srcTextureLayout,\n\t\tdepthTextureLayout: layouts.depthTextureLayout,\n\t\tsignalTextureLayout: layouts.signalTextureLayout\n\t};\n}\nconst CameraParallax3DWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst frame = props.frame ?? 0;\n\tconst compositionFrame = props.compositionFrame ?? frame;\n\tconst fps = props.fps || 60;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"CameraParallax3D\" || !op) return;\n\tconst sourceMedia = props.virtualMedia.children?.[0];\n\tif (!sourceMedia) return;\n\tpass.end();\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: srcTex } = await drawChildToTexture(args, sourceMedia, { props: {\n\t\t...props,\n\t\tvirtualMedia: sourceMedia,\n\t\tcontainerWidth: width,\n\t\tcontainerHeight: height\n\t} });\n\targs.pass.end();\n\tconst depthMedia = op.depthMedia;\n\tlet depthTex;\n\tlet hasDepthMap = false;\n\tif (depthMedia) {\n\t\t({texture: depthTex} = await drawChildToTexture(args, depthMedia, {\n\t\t\tprops: {\n\t\t\t\t...props,\n\t\t\t\tvirtualMedia: depthMedia,\n\t\t\t\tcontainerWidth: width,\n\t\t\t\tcontainerHeight: height\n\t\t\t},\n\t\t\texclude: [srcTex]\n\t\t}));\n\t\targs.pass.end();\n\t\thasDepthMap = true;\n\t} else {\n\t\tdepthTex = srcTex;\n\t\thasDepthMap = false;\n\t}\n\tconst { pipeline, uniformLayout: uLayout, srcTextureLayout: srcLayout, depthTextureLayout: depthLayout, signalTextureLayout: sigLayout } = getCameraParallaxResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst elapsedSeconds = props.elapsedMs !== void 0 ? props.elapsedMs / 1e3 : compositionFrame / fps;\n\tconst durationSeconds = props.virtualMedia?.metadata?.durationMs ? props.virtualMedia.metadata.durationMs / 1e3 : props.durationMs !== void 0 ? props.durationMs / 1e3 : 4;\n\tconst timeProgress = durationSeconds > 0 ? elapsedSeconds % durationSeconds / durationSeconds : 0;\n\tconst panXInfo = resolveSignalField(op, \"panX\", 0, -1, 1);\n\tconst panYInfo = resolveSignalField(op, \"panY\", 0, -1, 1);\n\tconst dollyZInfo = resolveSignalField(op, \"dollyZ\", 0, -1, 1);\n\tconst fovInfo = resolveSignalField(op, \"fov\", 50, 15, 120);\n\tconst parallaxInfo = resolveSignalField(op, \"parallaxAmount\", .6, 0, 2);\n\tconst apertureInfo = resolveSignalField(op, \"dofAperture\", .3, 0, 1);\n\tconst focusPlaneInfo = resolveSignalField(op, \"focusPlane\", .4, 0, 1);\n\tconst edgeDilationInfo = resolveSignalField(op, \"edgeDilation\", .5, 0, 1);\n\tconst getSigTextureView = (info, fallbackId) => {\n\t\tif (info.hasSignal && info.sd) return signalRegistry.getOrCreate2DTextureView(ctx.device, encoder, info.sd.nodeId ?? fallbackId, elapsedSeconds, durationSeconds, info.sd, width, height, props.renderId, frame, fps);\n\t\treturn signalRegistry.getDummy1x1TextureView(ctx.device);\n\t};\n\tconst sigPanXView = getSigTextureView(panXInfo, \"cam_panx_sig\");\n\tconst sigPanYView = getSigTextureView(panYInfo, \"cam_pany_sig\");\n\tconst sigDollyZView = getSigTextureView(dollyZInfo, \"cam_dollyz_sig\");\n\tconst sigFocusPlaneView = getSigTextureView(focusPlaneInfo, \"cam_focus_sig\");\n\tconst sigParallaxView = getSigTextureView(parallaxInfo, \"cam_plax_sig\");\n\tconst sigApertureView = getSigTextureView(apertureInfo, \"cam_ap_sig\");\n\tconst sigFOVView = getSigTextureView(fovInfo, \"cam_fov_sig\");\n\tconst sigEdgeDilationView = getSigTextureView(edgeDilationInfo, \"cam_edge_sig\");\n\tconst uniformData = new Float32Array(24);\n\tuniformData[0] = op.motionPreset === \"DollyZoom\" ? 1 : op.motionPreset === \"Orbit\" ? 2 : op.motionPreset === \"FlyThrough\" ? 3 : op.motionPreset === \"HandheldShake\" ? 4 : op.motionPreset === \"RackFocus\" ? 5 : 0;\n\tuniformData[1] = panXInfo.value;\n\tuniformData[2] = panYInfo.value;\n\tuniformData[3] = dollyZInfo.value;\n\tuniformData[4] = fovInfo.value;\n\tuniformData[5] = parallaxInfo.value;\n\tuniformData[6] = apertureInfo.value;\n\tuniformData[7] = focusPlaneInfo.value;\n\tuniformData[8] = edgeDilationInfo.value;\n\tuniformData[9] = op.depthInvert ? 1 : 0;\n\tuniformData[10] = hasDepthMap ? 1 : 0;\n\tuniformData[11] = timeProgress;\n\tuniformData[12] = width / Math.max(1, height);\n\tuniformData[13] = 0;\n\tuniformData[14] = 0;\n\tuniformData[15] = 0;\n\tuniformData[16] = panXInfo.hasSignal ? 1 : 0;\n\tuniformData[17] = panYInfo.hasSignal ? 1 : 0;\n\tuniformData[18] = dollyZInfo.hasSignal ? 1 : 0;\n\tuniformData[19] = focusPlaneInfo.hasSignal ? 1 : 0;\n\tuniformData[20] = parallaxInfo.hasSignal ? 1 : 0;\n\tuniformData[21] = apertureInfo.hasSignal ? 1 : 0;\n\tuniformData[22] = fovInfo.hasSignal ? 1 : 0;\n\tuniformData[23] = edgeDilationInfo.hasSignal ? 1 : 0;\n\tconst uniformBuffer = ctx.renderer.getTemporaryBuffer(uniformData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\tsrcTex,\n\t\tdepthTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: uLayout,\n\t\t\tentries: [{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: uniformBuffer }\n\t\t\t}]\n\t\t}),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, srcLayout, srcTex, sampler),\n\t\tctx.renderer.bindGroupCache.getBindGroup(ctx.device, depthLayout, depthTex, sampler),\n\t\tctx.device.createBindGroup({\n\t\t\tlayout: sigLayout,\n\t\t\tentries: [\n\t\t\t\t{\n\t\t\t\t\tbinding: 0,\n\t\t\t\t\tresource: sigPanXView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 1,\n\t\t\t\t\tresource: sigPanYView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 2,\n\t\t\t\t\tresource: sigDollyZView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 3,\n\t\t\t\t\tresource: sigFocusPlaneView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 4,\n\t\t\t\t\tresource: sigParallaxView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 5,\n\t\t\t\t\tresource: sigApertureView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 6,\n\t\t\t\t\tresource: sigFOVView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 7,\n\t\t\t\t\tresource: sigEdgeDilationView\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tbinding: 8,\n\t\t\t\t\tresource: sampler\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t]);\n\tdrawTextureToTarget(args, outTex, op.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: CameraParallax3DWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-3w0EgvnV.mjs.map"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { n as defineRenderer } from "./renderer-BgmO1Dzw.mjs";
2
- import { a as createFullscreenPipeline, c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL } from "./gpu-BvYDrqOC.mjs";
2
+ import { a as createFullscreenPipeline, c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL } from "./gpu-zIhSz_0X.mjs";
3
3
 
4
4
  //#region ../../nodes/node-selective-color/dist/renderers-BZ3S3Cgo.mjs
5
5
  const deviceResourceCache = /* @__PURE__ */ new WeakMap();
@@ -166,4 +166,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: SelectiveColorWebGPURen
166
166
 
167
167
  //#endregion
168
168
  export { renderers_default as t };
169
- //# sourceMappingURL=renderer-Bxs9zUIN.mjs.map
169
+ //# sourceMappingURL=renderer-lrKwPhZi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-Bxs9zUIN.mjs","names":[],"sources":["../../../nodes/node-selective-color/dist/renderers-BZ3S3Cgo.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst WGSL_SELECTIVE_COLOR_SHADER = `\nstruct SelectiveColorUniforms {\n\treds : vec4<f32>,\n\tyellows : vec4<f32>,\n\tgreens : vec4<f32>,\n\tcyans : vec4<f32>,\n\tblues : vec4<f32>,\n\tmagentas : vec4<f32>,\n\twhites : vec4<f32>,\n\tneutrals : vec4<f32>,\n\tblacks : vec4<f32>,\n\tmethod : f32,\n\tpad0 : f32,\n\tpad1 : f32,\n\tpad2 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : SelectiveColorUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn calcAdjustment(cmy: vec3<f32>, adj: vec4<f32>, weight: f32, isAbsolute: bool) -> vec3<f32> {\n\tif (weight <= 0.00001) {\n\t\treturn vec3<f32>(0.0);\n\t}\n\tlet adjC = adj.x;\n\tlet adjM = adj.y;\n\tlet adjY = adj.z;\n\tlet adjK = adj.w;\n\n\tif (isAbsolute) {\n\t\tlet cDelta = adjC + adjK * (1.0 + adjC);\n\t\tlet mDelta = adjM + adjK * (1.0 + adjM);\n\t\tlet yDelta = adjY + adjK * (1.0 + adjY);\n\t\treturn vec3<f32>(cDelta, mDelta, yDelta) * weight;\n\t} else {\n\t\tlet cDelta = ((1.0 + adjK) * (1.0 + adjC) - 1.0) * cmy.x;\n\t\tlet mDelta = ((1.0 + adjK) * (1.0 + adjM) - 1.0) * cmy.y;\n\t\tlet yDelta = ((1.0 + adjK) * (1.0 + adjY) - 1.0) * cmy.z;\n\t\treturn vec3<f32>(cDelta, mDelta, yDelta) * weight;\n\t}\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tif (color.a <= 0.00001) {\n\t\treturn color;\n\t}\n\n\tlet rgb = clamp(color.rgb / max(color.a, 0.00001), vec3<f32>(0.0), vec3<f32>(1.0));\n\tlet r = rgb.r;\n\tlet g = rgb.g;\n\tlet b = rgb.b;\n\n\tlet maxVal = max(r, max(g, b));\n\tlet minVal = min(r, min(g, b));\n\n\t// Chromatic weights\n\tlet wRed = max(0.0, r - max(g, b));\n\tlet wYellow = max(0.0, min(r, g) - b);\n\tlet wGreen = max(0.0, g - max(r, b));\n\tlet wCyan = max(0.0, min(g, b) - r);\n\tlet wBlue = max(0.0, b - max(r, g));\n\tlet wMagenta = max(0.0, min(r, b) - g);\n\n\t// Achromatic weights (Whites, Blacks, and true Midtone Neutrals)\n\tlet wWhite = max(0.0, (minVal - 0.5) * 2.0);\n\tlet wBlack = max(0.0, (0.5 - maxVal) * 2.0);\n\tlet wNeutral = max(0.0, 1.0 - (wRed + wYellow + wGreen + wCyan + wBlue + wMagenta + wWhite + wBlack));\n\n\tlet cmy = vec3<f32>(1.0 - r, 1.0 - g, 1.0 - b);\n\tlet isAbs = u.method > 0.5;\n\n\tvar totalDelta = vec3<f32>(0.0);\n\ttotalDelta += calcAdjustment(cmy, u.reds, wRed, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.yellows, wYellow, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.greens, wGreen, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.cyans, wCyan, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.blues, wBlue, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.magentas, wMagenta, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.whites, wWhite, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.neutrals, wNeutral, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.blacks, wBlack, isAbs);\n\n\tlet finalCMY = clamp(cmy + totalDelta, vec3<f32>(0.0), vec3<f32>(1.0));\n\tlet finalRGB = vec3<f32>(1.0 - finalCMY.x, 1.0 - finalCMY.y, 1.0 - finalCMY.z);\n\n\treturn vec4<f32>(finalRGB * color.a, color.a);\n}\n`;\nfunction getSelectiveColorResources(device, format) {\n\tlet res = deviceResourceCache.get(device);\n\tif (!res) {\n\t\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\t\tconst textureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]);\n\t\tres = {\n\t\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\t\tlabel: \"SelectiveColorPipeline\",\n\t\t\t\tmodule: device.createShaderModule({\n\t\t\t\t\tlabel: \"selective-color.wgsl\",\n\t\t\t\t\tcode: WGSL_SELECTIVE_COLOR_SHADER\n\t\t\t\t}),\n\t\t\t\tlayouts: [uniformLayout, textureLayout],\n\t\t\t\tformat\n\t\t\t}),\n\t\t\tuniformLayout,\n\t\t\ttextureLayout\n\t\t};\n\t\tdeviceResourceCache.set(device, res);\n\t}\n\treturn res;\n}\nfunction packAdjustment(data, offset, adj) {\n\tdata[offset + 0] = (adj?.cyan ?? 0) / 100;\n\tdata[offset + 1] = (adj?.magenta ?? 0) / 100;\n\tdata[offset + 2] = (adj?.yellow ?? 0) / 100;\n\tdata[offset + 3] = (adj?.black ?? 0) / 100;\n}\nconst uniformBufferData = new Float32Array(40);\nconst SelectiveColorWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"SelectiveColor\" || !props.virtualMedia?.children?.[0]) return;\n\tpass.end();\n\tconst childMedia = props.virtualMedia.children[0];\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tpackAdjustment(uniformBufferData, 0, op.reds);\n\tpackAdjustment(uniformBufferData, 4, op.yellows);\n\tpackAdjustment(uniformBufferData, 8, op.greens);\n\tpackAdjustment(uniformBufferData, 12, op.cyans);\n\tpackAdjustment(uniformBufferData, 16, op.blues);\n\tpackAdjustment(uniformBufferData, 20, op.magentas);\n\tpackAdjustment(uniformBufferData, 24, op.whites);\n\tpackAdjustment(uniformBufferData, 28, op.neutrals);\n\tpackAdjustment(uniformBufferData, 32, op.blacks);\n\tuniformBufferData[36] = op.method === \"Absolute\" ? 1 : 0;\n\tuniformBufferData[37] = 0;\n\tuniformBufferData[38] = 0;\n\tuniformBufferData[39] = 0;\n\tconst { pipeline, uniformLayout, textureLayout } = getSelectiveColorResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst buffer = ctx.renderer.getTemporaryBuffer(uniformBufferData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [ctx.device.createBindGroup({\n\t\tlayout: uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer }\n\t\t}]\n\t}), ctx.renderer.bindGroupCache.getBindGroup(ctx.device, textureLayout, tmpTex, sampler)]);\n\tdrawTextureToTarget(args, outTex, props.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: SelectiveColorWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-BZ3S3Cgo.mjs.map"],"mappings":";;;;AAIA,MAAM,sCAAsC,IAAI,SAAS;AACzD,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;EAoBlC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEvB,SAAS,2BAA2B,QAAQ,QAAQ;CACnD,IAAI,MAAM,oBAAoB,IAAI,OAAO;AACzC,KAAI,CAAC,KAAK;EACT,MAAM,gBAAgB,wBAAwB,QAAQ,CAAC,UAAU,CAAC;EAClE,MAAM,gBAAgB,wBAAwB,QAAQ,CAAC,WAAW,UAAU,CAAC;AAC7E,QAAM;GACL,UAAU,yBAAyB,QAAQ;IAC1C,OAAO;IACP,QAAQ,OAAO,mBAAmB;KACjC,OAAO;KACP,MAAM;KACN,CAAC;IACF,SAAS,CAAC,eAAe,cAAc;IACvC;IACA,CAAC;GACF;GACA;GACA;AACD,sBAAoB,IAAI,QAAQ,IAAI;;AAErC,QAAO;;AAER,SAAS,eAAe,MAAM,QAAQ,KAAK;AAC1C,MAAK,SAAS,MAAM,KAAK,QAAQ,KAAK;AACtC,MAAK,SAAS,MAAM,KAAK,WAAW,KAAK;AACzC,MAAK,SAAS,MAAM,KAAK,UAAU,KAAK;AACxC,MAAK,SAAS,MAAM,KAAK,SAAS,KAAK;;AAExC,MAAM,oBAAoB,IAAI,aAAa,GAAG;AAC9C,MAAM,+BAA+B,OAAO,SAAS;CACpD,MAAM,EAAE,KAAK,SAAS,MAAM,eAAe,aAAa,cAAc,UAAU;CAChF,MAAM,KAAK,MAAM,cAAc;AAC/B,KAAI,IAAI,OAAO,oBAAoB,CAAC,MAAM,cAAc,WAAW,GAAI;AACvE,MAAK,KAAK;CACV,MAAM,aAAa,MAAM,aAAa,SAAS;CAC/C,MAAM,QAAQ;CACd,MAAM,SAAS;CACf,MAAM,EAAE,SAAS,WAAW,MAAM,mBAAmB,MAAM,WAAW;AACtE,gBAAe,mBAAmB,GAAG,GAAG,KAAK;AAC7C,gBAAe,mBAAmB,GAAG,GAAG,QAAQ;AAChD,gBAAe,mBAAmB,GAAG,GAAG,OAAO;AAC/C,gBAAe,mBAAmB,IAAI,GAAG,MAAM;AAC/C,gBAAe,mBAAmB,IAAI,GAAG,MAAM;AAC/C,gBAAe,mBAAmB,IAAI,GAAG,SAAS;AAClD,gBAAe,mBAAmB,IAAI,GAAG,OAAO;AAChD,gBAAe,mBAAmB,IAAI,GAAG,SAAS;AAClD,gBAAe,mBAAmB,IAAI,GAAG,OAAO;AAChD,mBAAkB,MAAM,GAAG,WAAW,aAAa,IAAI;AACvD,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;CACxB,MAAM,EAAE,UAAU,eAAe,kBAAkB,2BAA2B,IAAI,QAAQ,IAAI,SAAS,OAAO;CAC9G,MAAM,UAAU,IAAI,SAAS,aAAa,WAAW,IAAI,OAAO;CAChE,MAAM,SAAS,IAAI,SAAS,mBAAmB,kBAAkB;CACjE,MAAM,SAAS,IAAI,SAAS,oBAAoB,OAAO,QAAQ;EAC9D;EACA;EACA,GAAG,MAAM,mBAAmB,EAAE;EAC9B,CAAC;AACF,oBAAmB,SAAS,OAAO,YAAY,EAAE,UAAU,CAAC,IAAI,OAAO,gBAAgB;EACtF,QAAQ;EACR,SAAS,CAAC;GACT,SAAS;GACT,UAAU,EAAE,QAAQ;GACpB,CAAC;EACF,CAAC,EAAE,IAAI,SAAS,eAAe,aAAa,IAAI,QAAQ,eAAe,QAAQ,QAAQ,CAAC,CAAC;AAC1F,qBAAoB,MAAM,QAAQ,MAAM,WAAW,EAAE;;AAKtD,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,8BAA8B,CAAC"}
1
+ {"version":3,"file":"renderer-lrKwPhZi.mjs","names":[],"sources":["../../../nodes/node-selective-color/dist/renderers-BZ3S3Cgo.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, createFullscreenPipeline, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst deviceResourceCache = /* @__PURE__ */ new WeakMap();\nconst WGSL_SELECTIVE_COLOR_SHADER = `\nstruct SelectiveColorUniforms {\n\treds : vec4<f32>,\n\tyellows : vec4<f32>,\n\tgreens : vec4<f32>,\n\tcyans : vec4<f32>,\n\tblues : vec4<f32>,\n\tmagentas : vec4<f32>,\n\twhites : vec4<f32>,\n\tneutrals : vec4<f32>,\n\tblacks : vec4<f32>,\n\tmethod : f32,\n\tpad0 : f32,\n\tpad1 : f32,\n\tpad2 : f32,\n};\n\n@group(0) @binding(0) var<uniform> u : SelectiveColorUniforms;\n@group(1) @binding(0) var tex : texture_2d<f32>;\n@group(1) @binding(1) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\nfn calcAdjustment(cmy: vec3<f32>, adj: vec4<f32>, weight: f32, isAbsolute: bool) -> vec3<f32> {\n\tif (weight <= 0.00001) {\n\t\treturn vec3<f32>(0.0);\n\t}\n\tlet adjC = adj.x;\n\tlet adjM = adj.y;\n\tlet adjY = adj.z;\n\tlet adjK = adj.w;\n\n\tif (isAbsolute) {\n\t\tlet cDelta = adjC + adjK * (1.0 + adjC);\n\t\tlet mDelta = adjM + adjK * (1.0 + adjM);\n\t\tlet yDelta = adjY + adjK * (1.0 + adjY);\n\t\treturn vec3<f32>(cDelta, mDelta, yDelta) * weight;\n\t} else {\n\t\tlet cDelta = ((1.0 + adjK) * (1.0 + adjC) - 1.0) * cmy.x;\n\t\tlet mDelta = ((1.0 + adjK) * (1.0 + adjM) - 1.0) * cmy.y;\n\t\tlet yDelta = ((1.0 + adjK) * (1.0 + adjY) - 1.0) * cmy.z;\n\t\treturn vec3<f32>(cDelta, mDelta, yDelta) * weight;\n\t}\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet color = textureSampleLevel(tex, samp, in.uv, 0.0);\n\tif (color.a <= 0.00001) {\n\t\treturn color;\n\t}\n\n\tlet rgb = clamp(color.rgb / max(color.a, 0.00001), vec3<f32>(0.0), vec3<f32>(1.0));\n\tlet r = rgb.r;\n\tlet g = rgb.g;\n\tlet b = rgb.b;\n\n\tlet maxVal = max(r, max(g, b));\n\tlet minVal = min(r, min(g, b));\n\n\t// Chromatic weights\n\tlet wRed = max(0.0, r - max(g, b));\n\tlet wYellow = max(0.0, min(r, g) - b);\n\tlet wGreen = max(0.0, g - max(r, b));\n\tlet wCyan = max(0.0, min(g, b) - r);\n\tlet wBlue = max(0.0, b - max(r, g));\n\tlet wMagenta = max(0.0, min(r, b) - g);\n\n\t// Achromatic weights (Whites, Blacks, and true Midtone Neutrals)\n\tlet wWhite = max(0.0, (minVal - 0.5) * 2.0);\n\tlet wBlack = max(0.0, (0.5 - maxVal) * 2.0);\n\tlet wNeutral = max(0.0, 1.0 - (wRed + wYellow + wGreen + wCyan + wBlue + wMagenta + wWhite + wBlack));\n\n\tlet cmy = vec3<f32>(1.0 - r, 1.0 - g, 1.0 - b);\n\tlet isAbs = u.method > 0.5;\n\n\tvar totalDelta = vec3<f32>(0.0);\n\ttotalDelta += calcAdjustment(cmy, u.reds, wRed, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.yellows, wYellow, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.greens, wGreen, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.cyans, wCyan, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.blues, wBlue, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.magentas, wMagenta, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.whites, wWhite, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.neutrals, wNeutral, isAbs);\n\ttotalDelta += calcAdjustment(cmy, u.blacks, wBlack, isAbs);\n\n\tlet finalCMY = clamp(cmy + totalDelta, vec3<f32>(0.0), vec3<f32>(1.0));\n\tlet finalRGB = vec3<f32>(1.0 - finalCMY.x, 1.0 - finalCMY.y, 1.0 - finalCMY.z);\n\n\treturn vec4<f32>(finalRGB * color.a, color.a);\n}\n`;\nfunction getSelectiveColorResources(device, format) {\n\tlet res = deviceResourceCache.get(device);\n\tif (!res) {\n\t\tconst uniformLayout = fragmentBindGroupLayout(device, [\"uniform\"]);\n\t\tconst textureLayout = fragmentBindGroupLayout(device, [\"texture\", \"sampler\"]);\n\t\tres = {\n\t\t\tpipeline: createFullscreenPipeline(device, {\n\t\t\t\tlabel: \"SelectiveColorPipeline\",\n\t\t\t\tmodule: device.createShaderModule({\n\t\t\t\t\tlabel: \"selective-color.wgsl\",\n\t\t\t\t\tcode: WGSL_SELECTIVE_COLOR_SHADER\n\t\t\t\t}),\n\t\t\t\tlayouts: [uniformLayout, textureLayout],\n\t\t\t\tformat\n\t\t\t}),\n\t\t\tuniformLayout,\n\t\t\ttextureLayout\n\t\t};\n\t\tdeviceResourceCache.set(device, res);\n\t}\n\treturn res;\n}\nfunction packAdjustment(data, offset, adj) {\n\tdata[offset + 0] = (adj?.cyan ?? 0) / 100;\n\tdata[offset + 1] = (adj?.magenta ?? 0) / 100;\n\tdata[offset + 2] = (adj?.yellow ?? 0) / 100;\n\tdata[offset + 3] = (adj?.black ?? 0) / 100;\n}\nconst uniformBufferData = new Float32Array(40);\nconst SelectiveColorWebGPURenderer = async (args) => {\n\tconst { ctx, encoder, pass, targetTexture, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"SelectiveColor\" || !props.virtualMedia?.children?.[0]) return;\n\tpass.end();\n\tconst childMedia = props.virtualMedia.children[0];\n\tconst width = targetWidth;\n\tconst height = targetHeight;\n\tconst { texture: tmpTex } = await drawChildToTexture(args, childMedia);\n\tpackAdjustment(uniformBufferData, 0, op.reds);\n\tpackAdjustment(uniformBufferData, 4, op.yellows);\n\tpackAdjustment(uniformBufferData, 8, op.greens);\n\tpackAdjustment(uniformBufferData, 12, op.cyans);\n\tpackAdjustment(uniformBufferData, 16, op.blues);\n\tpackAdjustment(uniformBufferData, 20, op.magentas);\n\tpackAdjustment(uniformBufferData, 24, op.whites);\n\tpackAdjustment(uniformBufferData, 28, op.neutrals);\n\tpackAdjustment(uniformBufferData, 32, op.blacks);\n\tuniformBufferData[36] = op.method === \"Absolute\" ? 1 : 0;\n\tuniformBufferData[37] = 0;\n\tuniformBufferData[38] = 0;\n\tuniformBufferData[39] = 0;\n\tconst { pipeline, uniformLayout, textureLayout } = getSelectiveColorResources(ctx.device, ctx.renderer.format);\n\tconst sampler = ctx.renderer.samplerCache.getSampler(ctx.device);\n\tconst buffer = ctx.renderer.getTemporaryBuffer(uniformBufferData);\n\tconst outTex = ctx.renderer.getTemporaryTexture(width, height, [\n\t\ttmpTex,\n\t\ttargetTexture,\n\t\t...props.excludeTextures || []\n\t]);\n\tdrawFullscreenPass(encoder, outTex.createView(), pipeline, [ctx.device.createBindGroup({\n\t\tlayout: uniformLayout,\n\t\tentries: [{\n\t\t\tbinding: 0,\n\t\t\tresource: { buffer }\n\t\t}]\n\t}), ctx.renderer.bindGroupCache.getBindGroup(ctx.device, textureLayout, tmpTex, sampler)]);\n\tdrawTextureToTarget(args, outTex, props.opacity ?? 1);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: SelectiveColorWebGPURenderer });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-BZ3S3Cgo.mjs.map"],"mappings":";;;;AAIA,MAAM,sCAAsC,IAAI,SAAS;AACzD,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;EAoBlC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEvB,SAAS,2BAA2B,QAAQ,QAAQ;CACnD,IAAI,MAAM,oBAAoB,IAAI,OAAO;AACzC,KAAI,CAAC,KAAK;EACT,MAAM,gBAAgB,wBAAwB,QAAQ,CAAC,UAAU,CAAC;EAClE,MAAM,gBAAgB,wBAAwB,QAAQ,CAAC,WAAW,UAAU,CAAC;AAC7E,QAAM;GACL,UAAU,yBAAyB,QAAQ;IAC1C,OAAO;IACP,QAAQ,OAAO,mBAAmB;KACjC,OAAO;KACP,MAAM;KACN,CAAC;IACF,SAAS,CAAC,eAAe,cAAc;IACvC;IACA,CAAC;GACF;GACA;GACA;AACD,sBAAoB,IAAI,QAAQ,IAAI;;AAErC,QAAO;;AAER,SAAS,eAAe,MAAM,QAAQ,KAAK;AAC1C,MAAK,SAAS,MAAM,KAAK,QAAQ,KAAK;AACtC,MAAK,SAAS,MAAM,KAAK,WAAW,KAAK;AACzC,MAAK,SAAS,MAAM,KAAK,UAAU,KAAK;AACxC,MAAK,SAAS,MAAM,KAAK,SAAS,KAAK;;AAExC,MAAM,oBAAoB,IAAI,aAAa,GAAG;AAC9C,MAAM,+BAA+B,OAAO,SAAS;CACpD,MAAM,EAAE,KAAK,SAAS,MAAM,eAAe,aAAa,cAAc,UAAU;CAChF,MAAM,KAAK,MAAM,cAAc;AAC/B,KAAI,IAAI,OAAO,oBAAoB,CAAC,MAAM,cAAc,WAAW,GAAI;AACvE,MAAK,KAAK;CACV,MAAM,aAAa,MAAM,aAAa,SAAS;CAC/C,MAAM,QAAQ;CACd,MAAM,SAAS;CACf,MAAM,EAAE,SAAS,WAAW,MAAM,mBAAmB,MAAM,WAAW;AACtE,gBAAe,mBAAmB,GAAG,GAAG,KAAK;AAC7C,gBAAe,mBAAmB,GAAG,GAAG,QAAQ;AAChD,gBAAe,mBAAmB,GAAG,GAAG,OAAO;AAC/C,gBAAe,mBAAmB,IAAI,GAAG,MAAM;AAC/C,gBAAe,mBAAmB,IAAI,GAAG,MAAM;AAC/C,gBAAe,mBAAmB,IAAI,GAAG,SAAS;AAClD,gBAAe,mBAAmB,IAAI,GAAG,OAAO;AAChD,gBAAe,mBAAmB,IAAI,GAAG,SAAS;AAClD,gBAAe,mBAAmB,IAAI,GAAG,OAAO;AAChD,mBAAkB,MAAM,GAAG,WAAW,aAAa,IAAI;AACvD,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;AACxB,mBAAkB,MAAM;CACxB,MAAM,EAAE,UAAU,eAAe,kBAAkB,2BAA2B,IAAI,QAAQ,IAAI,SAAS,OAAO;CAC9G,MAAM,UAAU,IAAI,SAAS,aAAa,WAAW,IAAI,OAAO;CAChE,MAAM,SAAS,IAAI,SAAS,mBAAmB,kBAAkB;CACjE,MAAM,SAAS,IAAI,SAAS,oBAAoB,OAAO,QAAQ;EAC9D;EACA;EACA,GAAG,MAAM,mBAAmB,EAAE;EAC9B,CAAC;AACF,oBAAmB,SAAS,OAAO,YAAY,EAAE,UAAU,CAAC,IAAI,OAAO,gBAAgB;EACtF,QAAQ;EACR,SAAS,CAAC;GACT,SAAS;GACT,UAAU,EAAE,QAAQ;GACpB,CAAC;EACF,CAAC,EAAE,IAAI,SAAS,eAAe,aAAa,IAAI,QAAQ,eAAe,QAAQ,QAAQ,CAAC,CAAC;AAC1F,qBAAoB,MAAM,QAAQ,MAAM,WAAW,EAAE;;AAKtD,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,8BAA8B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import "./chunk-D7gtBK74.mjs";
2
2
  import { n as defineRenderer } from "./renderer-BgmO1Dzw.mjs";
3
- import "./dist-Wsjx_Rza.mjs";
4
- import { c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-BvYDrqOC.mjs";
3
+ import "./dist-BHTd-EC1.mjs";
4
+ import { c as drawTextureToTarget, l as fragmentBindGroupLayout, o as drawChildToTexture, s as drawFullscreenPass, t as FULLSCREEN_QUAD_WGSL, u as perDevice } from "./gpu-zIhSz_0X.mjs";
5
5
 
6
6
  //#region ../../nodes/node-trails/dist/renderers-C37o-6Mg.mjs
7
7
  const HISTORY_FORMAT = "rgba16float";
@@ -212,4 +212,4 @@ var renderers_default = defineRenderer({ WebGPURenderer: TrailsWebGPURenderer })
212
212
 
213
213
  //#endregion
214
214
  export { TrailsWebGPURenderer, renderers_default as default };
215
- //# sourceMappingURL=renderer-DJy8V_nb.mjs.map
215
+ //# sourceMappingURL=renderer-pnYj1REL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-DJy8V_nb.mjs","names":[],"sources":["../../../nodes/node-trails/dist/renderers-C37o-6Mg.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst HISTORY_FORMAT = \"rgba16float\";\nconst TRAILS_WGSL = `\nstruct U { a : vec4<f32>, b : vec4<f32> };\n@group(0) @binding(0) var<uniform> u : U;\n@group(0) @binding(1) var historyTex : texture_2d<f32>;\n@group(0) @binding(2) var currentTex : texture_2d<f32>;\n@group(0) @binding(3) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n// Hue rotation in YIQ: linear, so it works on premultiplied color.\nfn hueRotate(c : vec3<f32>, angle : f32) -> vec3<f32> {\n\tlet yiq = mat3x3<f32>(0.299, 0.596, 0.211, 0.587, -0.274, -0.523, 0.114, -0.322, 0.312) * c;\n\tlet cs = cos(angle);\n\tlet sn = sin(angle);\n\tlet rot = vec3<f32>(yiq.x, yiq.y * cs - yiq.z * sn, yiq.y * sn + yiq.z * cs);\n\treturn mat3x3<f32>(1.0, 1.0, 1.0, 0.956, -0.272, -1.106, 0.621, -0.647, 1.703) * rot;\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet decay = u.a.x;\n\tlet mode = u.a.y;\n\tlet zoom = max(u.a.z, 1e-3);\n\tlet angle = u.a.w;\n\tlet offset = u.b.xy;\n\tlet hue = u.b.z;\n\tlet fresh = u.b.w;\n\tlet cur = textureSampleLevel(currentTex, samp, in.uv, 0.0);\n\tif (fresh > 0.5) { return cur; }\n\tlet c = in.uv - 0.5;\n\tlet cs = cos(-angle);\n\tlet sn = sin(-angle);\n\tlet src = vec2<f32>(c.x * cs - c.y * sn, c.x * sn + c.y * cs) / zoom + 0.5 - offset;\n\tvar hist = vec4<f32>(0.0);\n\tif (all(src >= vec2<f32>(0.0)) && all(src <= vec2<f32>(1.0))) {\n\t\thist = textureSampleLevel(historyTex, samp, src, 0.0);\n\t}\n\tif (hue != 0.0) { hist = vec4<f32>(max(hueRotate(hist.rgb, hue), vec3<f32>(0.0)), hist.a); }\n\thist *= decay;\n\tif (mode < 0.5) { return cur + hist * (1.0 - cur.a); }\n\tif (mode < 1.5) { return vec4<f32>(cur.rgb + hist.rgb, min(cur.a + hist.a, 1.0)); }\n\tif (mode < 2.5) { return max(cur, hist); }\n\t// blend: a running average, so opaque footage shows its own echoes.\n\treturn mix(cur, hist / max(decay, 1e-4), decay);\n}\n`;\nconst resources = perDevice((device) => {\n\tconst layout = fragmentBindGroupLayout(device, [\n\t\t\"uniform\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], \"trails_layout\");\n\tconst module = device.createShaderModule({\n\t\tcode: TRAILS_WGSL,\n\t\tlabel: \"trails.wgsl\"\n\t});\n\treturn {\n\t\tlayout,\n\t\tpipeline: device.createRenderPipeline({\n\t\t\tlabel: \"trails\",\n\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [layout] }),\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format: HISTORY_FORMAT }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t}),\n\t\tsampler: device.createSampler({\n\t\t\tmagFilter: \"linear\",\n\t\t\tminFilter: \"linear\"\n\t\t})\n\t};\n});\nfunction historyFor(effect, device, width, height) {\n\tconst h = effect.feedbackHistory;\n\tif (h && h.device === device && h.width === width && h.height === height) return h;\n\th?.front.destroy();\n\th?.back.destroy();\n\tconst make = (label) => device.createTexture({\n\t\tlabel,\n\t\tsize: [width, height],\n\t\tformat: HISTORY_FORMAT,\n\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST\n\t});\n\tconst next = {\n\t\tdevice,\n\t\twidth,\n\t\theight,\n\t\tfront: make(\"trails_front\"),\n\t\tback: make(\"trails_back\"),\n\t\tframe: -1\n\t};\n\teffect.feedbackHistory = next;\n\treturn next;\n}\nasync function childAt(args, frame, compositionStart, h) {\n\tconst child = args.props.virtualMedia?.children?.[0];\n\tif (!child) return null;\n\treturn drawChildToTexture(args, child, {\n\t\texclude: [h.front, h.back],\n\t\tprops: {\n\t\t\t...args.props,\n\t\t\tvirtualMedia: child,\n\t\t\tframe,\n\t\t\tcompositionFrame: compositionStart + frame\n\t\t}\n\t});\n}\nfunction swap(h) {\n\tconst t = h.front;\n\th.front = h.back;\n\th.back = t;\n}\nasync function stepTrails(args, h, v, frame, compositionStart, fresh) {\n\tconst cur = await childAt(args, frame, compositionStart, h);\n\tif (!cur) return;\n\tconst r = resources(args.ctx.device);\n\tconst uniforms = new Float32Array([\n\t\tv.decay,\n\t\t{\n\t\t\tover: 0,\n\t\t\tadd: 1,\n\t\t\tmax: 2,\n\t\t\tblend: 3\n\t\t}[v.mode] ?? 0,\n\t\tv.zoom,\n\t\tv.rotation * Math.PI / 180,\n\t\tv.offsetX / h.width,\n\t\tv.offsetY / h.height,\n\t\tv.hueShift * Math.PI / 180,\n\t\tfresh ? 1 : 0\n\t]);\n\tdrawFullscreenPass(args.encoder, h.back.createView(), r.pipeline, [args.ctx.device.createBindGroup({\n\t\tlayout: r.layout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: args.ctx.renderer.getTemporaryBuffer(uniforms) }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: h.front.createView()\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: cur.view\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: r.sampler\n\t\t\t}\n\t\t]\n\t})]);\n\tswap(h);\n\th.frame = frame;\n}\nfunction num(v, fallback) {\n\treturn typeof v === \"number\" && Number.isFinite(v) ? v : fallback;\n}\nconst TrailsWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Trails\" || !op.effect?.resolveUniforms) return;\n\tif (!props.virtualMedia?.children?.[0]) return;\n\tpass.end();\n\tconst fps = props.fps || 30;\n\tconst local = Math.max(0, Math.round(props.frame ?? 0));\n\tconst compositionFrame = Math.round(props.compositionFrame ?? local);\n\tconst compositionStart = compositionFrame - local;\n\tconst raw = op.effect.resolveUniforms({\n\t\tframe: compositionFrame,\n\t\tfps,\n\t\ttime: compositionFrame / fps\n\t});\n\tconst h = historyFor(op.effect, ctx.device, targetWidth, targetHeight);\n\t{\n\t\tconst v = {\n\t\t\tdecay: Math.min(1, Math.max(0, num(raw.decay, .9))),\n\t\t\tmode: raw.mode ?? \"blend\",\n\t\t\tzoom: num(raw.zoom, 1),\n\t\t\trotation: num(raw.rotation, 0),\n\t\t\toffsetX: num(raw.offsetX, 0),\n\t\t\toffsetY: num(raw.offsetY, 0),\n\t\t\thueShift: num(raw.hueShift, 0),\n\t\t\twarmup: Math.max(0, Math.round(num(raw.warmup, 60)))\n\t\t};\n\t\tif (h.frame !== local) {\n\t\t\tlet start = local;\n\t\t\tif (h.frame === local - 1) start = local;\n\t\t\telse {\n\t\t\t\tconst needed = v.decay > 0 && v.decay < 1 ? Math.ceil(Math.log(.005) / Math.log(v.decay)) : v.warmup;\n\t\t\t\tstart = Math.max(0, local - Math.min(v.warmup, needed));\n\t\t\t\th.frame = -1;\n\t\t\t}\n\t\t\tfor (let f = start; f <= local; f++) await stepTrails(args, h, v, f, compositionStart, h.frame < 0);\n\t\t}\n\t}\n\tdrawTextureToTarget(args, h.front);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: TrailsWebGPURenderer });\n\n//#endregion\nexport { TrailsWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-C37o-6Mg.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"renderer-pnYj1REL.mjs","names":[],"sources":["../../../nodes/node-trails/dist/renderers-C37o-6Mg.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { FULLSCREEN_QUAD_WGSL, drawChildToTexture, drawFullscreenPass, drawTextureToTarget, fragmentBindGroupLayout, perDevice } from \"@framefields/node-sdk/gpu\";\n\n//#region src/renderers/webgpu-renderer.ts\nconst HISTORY_FORMAT = \"rgba16float\";\nconst TRAILS_WGSL = `\nstruct U { a : vec4<f32>, b : vec4<f32> };\n@group(0) @binding(0) var<uniform> u : U;\n@group(0) @binding(1) var historyTex : texture_2d<f32>;\n@group(0) @binding(2) var currentTex : texture_2d<f32>;\n@group(0) @binding(3) var samp : sampler;\n${FULLSCREEN_QUAD_WGSL}\n\n// Hue rotation in YIQ: linear, so it works on premultiplied color.\nfn hueRotate(c : vec3<f32>, angle : f32) -> vec3<f32> {\n\tlet yiq = mat3x3<f32>(0.299, 0.596, 0.211, 0.587, -0.274, -0.523, 0.114, -0.322, 0.312) * c;\n\tlet cs = cos(angle);\n\tlet sn = sin(angle);\n\tlet rot = vec3<f32>(yiq.x, yiq.y * cs - yiq.z * sn, yiq.y * sn + yiq.z * cs);\n\treturn mat3x3<f32>(1.0, 1.0, 1.0, 0.956, -0.272, -1.106, 0.621, -0.647, 1.703) * rot;\n}\n\n@fragment fn fs(in : VSOut) -> @location(0) vec4<f32> {\n\tlet decay = u.a.x;\n\tlet mode = u.a.y;\n\tlet zoom = max(u.a.z, 1e-3);\n\tlet angle = u.a.w;\n\tlet offset = u.b.xy;\n\tlet hue = u.b.z;\n\tlet fresh = u.b.w;\n\tlet cur = textureSampleLevel(currentTex, samp, in.uv, 0.0);\n\tif (fresh > 0.5) { return cur; }\n\tlet c = in.uv - 0.5;\n\tlet cs = cos(-angle);\n\tlet sn = sin(-angle);\n\tlet src = vec2<f32>(c.x * cs - c.y * sn, c.x * sn + c.y * cs) / zoom + 0.5 - offset;\n\tvar hist = vec4<f32>(0.0);\n\tif (all(src >= vec2<f32>(0.0)) && all(src <= vec2<f32>(1.0))) {\n\t\thist = textureSampleLevel(historyTex, samp, src, 0.0);\n\t}\n\tif (hue != 0.0) { hist = vec4<f32>(max(hueRotate(hist.rgb, hue), vec3<f32>(0.0)), hist.a); }\n\thist *= decay;\n\tif (mode < 0.5) { return cur + hist * (1.0 - cur.a); }\n\tif (mode < 1.5) { return vec4<f32>(cur.rgb + hist.rgb, min(cur.a + hist.a, 1.0)); }\n\tif (mode < 2.5) { return max(cur, hist); }\n\t// blend: a running average, so opaque footage shows its own echoes.\n\treturn mix(cur, hist / max(decay, 1e-4), decay);\n}\n`;\nconst resources = perDevice((device) => {\n\tconst layout = fragmentBindGroupLayout(device, [\n\t\t\"uniform\",\n\t\t\"texture\",\n\t\t\"texture\",\n\t\t\"sampler\"\n\t], \"trails_layout\");\n\tconst module = device.createShaderModule({\n\t\tcode: TRAILS_WGSL,\n\t\tlabel: \"trails.wgsl\"\n\t});\n\treturn {\n\t\tlayout,\n\t\tpipeline: device.createRenderPipeline({\n\t\t\tlabel: \"trails\",\n\t\t\tlayout: device.createPipelineLayout({ bindGroupLayouts: [layout] }),\n\t\t\tvertex: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"vs\"\n\t\t\t},\n\t\t\tfragment: {\n\t\t\t\tmodule,\n\t\t\t\tentryPoint: \"fs\",\n\t\t\t\ttargets: [{ format: HISTORY_FORMAT }]\n\t\t\t},\n\t\t\tprimitive: { topology: \"triangle-strip\" }\n\t\t}),\n\t\tsampler: device.createSampler({\n\t\t\tmagFilter: \"linear\",\n\t\t\tminFilter: \"linear\"\n\t\t})\n\t};\n});\nfunction historyFor(effect, device, width, height) {\n\tconst h = effect.feedbackHistory;\n\tif (h && h.device === device && h.width === width && h.height === height) return h;\n\th?.front.destroy();\n\th?.back.destroy();\n\tconst make = (label) => device.createTexture({\n\t\tlabel,\n\t\tsize: [width, height],\n\t\tformat: HISTORY_FORMAT,\n\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST\n\t});\n\tconst next = {\n\t\tdevice,\n\t\twidth,\n\t\theight,\n\t\tfront: make(\"trails_front\"),\n\t\tback: make(\"trails_back\"),\n\t\tframe: -1\n\t};\n\teffect.feedbackHistory = next;\n\treturn next;\n}\nasync function childAt(args, frame, compositionStart, h) {\n\tconst child = args.props.virtualMedia?.children?.[0];\n\tif (!child) return null;\n\treturn drawChildToTexture(args, child, {\n\t\texclude: [h.front, h.back],\n\t\tprops: {\n\t\t\t...args.props,\n\t\t\tvirtualMedia: child,\n\t\t\tframe,\n\t\t\tcompositionFrame: compositionStart + frame\n\t\t}\n\t});\n}\nfunction swap(h) {\n\tconst t = h.front;\n\th.front = h.back;\n\th.back = t;\n}\nasync function stepTrails(args, h, v, frame, compositionStart, fresh) {\n\tconst cur = await childAt(args, frame, compositionStart, h);\n\tif (!cur) return;\n\tconst r = resources(args.ctx.device);\n\tconst uniforms = new Float32Array([\n\t\tv.decay,\n\t\t{\n\t\t\tover: 0,\n\t\t\tadd: 1,\n\t\t\tmax: 2,\n\t\t\tblend: 3\n\t\t}[v.mode] ?? 0,\n\t\tv.zoom,\n\t\tv.rotation * Math.PI / 180,\n\t\tv.offsetX / h.width,\n\t\tv.offsetY / h.height,\n\t\tv.hueShift * Math.PI / 180,\n\t\tfresh ? 1 : 0\n\t]);\n\tdrawFullscreenPass(args.encoder, h.back.createView(), r.pipeline, [args.ctx.device.createBindGroup({\n\t\tlayout: r.layout,\n\t\tentries: [\n\t\t\t{\n\t\t\t\tbinding: 0,\n\t\t\t\tresource: { buffer: args.ctx.renderer.getTemporaryBuffer(uniforms) }\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 1,\n\t\t\t\tresource: h.front.createView()\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 2,\n\t\t\t\tresource: cur.view\n\t\t\t},\n\t\t\t{\n\t\t\t\tbinding: 3,\n\t\t\t\tresource: r.sampler\n\t\t\t}\n\t\t]\n\t})]);\n\tswap(h);\n\th.frame = frame;\n}\nfunction num(v, fallback) {\n\treturn typeof v === \"number\" && Number.isFinite(v) ? v : fallback;\n}\nconst TrailsWebGPURenderer = async (args) => {\n\tconst { ctx, pass, targetWidth, targetHeight, props } = args;\n\tconst op = props.virtualMedia?.operation;\n\tif (op?.op !== \"Trails\" || !op.effect?.resolveUniforms) return;\n\tif (!props.virtualMedia?.children?.[0]) return;\n\tpass.end();\n\tconst fps = props.fps || 30;\n\tconst local = Math.max(0, Math.round(props.frame ?? 0));\n\tconst compositionFrame = Math.round(props.compositionFrame ?? local);\n\tconst compositionStart = compositionFrame - local;\n\tconst raw = op.effect.resolveUniforms({\n\t\tframe: compositionFrame,\n\t\tfps,\n\t\ttime: compositionFrame / fps\n\t});\n\tconst h = historyFor(op.effect, ctx.device, targetWidth, targetHeight);\n\t{\n\t\tconst v = {\n\t\t\tdecay: Math.min(1, Math.max(0, num(raw.decay, .9))),\n\t\t\tmode: raw.mode ?? \"blend\",\n\t\t\tzoom: num(raw.zoom, 1),\n\t\t\trotation: num(raw.rotation, 0),\n\t\t\toffsetX: num(raw.offsetX, 0),\n\t\t\toffsetY: num(raw.offsetY, 0),\n\t\t\thueShift: num(raw.hueShift, 0),\n\t\t\twarmup: Math.max(0, Math.round(num(raw.warmup, 60)))\n\t\t};\n\t\tif (h.frame !== local) {\n\t\t\tlet start = local;\n\t\t\tif (h.frame === local - 1) start = local;\n\t\t\telse {\n\t\t\t\tconst needed = v.decay > 0 && v.decay < 1 ? Math.ceil(Math.log(.005) / Math.log(v.decay)) : v.warmup;\n\t\t\t\tstart = Math.max(0, local - Math.min(v.warmup, needed));\n\t\t\t\th.frame = -1;\n\t\t\t}\n\t\t\tfor (let f = start; f <= local; f++) await stepTrails(args, h, v, f, compositionStart, h.frame < 0);\n\t\t}\n\t}\n\tdrawTextureToTarget(args, h.front);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ WebGPURenderer: TrailsWebGPURenderer });\n\n//#endregion\nexport { TrailsWebGPURenderer as n, renderers_default as t };\n//# sourceMappingURL=renderers-C37o-6Mg.mjs.map"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { dn as resolveString, ln as resolveNumber } from "./dist-CL5JOMSp.mjs";
1
+ import { bn as resolveString, vn as resolveNumber } from "./dist-BRXsfWKQ.mjs";
2
2
  import { n as defineRenderer } from "./renderer-BgmO1Dzw.mjs";
3
- import { In as signalRegistry, Tt as AudioSignalComputePipeline, rt as shaderStore } from "./dist-Wsjx_Rza.mjs";
3
+ import { In as signalRegistry, Tt as AudioSignalComputePipeline, rt as shaderStore } from "./dist-BHTd-EC1.mjs";
4
4
 
5
5
  //#region ../../nodes/node-audio-signal-extractor/dist/renderers-CP8CFWDs.mjs
6
6
  const audioSignalExtractorAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {
@@ -49,4 +49,4 @@ var renderers_default = defineRenderer({ audioProcessor: audioSignalExtractorAud
49
49
 
50
50
  //#endregion
51
51
  export { renderers_default as t };
52
- //# sourceMappingURL=renderers-CP8CFWDs-CPfe6IN0.mjs.map
52
+ //# sourceMappingURL=renderers-CP8CFWDs-CDikhBRO.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderers-CP8CFWDs-CPfe6IN0.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/renderers-CP8CFWDs.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveNumber, resolveString } from \"@framefields/node-sdk\";\nimport { AudioSignalComputePipeline, shaderStore, signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst audioSignalExtractorAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tif (!ctx?.device) return;\n\tif (!channels || channels.length === 0 || channels[0].length === 0) return;\n\tconst op = virtualMedia.operation || {};\n\tconst nodeId = op.nodeId || op.id || \"audio-signal-extractor\";\n\tconst fps = ctx.fps ?? 24;\n\tconst mode = resolveString(op.extractionMode, \"\");\n\tconst curveStr = resolveString(op.curve, \"\");\n\tconst config = {\n\t\textractionMode: mode || void 0,\n\t\tattackMs: resolveNumber(op.attackMs, 10),\n\t\treleaseMs: resolveNumber(op.releaseMs, 120),\n\t\tsensitivity: resolveNumber(op.sensitivity, 1),\n\t\tnoiseFloorDb: resolveNumber(op.noiseFloorDb, -45),\n\t\tdynamicRangeDb: resolveNumber(op.dynamicRangeDb, 36),\n\t\tsmoothing: resolveNumber(op.smoothing, .15),\n\t\tcurve: curveStr || void 0,\n\t\tbeatThreshold: resolveNumber(op.beatThreshold, .55),\n\t\tbeatDecayMs: resolveNumber(op.beatDecayMs, 80)\n\t};\n\tconst signals = await AudioSignalComputePipeline.extractFeatures(ctx.device, channels, sampleRate, fps, config, 512);\n\tsignalRegistry.registerBuffer(ctx.device, nodeId, signals.primaryBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_beat`, signals.beatBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_bass`, signals.bassBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_energy`, signals.energyBuffer, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, nodeId, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_beat`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_bass`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_energy`, signals.texture, signals.textureView, ctx.renderId);\n\tconst fnName = `signal_${nodeId.replace(/[^a-zA-Z0-9]/g, \"_\")}`;\n\tconst wgsl = `\nfn ${fnName}(t: f32, x: f32, y: f32, z: f32, i: u32, n: u32, frame: u32, color: vec4f, t_elapsed: f32, duration: f32) -> f32 {\n return 0.0f;\n}\n`;\n\tshaderStore.register(nodeId, {\n\t\twgsl,\n\t\tname: fnName,\n\t\toutputType: \"f32\",\n\t\tfnParams: []\n\t}, ctx.renderId);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: audioSignalExtractorAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-CP8CFWDs.mjs.map"],"mappings":";;;;;AAKA,MAAM,qCAAqC,OAAO,UAAU,YAAY,cAAc,QAAQ;AAC7F,KAAI,CAAC,KAAK,OAAQ;AAClB,KAAI,CAAC,YAAY,SAAS,WAAW,KAAK,SAAS,GAAG,WAAW,EAAG;CACpE,MAAM,KAAK,aAAa,aAAa,EAAE;CACvC,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM;CACrC,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,OAAO,cAAc,GAAG,gBAAgB,GAAG;CACjD,MAAM,WAAW,cAAc,GAAG,OAAO,GAAG;CAC5C,MAAM,SAAS;EACd,gBAAgB,QAAQ,KAAK;EAC7B,UAAU,cAAc,GAAG,UAAU,GAAG;EACxC,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,aAAa,cAAc,GAAG,aAAa,EAAE;EAC7C,cAAc,cAAc,GAAG,cAAc,IAAI;EACjD,gBAAgB,cAAc,GAAG,gBAAgB,GAAG;EACpD,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,OAAO,YAAY,KAAK;EACxB,eAAe,cAAc,GAAG,eAAe,IAAI;EACnD,aAAa,cAAc,GAAG,aAAa,GAAG;EAC9C;CACD,MAAM,UAAU,MAAM,2BAA2B,gBAAgB,IAAI,QAAQ,UAAU,YAAY,KAAK,QAAQ,IAAI;AACpH,gBAAe,eAAe,IAAI,QAAQ,QAAQ,QAAQ,eAAe,IAAI,SAAS;AACtF,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,cAAc,IAAI,SAAS;AACjG,gBAAe,gBAAgB,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AACtG,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;CAClH,MAAM,SAAS,UAAU,OAAO,QAAQ,iBAAiB,IAAI;CAC7D,MAAM,OAAO;KACT,OAAO;;;;AAIX,aAAY,SAAS,QAAQ;EAC5B;EACA,MAAM;EACN,YAAY;EACZ,UAAU,EAAE;EACZ,EAAE,IAAI,SAAS;;AAKjB,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,oCAAoC,CAAC"}
1
+ {"version":3,"file":"renderers-CP8CFWDs-CDikhBRO.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/renderers-CP8CFWDs.mjs"],"sourcesContent":["import { defineRenderer } from \"@framefields/node-sdk/renderer\";\nimport { resolveNumber, resolveString } from \"@framefields/node-sdk\";\nimport { AudioSignalComputePipeline, shaderStore, signalRegistry } from \"@framefields/webgpu-renderers\";\n\n//#region src/renderers/audio-processor.ts\nconst audioSignalExtractorAudioProcessor = async (channels, sampleRate, virtualMedia, ctx) => {\n\tif (!ctx?.device) return;\n\tif (!channels || channels.length === 0 || channels[0].length === 0) return;\n\tconst op = virtualMedia.operation || {};\n\tconst nodeId = op.nodeId || op.id || \"audio-signal-extractor\";\n\tconst fps = ctx.fps ?? 24;\n\tconst mode = resolveString(op.extractionMode, \"\");\n\tconst curveStr = resolveString(op.curve, \"\");\n\tconst config = {\n\t\textractionMode: mode || void 0,\n\t\tattackMs: resolveNumber(op.attackMs, 10),\n\t\treleaseMs: resolveNumber(op.releaseMs, 120),\n\t\tsensitivity: resolveNumber(op.sensitivity, 1),\n\t\tnoiseFloorDb: resolveNumber(op.noiseFloorDb, -45),\n\t\tdynamicRangeDb: resolveNumber(op.dynamicRangeDb, 36),\n\t\tsmoothing: resolveNumber(op.smoothing, .15),\n\t\tcurve: curveStr || void 0,\n\t\tbeatThreshold: resolveNumber(op.beatThreshold, .55),\n\t\tbeatDecayMs: resolveNumber(op.beatDecayMs, 80)\n\t};\n\tconst signals = await AudioSignalComputePipeline.extractFeatures(ctx.device, channels, sampleRate, fps, config, 512);\n\tsignalRegistry.registerBuffer(ctx.device, nodeId, signals.primaryBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_beat`, signals.beatBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_bass`, signals.bassBuffer, ctx.renderId);\n\tsignalRegistry.registerBuffer(ctx.device, `${nodeId}_energy`, signals.energyBuffer, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, nodeId, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_beat`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_bass`, signals.texture, signals.textureView, ctx.renderId);\n\tsignalRegistry.registerTexture(ctx.device, `${nodeId}_energy`, signals.texture, signals.textureView, ctx.renderId);\n\tconst fnName = `signal_${nodeId.replace(/[^a-zA-Z0-9]/g, \"_\")}`;\n\tconst wgsl = `\nfn ${fnName}(t: f32, x: f32, y: f32, z: f32, i: u32, n: u32, frame: u32, color: vec4f, t_elapsed: f32, duration: f32) -> f32 {\n return 0.0f;\n}\n`;\n\tshaderStore.register(nodeId, {\n\t\twgsl,\n\t\tname: fnName,\n\t\toutputType: \"f32\",\n\t\tfnParams: []\n\t}, ctx.renderId);\n};\n\n//#endregion\n//#region src/renderers/index.ts\nvar renderers_default = defineRenderer({ audioProcessor: audioSignalExtractorAudioProcessor });\n\n//#endregion\nexport { renderers_default as t };\n//# sourceMappingURL=renderers-CP8CFWDs.mjs.map"],"mappings":";;;;;AAKA,MAAM,qCAAqC,OAAO,UAAU,YAAY,cAAc,QAAQ;AAC7F,KAAI,CAAC,KAAK,OAAQ;AAClB,KAAI,CAAC,YAAY,SAAS,WAAW,KAAK,SAAS,GAAG,WAAW,EAAG;CACpE,MAAM,KAAK,aAAa,aAAa,EAAE;CACvC,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM;CACrC,MAAM,MAAM,IAAI,OAAO;CACvB,MAAM,OAAO,cAAc,GAAG,gBAAgB,GAAG;CACjD,MAAM,WAAW,cAAc,GAAG,OAAO,GAAG;CAC5C,MAAM,SAAS;EACd,gBAAgB,QAAQ,KAAK;EAC7B,UAAU,cAAc,GAAG,UAAU,GAAG;EACxC,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,aAAa,cAAc,GAAG,aAAa,EAAE;EAC7C,cAAc,cAAc,GAAG,cAAc,IAAI;EACjD,gBAAgB,cAAc,GAAG,gBAAgB,GAAG;EACpD,WAAW,cAAc,GAAG,WAAW,IAAI;EAC3C,OAAO,YAAY,KAAK;EACxB,eAAe,cAAc,GAAG,eAAe,IAAI;EACnD,aAAa,cAAc,GAAG,aAAa,GAAG;EAC9C;CACD,MAAM,UAAU,MAAM,2BAA2B,gBAAgB,IAAI,QAAQ,UAAU,YAAY,KAAK,QAAQ,IAAI;AACpH,gBAAe,eAAe,IAAI,QAAQ,QAAQ,QAAQ,eAAe,IAAI,SAAS;AACtF,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,YAAY,IAAI,SAAS;AAC7F,gBAAe,eAAe,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,cAAc,IAAI,SAAS;AACjG,gBAAe,gBAAgB,IAAI,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AACtG,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,QAAQ,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;AAChH,gBAAe,gBAAgB,IAAI,QAAQ,GAAG,OAAO,UAAU,QAAQ,SAAS,QAAQ,aAAa,IAAI,SAAS;CAClH,MAAM,SAAS,UAAU,OAAO,QAAQ,iBAAiB,IAAI;CAC7D,MAAM,OAAO;KACT,OAAO;;;;AAIX,aAAY,SAAS,QAAQ;EAC5B;EACA,MAAM;EACN,YAAY;EACZ,UAAU,EAAE;EACZ,EAAE,IAAI,SAAS;;AAKjB,IAAI,oBAAoB,eAAe,EAAE,gBAAgB,oCAAoC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import "../chunk-D7gtBK74.mjs";
2
- import { D as SignalRegistry, Ga as SignalContext, Gs as signal, Ho as computed, Ks as signalBuilder, O as SignalRegistryResource, P as buildWGSLSignalFn, Uo as cosineSignal, Va as Signal, eo as SignalValue, h as MasterAudioEntry, ki as FrameSignal, q as signalRegistry, qs as sineSignal, s as AudioSignalComputePipeline, to as SineSignalOptions } from "../index-kj5uSzaI.mjs";
3
- import "../renderer-D1fjdDVu.mjs";
4
- import "../renderer-BHjw4EdY.mjs";
5
- import { i as index_d_exports, n as index_d_exports$1, r as index_d_exports$3, t as index_d_exports$2 } from "../index-C6ihzCpZ.mjs";
6
- import { i as _default, n as AudioSignalOptions, r as ExtractedAudioSignalsBundle, t as AudioSignal } from "../audio-WcPMxtcz.mjs";
2
+ import { $o as computed, D as SignalRegistry, O as SignalRegistryResource, P as buildWGSLSignalFn, Za as Signal, dc as signalBuilder, do as SineSignalOptions, es as cosineSignal, fc as sineSignal, h as MasterAudioEntry, ki as FrameSignal, q as signalRegistry, s as AudioSignalComputePipeline, to as SignalContext, uc as signal, uo as SignalValue } from "../index-B1ENegOQ.mjs";
3
+ import "../renderer-CrhJJKFY.mjs";
4
+ import "../renderer-BLEmr0Lt.mjs";
5
+ import { i as index_d_exports, n as index_d_exports$1, r as index_d_exports$3, t as index_d_exports$2 } from "../index-l1yRugLc.mjs";
6
+ import { i as _default, n as AudioSignalOptions, r as ExtractedAudioSignalsBundle, t as AudioSignal } from "../audio-tL8CcPra.mjs";
7
7
  export { AudioSignal, AudioSignalComputePipeline, index_d_exports as AudioSignalExtractorNode, AudioSignalOptions, ExtractedAudioSignalsBundle, FrameSignal, MasterAudioEntry, Signal, SignalContext, index_d_exports$1 as SignalGateNode, index_d_exports$2 as SignalMathNode, index_d_exports$3 as SignalNode, SignalRegistry, SignalRegistryResource, SignalValue, SineSignalOptions, buildWGSLSignalFn, computed, cosineSignal, _default as modulateRenderer, signal, signalBuilder, signalRegistry, sineSignal };
@@ -1,10 +1,10 @@
1
1
  import "../chunk-D7gtBK74.mjs";
2
- import { H as Signal, _n as signalBuilder, gn as signal, mt as cosineSignal, pt as computed, vn as sineSignal } from "../dist-CL5JOMSp.mjs";
3
- import { In as signalRegistry, Tt as AudioSignalComputePipeline, Ut as SignalRegistry, fn as buildWGSLSignalFn } from "../dist-Wsjx_Rza.mjs";
4
- import "../renderers-CP8CFWDs-CPfe6IN0.mjs";
5
- import { i as dist_exports, n as dist_exports$1, r as dist_exports$3, t as dist_exports$2 } from "../signals-BRgYyspQ.mjs";
6
- import { t as renderers_default } from "../renderer-BBnurLTw.mjs";
2
+ import { An as signalBuilder, K as Signal, jn as sineSignal, kn as signal, vt as computed, yt as cosineSignal } from "../dist-BRXsfWKQ.mjs";
3
+ import { In as signalRegistry, Tt as AudioSignalComputePipeline, Ut as SignalRegistry, fn as buildWGSLSignalFn } from "../dist-BHTd-EC1.mjs";
4
+ import "../renderers-CP8CFWDs-CDikhBRO.mjs";
5
+ import { i as dist_exports, n as dist_exports$1, r as dist_exports$3, t as dist_exports$2 } from "../signals-BeAWA_1Y.mjs";
6
+ import { t as renderers_default } from "../renderer-CLypsmiH.mjs";
7
7
  import "../renderer-CdxNwGeb.mjs";
8
- import { t as AudioSignal } from "../audio-BHuVoNc-.mjs";
8
+ import { t as AudioSignal } from "../audio-j3ttoRDX.mjs";
9
9
 
10
10
  export { AudioSignal, AudioSignalComputePipeline, dist_exports as AudioSignalExtractorNode, Signal, dist_exports$1 as SignalGateNode, dist_exports$2 as SignalMathNode, dist_exports$3 as SignalNode, SignalRegistry, buildWGSLSignalFn, computed, cosineSignal, renderers_default as modulateRenderer, signal, signalBuilder, signalRegistry, sineSignal };
@@ -1,6 +1,6 @@
1
1
  import { n as __exportAll } from "./chunk-D7gtBK74.mjs";
2
- import { I as MultiOutputGenericSchema, W as SignalDataSchema, ht as createOutputItemSchema } from "./dist-CL5JOMSp.mjs";
3
- import { r as SignalResultSchema } from "./dist-PlaSQJ43.mjs";
2
+ import { B as MultiOutputGenericSchema, J as SignalDataSchema, bt as createOutputItemSchema } from "./dist-BRXsfWKQ.mjs";
3
+ import { r as SignalResultSchema } from "./dist-CPtFZxtu.mjs";
4
4
  import { z } from "zod";
5
5
 
6
6
  //#region ../../nodes/node-audio-signal-extractor/dist/index.mjs
@@ -221,4 +221,4 @@ const SignalMathResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z
221
221
 
222
222
  //#endregion
223
223
  export { dist_exports$3 as i, dist_exports$1 as n, dist_exports$2 as r, dist_exports as t };
224
- //# sourceMappingURL=signals-BRgYyspQ.mjs.map
224
+ //# sourceMappingURL=signals-BeAWA_1Y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals-BRgYyspQ.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/index.mjs","../../../nodes/node-signal/dist/index.mjs","../../../nodes/node-signal-gate/dist/index.mjs","../../../nodes/node-signal-math/dist/index.mjs"],"sourcesContent":["import \"./renderers-CP8CFWDs.mjs\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst ExtractionModeEnum = z.enum([\n\t\"rms_envelope\",\n\t\"transient_beat\",\n\t\"sub_bass\",\n\t\"bass\",\n\t\"mid\",\n\t\"high\",\n\t\"spectral_flux\"\n]);\nconst SignalCurveEnum = z.enum([\n\t\"linear\",\n\t\"exponential\",\n\t\"logarithmic\",\n\t\"square\",\n\t\"smoothstep\"\n]);\nconst AudioSignalExtractorConfigSchema = z.object({\n\textractionMode: ExtractionModeEnum.default(\"rms_envelope\"),\n\tattackMs: z.number().min(.5).max(1e3).default(10),\n\treleaseMs: z.number().min(1).max(5e3).default(120),\n\tsensitivity: z.number().min(.1).max(10).default(1),\n\tnoiseFloorDb: z.number().min(-90).max(0).default(-48),\n\tdynamicRangeDb: z.number().min(6).max(80).default(48),\n\tautoRange: z.boolean().default(true),\n\tsmoothing: z.number().min(0).max(1).default(.15),\n\tcurve: SignalCurveEnum.default(\"linear\"),\n\tbeatThreshold: z.number().min(.01).max(1).default(.08),\n\tbeatDecayMs: z.number().min(10).max(1e3).default(80),\n\tpreviewMode: z.enum([\n\t\t\"waveform\",\n\t\t\"envelope\",\n\t\t\"beat_markers\",\n\t\t\"spectrum\"\n\t]).default(\"envelope\")\n});\nconst AudioSignalExtractorResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.any()));\n\n//#endregion\nexport { AudioSignalExtractorConfigSchema, AudioSignalExtractorResultSchema, ExtractionModeEnum, SignalCurveEnum };\n//# sourceMappingURL=index.mjs.map","import { SignalResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst WGSL_OUTPUT_TYPES = [\"f32\"];\nconst WGSL_PARAM_TYPES = [\n\t\"f32\",\n\t\"i32\",\n\t\"u32\",\n\t\"vec2f\",\n\t\"vec3f\",\n\t\"vec4f\"\n];\nconst FnParamSchema = z.object({\n\tname: z.string().regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, \"Must be a valid WGSL identifier\"),\n\ttype: z.enum(WGSL_PARAM_TYPES),\n\tdefaultValue: z.number()\n});\nconst SignalNodeConfigSchema = z.object({\n\tamplitude: z.number().min(0).default(1),\n\tfrequency: z.number().min(0).default(1),\n\tphase: z.number().min(-2 * Math.PI).max(2 * Math.PI).default(0),\n\toffset: z.number().default(0),\n\tamplitudeMin: z.number().default(-1),\n\tamplitudeMax: z.number().default(1),\n\tspatialScale: z.number().min(0).default(1),\n\tspatialSpeed: z.number().default(1),\n\tfmAmplitude: z.number().min(0).default(1),\n\tfmFrequency: z.number().min(0).default(.5),\n\tgateEnabled: z.boolean().default(false),\n\tgateStartFrame: z.number().int().min(0).default(0),\n\tgateEndFrame: z.number().int().min(0).default(100),\n\tgateIdleValue: z.number().default(0),\n\tenvelopeUseFrame: z.boolean().default(true),\n\tbaseEnabled: z.boolean().default(true),\n\tbaseType: z.enum([\n\t\t\"sine\",\n\t\t\"triangle\",\n\t\t\"sawtooth\",\n\t\t\"square\",\n\t\t\"constant\",\n\t\t\"noise_smooth\",\n\t\t\"noise_white\",\n\t\t\"pulse\",\n\t\t\"bounce\",\n\t\t\"staircase\",\n\t\t\"custom\"\n\t]).default(\"sine\"),\n\tfmEnabled: z.boolean().default(false),\n\tenvelopeEnabled: z.boolean().default(false),\n\tenvelopeFamily: z.enum([\n\t\t\"linear\",\n\t\t\"sine\",\n\t\t\"quad\",\n\t\t\"cubic\",\n\t\t\"quart\",\n\t\t\"quint\",\n\t\t\"expo\",\n\t\t\"circ\",\n\t\t\"back\",\n\t\t\"elastic\",\n\t\t\"bounce\",\n\t\t\"smoothstep\",\n\t\t\"smootherstep\"\n\t]).default(\"sine\"),\n\tenvelopeMode: z.enum([\n\t\t\"in\",\n\t\t\"out\",\n\t\t\"in_out\"\n\t]).default(\"in_out\"),\n\tenvelopePattern: z.enum([\n\t\t\"ramp_up\",\n\t\t\"ramp_down\",\n\t\t\"bell\",\n\t\t\"loop\"\n\t]).default(\"ramp_up\"),\n\tenvelopeCycles: z.number().int().min(1).default(2),\n\tfnBody: z.string().default([\n\t\t\"// Bindings: t: f32 | x y z: f32 | i n frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return u.amplitude * sin(t * u.frequency * TAU + u.phase) + u.offset;\"\n\t].join(\"\\n\")),\n\tfnOutputType: z.enum(WGSL_OUTPUT_TYPES).default(\"f32\"),\n\tfnParams: z.array(FnParamSchema).default([]),\n\tpreviewMode: z.enum([\n\t\t\"pattern\",\n\t\t\"cartesian\",\n\t\t\"3d\"\n\t]).default(\"cartesian\")\n}).superRefine((data, ctx) => {\n\tif (data.amplitudeMax <= data.amplitudeMin) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"amplitudeMax\"],\n\t\tmessage: \"amplitudeMax must be greater than amplitudeMin\"\n\t});\n\tif (data.gateEndFrame <= data.gateStartFrame) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"gateEndFrame\"],\n\t\tmessage: \"gateEndFrame must be greater than gateStartFrame\"\n\t});\n});\n\n//#endregion\nexport { FnParamSchema, SignalNodeConfigSchema, SignalResultSchema, WGSL_OUTPUT_TYPES, WGSL_PARAM_TYPES };\n//# sourceMappingURL=index.mjs.map","import \"./renderer.mjs\";\nimport { SignalDataSchema } from \"@framefields/core\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst GateModeSchema = z.enum([\n\t\"gate\",\n\t\"trigger\",\n\t\"toggle\"\n]);\nconst SignalGateConfigSchema = z.object({\n\tthreshold: z.number().min(0).max(1).default(.5),\n\tdebounceMs: z.number().min(0).max(5e3).default(100),\n\tmode: GateModeSchema.default(\"gate\"),\n\tholdFrames: z.number().min(1).max(120).default(4),\n\tinvert: z.boolean().default(false)\n});\nconst SignalGateResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), SignalDataSchema));\n\n//#endregion\nexport { GateModeSchema, SignalGateConfigSchema, SignalGateResultSchema };\n//# sourceMappingURL=index.mjs.map","import { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst SignalMathOperationEnum = z.enum([\n\t\"remap\",\n\t\"normalize\",\n\t\"add\",\n\t\"subtract\",\n\t\"multiply\",\n\t\"divide\",\n\t\"invert\",\n\t\"clamp\",\n\t\"power\",\n\t\"smoothstep\",\n\t\"custom\"\n]);\nconst SignalMathConfigSchema = z.object({\n\toperation: SignalMathOperationEnum.default(\"remap\"),\n\tbValue: z.number().default(1),\n\tinMin: z.number().default(0),\n\tinMax: z.number().default(1),\n\toutMin: z.number().default(0),\n\toutMax: z.number().default(1),\n\tclampMin: z.number().default(0),\n\tclampMax: z.number().default(1),\n\texponent: z.number().default(2),\n\tedge0: z.number().default(0),\n\tedge1: z.number().default(1),\n\tcustomWGSL: z.string().default([\n\t\t\"// Variables in scope:\",\n\t\t\"// a: f32 (Signal A)\",\n\t\t\"// b: f32 (Signal B or uniform bValue)\",\n\t\t\"// a_min: f32, a_max: f32 (Signal A min/max stats)\",\n\t\t\"// t: f32 (seconds), t_norm: f32 [0..1], frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return a;\"\n\t].join(\"\\n\"))\n});\nconst SignalMathResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.record(z.string(), z.unknown())));\n\n//#endregion\nexport { SignalMathConfigSchema, SignalMathOperationEnum, SignalMathResultSchema };\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"signals-BeAWA_1Y.mjs","names":[],"sources":["../../../nodes/node-audio-signal-extractor/dist/index.mjs","../../../nodes/node-signal/dist/index.mjs","../../../nodes/node-signal-gate/dist/index.mjs","../../../nodes/node-signal-math/dist/index.mjs"],"sourcesContent":["import \"./renderers-CP8CFWDs.mjs\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst ExtractionModeEnum = z.enum([\n\t\"rms_envelope\",\n\t\"transient_beat\",\n\t\"sub_bass\",\n\t\"bass\",\n\t\"mid\",\n\t\"high\",\n\t\"spectral_flux\"\n]);\nconst SignalCurveEnum = z.enum([\n\t\"linear\",\n\t\"exponential\",\n\t\"logarithmic\",\n\t\"square\",\n\t\"smoothstep\"\n]);\nconst AudioSignalExtractorConfigSchema = z.object({\n\textractionMode: ExtractionModeEnum.default(\"rms_envelope\"),\n\tattackMs: z.number().min(.5).max(1e3).default(10),\n\treleaseMs: z.number().min(1).max(5e3).default(120),\n\tsensitivity: z.number().min(.1).max(10).default(1),\n\tnoiseFloorDb: z.number().min(-90).max(0).default(-48),\n\tdynamicRangeDb: z.number().min(6).max(80).default(48),\n\tautoRange: z.boolean().default(true),\n\tsmoothing: z.number().min(0).max(1).default(.15),\n\tcurve: SignalCurveEnum.default(\"linear\"),\n\tbeatThreshold: z.number().min(.01).max(1).default(.08),\n\tbeatDecayMs: z.number().min(10).max(1e3).default(80),\n\tpreviewMode: z.enum([\n\t\t\"waveform\",\n\t\t\"envelope\",\n\t\t\"beat_markers\",\n\t\t\"spectrum\"\n\t]).default(\"envelope\")\n});\nconst AudioSignalExtractorResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.any()));\n\n//#endregion\nexport { AudioSignalExtractorConfigSchema, AudioSignalExtractorResultSchema, ExtractionModeEnum, SignalCurveEnum };\n//# sourceMappingURL=index.mjs.map","import { SignalResultSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst WGSL_OUTPUT_TYPES = [\"f32\"];\nconst WGSL_PARAM_TYPES = [\n\t\"f32\",\n\t\"i32\",\n\t\"u32\",\n\t\"vec2f\",\n\t\"vec3f\",\n\t\"vec4f\"\n];\nconst FnParamSchema = z.object({\n\tname: z.string().regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, \"Must be a valid WGSL identifier\"),\n\ttype: z.enum(WGSL_PARAM_TYPES),\n\tdefaultValue: z.number()\n});\nconst SignalNodeConfigSchema = z.object({\n\tamplitude: z.number().min(0).default(1),\n\tfrequency: z.number().min(0).default(1),\n\tphase: z.number().min(-2 * Math.PI).max(2 * Math.PI).default(0),\n\toffset: z.number().default(0),\n\tamplitudeMin: z.number().default(-1),\n\tamplitudeMax: z.number().default(1),\n\tspatialScale: z.number().min(0).default(1),\n\tspatialSpeed: z.number().default(1),\n\tfmAmplitude: z.number().min(0).default(1),\n\tfmFrequency: z.number().min(0).default(.5),\n\tgateEnabled: z.boolean().default(false),\n\tgateStartFrame: z.number().int().min(0).default(0),\n\tgateEndFrame: z.number().int().min(0).default(100),\n\tgateIdleValue: z.number().default(0),\n\tenvelopeUseFrame: z.boolean().default(true),\n\tbaseEnabled: z.boolean().default(true),\n\tbaseType: z.enum([\n\t\t\"sine\",\n\t\t\"triangle\",\n\t\t\"sawtooth\",\n\t\t\"square\",\n\t\t\"constant\",\n\t\t\"noise_smooth\",\n\t\t\"noise_white\",\n\t\t\"pulse\",\n\t\t\"bounce\",\n\t\t\"staircase\",\n\t\t\"custom\"\n\t]).default(\"sine\"),\n\tfmEnabled: z.boolean().default(false),\n\tenvelopeEnabled: z.boolean().default(false),\n\tenvelopeFamily: z.enum([\n\t\t\"linear\",\n\t\t\"sine\",\n\t\t\"quad\",\n\t\t\"cubic\",\n\t\t\"quart\",\n\t\t\"quint\",\n\t\t\"expo\",\n\t\t\"circ\",\n\t\t\"back\",\n\t\t\"elastic\",\n\t\t\"bounce\",\n\t\t\"smoothstep\",\n\t\t\"smootherstep\"\n\t]).default(\"sine\"),\n\tenvelopeMode: z.enum([\n\t\t\"in\",\n\t\t\"out\",\n\t\t\"in_out\"\n\t]).default(\"in_out\"),\n\tenvelopePattern: z.enum([\n\t\t\"ramp_up\",\n\t\t\"ramp_down\",\n\t\t\"bell\",\n\t\t\"loop\"\n\t]).default(\"ramp_up\"),\n\tenvelopeCycles: z.number().int().min(1).default(2),\n\tfnBody: z.string().default([\n\t\t\"// Bindings: t: f32 | x y z: f32 | i n frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return u.amplitude * sin(t * u.frequency * TAU + u.phase) + u.offset;\"\n\t].join(\"\\n\")),\n\tfnOutputType: z.enum(WGSL_OUTPUT_TYPES).default(\"f32\"),\n\tfnParams: z.array(FnParamSchema).default([]),\n\tpreviewMode: z.enum([\n\t\t\"pattern\",\n\t\t\"cartesian\",\n\t\t\"3d\"\n\t]).default(\"cartesian\")\n}).superRefine((data, ctx) => {\n\tif (data.amplitudeMax <= data.amplitudeMin) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"amplitudeMax\"],\n\t\tmessage: \"amplitudeMax must be greater than amplitudeMin\"\n\t});\n\tif (data.gateEndFrame <= data.gateStartFrame) ctx.addIssue({\n\t\tcode: z.ZodIssueCode.custom,\n\t\tpath: [\"gateEndFrame\"],\n\t\tmessage: \"gateEndFrame must be greater than gateStartFrame\"\n\t});\n});\n\n//#endregion\nexport { FnParamSchema, SignalNodeConfigSchema, SignalResultSchema, WGSL_OUTPUT_TYPES, WGSL_PARAM_TYPES };\n//# sourceMappingURL=index.mjs.map","import \"./renderer.mjs\";\nimport { SignalDataSchema } from \"@framefields/core\";\nimport { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst GateModeSchema = z.enum([\n\t\"gate\",\n\t\"trigger\",\n\t\"toggle\"\n]);\nconst SignalGateConfigSchema = z.object({\n\tthreshold: z.number().min(0).max(1).default(.5),\n\tdebounceMs: z.number().min(0).max(5e3).default(100),\n\tmode: GateModeSchema.default(\"gate\"),\n\tholdFrames: z.number().min(1).max(120).default(4),\n\tinvert: z.boolean().default(false)\n});\nconst SignalGateResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), SignalDataSchema));\n\n//#endregion\nexport { GateModeSchema, SignalGateConfigSchema, SignalGateResultSchema };\n//# sourceMappingURL=index.mjs.map","import { MultiOutputGenericSchema, createOutputItemSchema } from \"@framefields/node-sdk\";\nimport { z } from \"zod\";\n\n//#region src/shared/config.ts\nconst SignalMathOperationEnum = z.enum([\n\t\"remap\",\n\t\"normalize\",\n\t\"add\",\n\t\"subtract\",\n\t\"multiply\",\n\t\"divide\",\n\t\"invert\",\n\t\"clamp\",\n\t\"power\",\n\t\"smoothstep\",\n\t\"custom\"\n]);\nconst SignalMathConfigSchema = z.object({\n\toperation: SignalMathOperationEnum.default(\"remap\"),\n\tbValue: z.number().default(1),\n\tinMin: z.number().default(0),\n\tinMax: z.number().default(1),\n\toutMin: z.number().default(0),\n\toutMax: z.number().default(1),\n\tclampMin: z.number().default(0),\n\tclampMax: z.number().default(1),\n\texponent: z.number().default(2),\n\tedge0: z.number().default(0),\n\tedge1: z.number().default(1),\n\tcustomWGSL: z.string().default([\n\t\t\"// Variables in scope:\",\n\t\t\"// a: f32 (Signal A)\",\n\t\t\"// b: f32 (Signal B or uniform bValue)\",\n\t\t\"// a_min: f32, a_max: f32 (Signal A min/max stats)\",\n\t\t\"// t: f32 (seconds), t_norm: f32 [0..1], frame: u32\",\n\t\t\"// Constants: PI, TAU, E\",\n\t\t\"return a;\"\n\t].join(\"\\n\"))\n});\nconst SignalMathResultSchema = MultiOutputGenericSchema(createOutputItemSchema(z.literal(\"Signal\"), z.record(z.string(), z.unknown())));\n\n//#endregion\nexport { SignalMathConfigSchema, SignalMathOperationEnum, SignalMathResultSchema };\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}