@luma.gl/shadertools 9.3.0-alpha.2 → 9.3.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.dev.js CHANGED
@@ -94,7 +94,9 @@ var __exports__ = (() => {
94
94
  // src/lib/utils/assert.ts
95
95
  function assert(condition, message) {
96
96
  if (!condition) {
97
- throw new Error(message || "shadertools: assertion failed.");
97
+ const error = new Error(message || "shadertools: assertion failed.");
98
+ Error.captureStackTrace?.(error, assert);
99
+ throw error;
98
100
  }
99
101
  }
100
102
 
package/dist/dist.min.js CHANGED
@@ -4,7 +4,7 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['luma'] = factory();
6
6
  else root['luma'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var pt=Object.create;var O=Object.defineProperty;var _t=Object.getOwnPropertyDescriptor;var mt=Object.getOwnPropertyNames;var gt=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var ht=(e,t,o)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var vt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),bt=(e,t)=>{for(var o in t)O(e,o,{get:t[o],enumerable:!0})},z=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of mt(t))!dt.call(e,n)&&n!==o&&O(e,n,{get:()=>t[n],enumerable:!(i=_t(t,n))||i.enumerable});return e},q=(e,t,o)=>(z(e,t,"default"),o&&z(o,t,"default")),de=(e,t,o)=>(o=e!=null?pt(gt(e)):{},z(t||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e)),At=e=>z(O({},"__esModule",{value:!0}),e);var he=(e,t,o)=>(ht(e,typeof t!="symbol"?t+"":t,o),o);var te=vt((fo,ve)=>{ve.exports=globalThis.luma});var H={};bt(H,{ShaderAssembler:()=>w,_getDependencyGraph:()=>D,_resolveModules:()=>Ne,assembleGLSLShaderPair:()=>K,capitalize:()=>E,checkShaderModuleDeprecations:()=>F,combineInjects:()=>Ce,convertToVec4:()=>le,dirlight:()=>pe,fp32:()=>Qe,fp64:()=>ot,fp64LowPart:()=>B,fp64arithmetic:()=>ce,fp64ify:()=>R,fp64ifyMatrix4:()=>U,fromHalfFloat:()=>Ye,generateShaderForModule:()=>ze,getPassthroughFS:()=>ke,getQualifierDetails:()=>Ue,getShaderInfo:()=>$,getShaderModuleDependencies:()=>y,getShaderModuleSource:()=>X,getShaderModuleUniforms:()=>Re,gouraudMaterial:()=>_e,initializeShaderModule:()=>W,initializeShaderModules:()=>v,lighting:()=>g,pbrMaterial:()=>ut,phongMaterial:()=>me,picking:()=>it,preprocess:()=>Y,random:()=>Ze,toHalfFloat:()=>Xe,typeToChannelCount:()=>Ge,typeToChannelSuffix:()=>He});q(H,de(te(),1));function S(e,t){if(!e)throw new Error(t||"shadertools: assertion failed.")}var oe={number:{type:"number",validate(e,t){return Number.isFinite(e)&&typeof t=="object"&&(t.max===void 0||e<=t.max)&&(t.min===void 0||e>=t.min)}},array:{type:"array",validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function Ae(e){let t={};for(let[o,i]of Object.entries(e))t[o]=St(i);return t}function Se(e,t,o){let i={};for(let[n,r]of Object.entries(t))e&&n in e&&!r.private?(r.validate&&S(r.validate(e[n],r),`${o}: invalid ${n}`),i[n]=e[n]):i[n]=r.value;return i}function St(e){let t=be(e);if(t!=="object")return{value:e,...oe[t],type:t};if(typeof e=="object")return e?e.type!==void 0?{...e,...oe[e.type],type:e.type}:e.value===void 0?{type:"object",value:e}:(t=be(e.value),{...e,...oe[t],type:t}):{type:"object",value:null};throw new Error("props")}function be(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var Ie=`#ifdef MODULE_LOGDEPTH
7
+ "use strict";var __exports__=(()=>{var pt=Object.create;var O=Object.defineProperty;var _t=Object.getOwnPropertyDescriptor;var mt=Object.getOwnPropertyNames;var gt=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var ht=(e,t,o)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var vt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),bt=(e,t)=>{for(var o in t)O(e,o,{get:t[o],enumerable:!0})},z=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of mt(t))!dt.call(e,n)&&n!==o&&O(e,n,{get:()=>t[n],enumerable:!(i=_t(t,n))||i.enumerable});return e},q=(e,t,o)=>(z(e,t,"default"),o&&z(o,t,"default")),de=(e,t,o)=>(o=e!=null?pt(gt(e)):{},z(t||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e)),At=e=>z(O({},"__esModule",{value:!0}),e);var he=(e,t,o)=>(ht(e,typeof t!="symbol"?t+"":t,o),o);var te=vt((fo,ve)=>{ve.exports=globalThis.luma});var H={};bt(H,{ShaderAssembler:()=>w,_getDependencyGraph:()=>D,_resolveModules:()=>Ne,assembleGLSLShaderPair:()=>K,capitalize:()=>E,checkShaderModuleDeprecations:()=>F,combineInjects:()=>Ce,convertToVec4:()=>le,dirlight:()=>pe,fp32:()=>Qe,fp64:()=>ot,fp64LowPart:()=>B,fp64arithmetic:()=>ce,fp64ify:()=>R,fp64ifyMatrix4:()=>U,fromHalfFloat:()=>Ye,generateShaderForModule:()=>ze,getPassthroughFS:()=>ke,getQualifierDetails:()=>Ue,getShaderInfo:()=>$,getShaderModuleDependencies:()=>y,getShaderModuleSource:()=>X,getShaderModuleUniforms:()=>Re,gouraudMaterial:()=>_e,initializeShaderModule:()=>W,initializeShaderModules:()=>v,lighting:()=>g,pbrMaterial:()=>ut,phongMaterial:()=>me,picking:()=>it,preprocess:()=>Y,random:()=>Ze,toHalfFloat:()=>Xe,typeToChannelCount:()=>Ge,typeToChannelSuffix:()=>He});q(H,de(te(),1));function b(e,t){if(!e){let o=new Error(t||"shadertools: assertion failed.");throw Error.captureStackTrace?.(o,b),o}}var oe={number:{type:"number",validate(e,t){return Number.isFinite(e)&&typeof t=="object"&&(t.max===void 0||e<=t.max)&&(t.min===void 0||e>=t.min)}},array:{type:"array",validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function Ae(e){let t={};for(let[o,i]of Object.entries(e))t[o]=St(i);return t}function Se(e,t,o){let i={};for(let[n,r]of Object.entries(t))e&&n in e&&!r.private?(r.validate&&b(r.validate(e[n],r),`${o}: invalid ${n}`),i[n]=e[n]):i[n]=r.value;return i}function St(e){let t=be(e);if(t!=="object")return{value:e,...oe[t],type:t};if(typeof e=="object")return e?e.type!==void 0?{...e,...oe[e.type],type:e.type}:e.value===void 0?{type:"object",value:e}:(t=be(e.value),{...e,...oe[t],type:t}):{type:"object",value:null};throw new Error("props")}function be(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var Ie=`#ifdef MODULE_LOGDEPTH
8
8
  logdepth_adjustPosition(gl_Position);
9
9
  #endif
10
10
  `,Le=`#ifdef MODULE_MATERIAL
@@ -29,7 +29,7 @@
29
29
  #endif
30
30
  `;var It={vertex:Ie,fragment:Le},Ee=/void\s+main\s*\([^)]*\)\s*\{\n?/,xe=/}\n?[^{}]*$/,ie=[],M="__LUMA_INJECT_DECLARATIONS__";function Pe(e){let t={vertex:{},fragment:{}};for(let o in e){let i=e[o],n=Lt(o);typeof i=="string"&&(i={order:0,injection:i}),t[n][o]=i}return t}function Lt(e){let t=e.slice(0,2);switch(t){case"vs":return"vertex";case"fs":return"fragment";default:throw new Error(t)}}function T(e,t,o,i=!1){let n=t==="vertex";for(let r in o){let a=o[r];a.sort((l,f)=>l.order-f.order),ie.length=a.length;for(let l=0,f=a.length;l<f;++l)ie[l]=a[l].injection;let s=`${ie.join(`
31
31
  `)}
32
- `;switch(r){case"vs:#decl":n&&(e=e.replace(M,s));break;case"vs:#main-start":n&&(e=e.replace(Ee,l=>l+s));break;case"vs:#main-end":n&&(e=e.replace(xe,l=>s+l));break;case"fs:#decl":n||(e=e.replace(M,s));break;case"fs:#main-start":n||(e=e.replace(Ee,l=>l+s));break;case"fs:#main-end":n||(e=e.replace(xe,l=>s+l));break;default:e=e.replace(r,l=>l+s)}}return e=e.replace(M,""),i&&(e=e.replace(/\}\s*$/,r=>r+It[t])),e}function Ce(e){let t={};return S(Array.isArray(e)&&e.length>1),e.forEach(o=>{for(let i in o)t[i]=t[i]?`${t[i]}
32
+ `;switch(r){case"vs:#decl":n&&(e=e.replace(M,s));break;case"vs:#main-start":n&&(e=e.replace(Ee,l=>l+s));break;case"vs:#main-end":n&&(e=e.replace(xe,l=>s+l));break;case"fs:#decl":n||(e=e.replace(M,s));break;case"fs:#main-start":n||(e=e.replace(Ee,l=>l+s));break;case"fs:#main-end":n||(e=e.replace(xe,l=>s+l));break;default:e=e.replace(r,l=>l+s)}}return e=e.replace(M,""),i&&(e=e.replace(/\}\s*$/,r=>r+It[t])),e}function Ce(e){let t={};return b(Array.isArray(e)&&e.length>1),e.forEach(o=>{for(let i in o)t[i]=t[i]?`${t[i]}
33
33
  ${o[i]}`:o[i]}),t}function v(e){e.map(t=>W(t))}function W(e){if(e.instance)return;v(e.dependencies||[]);let{propTypes:t={},deprecations:o=[],inject:i={}}=e,n={normalizedInjections:Pe(i),parsedDeprecations:Et(o)};t&&(n.propValidators=Ae(t)),e.instance=n;let r={};t&&(r=Object.entries(t).reduce((a,[s,l])=>{let f=l?.value;return f&&(a[s]=f),a},{})),e.defaultUniforms={...e.defaultUniforms,...r}}function Re(e,t,o){W(e);let i=o||{...e.defaultUniforms};return t&&e.getUniforms?e.getUniforms(t,i):Se(t,e.instance?.propValidators,e.name)}function F(e,t,o){e.deprecations?.forEach(i=>{i.regex?.test(t)&&(i.deprecated?o.deprecated(i.old,i.new)():o.removed(i.old,i.new)())})}function Et(e){return e.forEach(t=>{switch(t.type){case"function":t.regex=new RegExp(`\\b${t.old}\\(`);break;default:t.regex=new RegExp(`${t.type} ${t.old};`)}}),e}function y(e){v(e);let t={},o={};D({modules:e,level:0,moduleMap:t,moduleDepth:o});let i=Object.keys(o).sort((n,r)=>o[r]-o[n]).map(n=>t[n]);return v(i),i}function D(e){let{modules:t,level:o,moduleMap:i,moduleDepth:n}=e;if(o>=5)throw new Error("Possible loop in shader dependency graph");for(let r of t)i[r.name]=r,(n[r.name]===void 0||n[r.name]<o)&&(n[r.name]=o);for(let r of t)r.dependencies&&D({modules:r.dependencies,level:o+1,moduleMap:i,moduleDepth:n})}function xt(e){v(e);let t={},o={};return D({modules:e,level:0,moduleMap:t,moduleDepth:o}),e=Object.keys(o).sort((i,n)=>o[n]-o[i]).map(i=>t[i]),v(e),e}function Ne(e){return xt(e)}function Oe(e){switch(e?.gpu.toLowerCase()){case"apple":return`#define APPLE_GPU
34
34
  // Apple optimizes away the calculation necessary for emulated fp64
35
35
  #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
@@ -62,7 +62,7 @@ ${o[i]}`:o[i]}),t}function v(e){e.map(t=>W(t))}function W(e){if(e.instance)retur
62
62
 
63
63
  ${M}
64
64
  `,Ot=`precision highp float;
65
- `;function we(e){let t=y(e.modules||[]);return{source:Mt(e.platformInfo,{...e,source:e.source,stage:"vertex",modules:t}),getUniforms:Be(t)}}function K(e){let{vs:t,fs:o}=e,i=y(e.modules||[]);return{vs:ye(e.platformInfo,{...e,source:t,stage:"vertex",modules:i}),fs:ye(e.platformInfo,{...e,source:o,stage:"fragment",modules:i}),getUniforms:Be(i)}}function Mt(e,t){let{source:o,stage:i,modules:n,hookFunctions:r=[],inject:a={},log:s}=t;S(typeof o=="string","shader source must be a string");let l=o,f="",G=ae(r),b={},N={},I={};for(let u in a){let d=typeof a[u]=="string"?{injection:a[u],order:0}:a[u],c=/^(v|f)s:(#)?([\w-]+)$/.exec(u);if(c){let _=c[2],h=c[3];_?h==="decl"?N[u]=[d]:I[u]=[d]:b[u]=[d]}else I[u]=[d]}let ge=n;for(let u of ge){s&&F(u,l,s);let d=X(u,"wgsl");f+=d;let c=u.injections?.[i]||{};for(let _ in c){let h=/^(v|f)s:#([\w-]+)$/.exec(_);if(h){let A=h[2]==="decl"?N:I;A[_]=A[_]||[],A[_].push(c[_])}else b[_]=b[_]||[],b[_].push(c[_])}}return f+=De,f=T(f,i,N),f+=ne(G[i],b),f+=l,f=T(f,i,I),f}function ye(e,t){let{source:o,stage:i,language:n="glsl",modules:r,defines:a={},hookFunctions:s=[],inject:l={},prologue:f=!0,log:G}=t;S(typeof o=="string","shader source must be a string");let b=n==="glsl"?$(o).version:-1,N=e.shaderLanguageVersion,I=b===100?"#version 100":"#version 300 es",u=o.split(`
65
+ `;function we(e){let t=y(e.modules||[]);return{source:Mt(e.platformInfo,{...e,source:e.source,stage:"vertex",modules:t}),getUniforms:Be(t)}}function K(e){let{vs:t,fs:o}=e,i=y(e.modules||[]);return{vs:ye(e.platformInfo,{...e,source:t,stage:"vertex",modules:i}),fs:ye(e.platformInfo,{...e,source:o,stage:"fragment",modules:i}),getUniforms:Be(i)}}function Mt(e,t){let{source:o,stage:i,modules:n,hookFunctions:r=[],inject:a={},log:s}=t;b(typeof o=="string","shader source must be a string");let l=o,f="",G=ae(r),A={},N={},I={};for(let u in a){let d=typeof a[u]=="string"?{injection:a[u],order:0}:a[u],c=/^(v|f)s:(#)?([\w-]+)$/.exec(u);if(c){let _=c[2],h=c[3];_?h==="decl"?N[u]=[d]:I[u]=[d]:A[u]=[d]}else I[u]=[d]}let ge=n;for(let u of ge){s&&F(u,l,s);let d=X(u,"wgsl");f+=d;let c=u.injections?.[i]||{};for(let _ in c){let h=/^(v|f)s:#([\w-]+)$/.exec(_);if(h){let S=h[2]==="decl"?N:I;S[_]=S[_]||[],S[_].push(c[_])}else A[_]=A[_]||[],A[_].push(c[_])}}return f+=De,f=T(f,i,N),f+=ne(G[i],A),f+=l,f=T(f,i,I),f}function ye(e,t){let{source:o,stage:i,language:n="glsl",modules:r,defines:a={},hookFunctions:s=[],inject:l={},prologue:f=!0,log:G}=t;b(typeof o=="string","shader source must be a string");let A=n==="glsl"?$(o).version:-1,N=e.shaderLanguageVersion,I=A===100?"#version 100":"#version 300 es",u=o.split(`
66
66
  `).slice(1).join(`
67
67
  `),d={};r.forEach(p=>{Object.assign(d,p.defines)}),Object.assign(d,a);let c="";switch(n){case"wgsl":break;case"glsl":c=f?`${I}
68
68
 
@@ -77,8 +77,8 @@ ${i==="fragment"?Ot:""}
77
77
  ${Tt(d)}
78
78
 
79
79
  `:`${I}
80
- `;break}let _=ae(s),h={},V={},A={};for(let p in l){let P=typeof l[p]=="string"?{injection:l[p],order:0}:l[p],L=/^(v|f)s:(#)?([\w-]+)$/.exec(p);if(L){let m=L[2],j=L[3];m?j==="decl"?V[p]=[P]:A[p]=[P]:h[p]=[P]}else A[p]=[P]}for(let p of r){G&&F(p,u,G);let P=X(p,i);c+=P;let L=p.instance?.normalizedInjections[i]||{};for(let m in L){let j=/^(v|f)s:#([\w-]+)$/.exec(m);if(j){let ee=j[2]==="decl"?V:A;ee[m]=ee[m]||[],ee[m].push(L[m])}else h[m]=h[m]||[],h[m].push(L[m])}}return c+="// ----- MAIN SHADER SOURCE -------------------------",c+=De,c=T(c,i,V),c+=ne(_[i],h),c+=u,c=T(c,i,A),n==="glsl"&&b!==N&&(c=Te(c,i)),c.trim()}function Be(e){return function(o){let i={};for(let n of e){let r=n.getUniforms?.(o,i);Object.assign(i,r)}return i}}function Tt(e={}){let t="";for(let o in e){let i=e[o];(i||Number.isFinite(i))&&(t+=`#define ${o.toUpperCase()} ${e[o]}
81
- `)}return t}function X(e,t){let o;switch(t){case"vertex":o=e.vs||"";break;case"fragment":o=e.fs||"";break;case"wgsl":o=e.source||"";break;default:S(!1)}if(!e.name)throw new Error("Shader module must have a name");let i=e.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),n=`// ----- MODULE ${e.name} ---------------
80
+ `;break}let _=ae(s),h={},V={},S={};for(let p in l){let P=typeof l[p]=="string"?{injection:l[p],order:0}:l[p],L=/^(v|f)s:(#)?([\w-]+)$/.exec(p);if(L){let m=L[2],j=L[3];m?j==="decl"?V[p]=[P]:S[p]=[P]:h[p]=[P]}else S[p]=[P]}for(let p of r){G&&F(p,u,G);let P=X(p,i);c+=P;let L=p.instance?.normalizedInjections[i]||{};for(let m in L){let j=/^(v|f)s:#([\w-]+)$/.exec(m);if(j){let ee=j[2]==="decl"?V:S;ee[m]=ee[m]||[],ee[m].push(L[m])}else h[m]=h[m]||[],h[m].push(L[m])}}return c+="// ----- MAIN SHADER SOURCE -------------------------",c+=De,c=T(c,i,V),c+=ne(_[i],h),c+=u,c=T(c,i,S),n==="glsl"&&A!==N&&(c=Te(c,i)),c.trim()}function Be(e){return function(o){let i={};for(let n of e){let r=n.getUniforms?.(o,i);Object.assign(i,r)}return i}}function Tt(e={}){let t="";for(let o in e){let i=e[o];(i||Number.isFinite(i))&&(t+=`#define ${o.toUpperCase()} ${e[o]}
81
+ `)}return t}function X(e,t){let o;switch(t){case"vertex":o=e.vs||"";break;case"fragment":o=e.fs||"";break;case"wgsl":o=e.source||"";break;default:b(!1)}if(!e.name)throw new Error("Shader module must have a name");let i=e.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),n=`// ----- MODULE ${e.name} ---------------
82
82
 
83
83
  `;return t!=="wgsl"&&(n+=`#define MODULE_${i}
84
84
  `),n+=`${o}
package/dist/index.cjs CHANGED
@@ -65,8 +65,11 @@ module.exports = __toCommonJS(dist_exports);
65
65
 
66
66
  // dist/lib/utils/assert.js
67
67
  function assert(condition, message) {
68
+ var _a;
68
69
  if (!condition) {
69
- throw new Error(message || "shadertools: assertion failed.");
70
+ const error = new Error(message || "shadertools: assertion failed.");
71
+ (_a = Error.captureStackTrace) == null ? void 0 : _a.call(Error, error, assert);
72
+ throw error;
70
73
  }
71
74
  }
72
75