PageSourceSearch

https://patron.theateralliance.org/_next/static/chunks/9473.05505d270278c94b.js

js theateralliance.org collected 2026-10-10 00:36:08 UTC 17,922 bytes, 359 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9473],{9473:(e,r,t)=>{t.r(r),t.d(r,{arithmetic:()=>l,dot:()=>f,equalAll:()=>c,extent:()=>_,fround:()=>P,gather:()=>T,interleave:()=>L.C,length:()=>z,segmentedMap:()=>b,select:()=>C,sequence:()=>N,swizzle:()=>B});var n=t(79265),i=t(33386),u=t(24706),a=t(2897),s=t(45044);let o=`fn arithmetic_add(x: {TYPE}, y: {TYPE}) -> {TYPE} {
2  return x + y;
3}
4
5fn arithmetic_subtract(x: {TYPE}, y: {TYPE}) -> {TYPE} {
6  return x - y;
7}
8
9fn arithmetic_multiply(x: {TYPE}, y: {TYPE}) -> {TYPE} {
10  return x * y;
11}
12
13fn arithmetic_divide(x: {TYPE}, y: {TYPE}) -> {TYPE} {
14  return x / y;
15}
16
17fn arithmetic_tan(x: f32) -> f32 {
18  return tan_fp32(x);
19}
20`,l=({inputs:e,output:r,target:t})=>{let l=r.type,d=(0,s.iP)(l),f=(0,s._1)(l),p=e.namedInputs;return(0,a.P)({module:{name:"arithmetic",source:o,dependencies:[n.i]},inputs:p,output:r,operationType:l,outputBuffer:t,expression:r=>(0,i.W)(e.expression,{operations:u.E,inputs:p,laneIndex:r,formatInput:e=>`${e}[${r}]`,formatOutOfBoundsInput:e=>1===p[e].size?`${e}[0]`:f,formatLiteral:e=>{let t=Array.isArray(e)?e[r]??0:e;return`${d}(${(0,s.C1)(l,t)})`},formatCall:(e,r)=>`${e}(${r.join(", ")})`})}),{success:!0}},d=`\
21fn row_dot(x: array<{TYPE}, {X_LEN}>, y: array<{TYPE}, {Y_LEN}>) -> array<f32, 1> {
22  var sum = 0.0;
23  for (var i = 0u; i < {X_LEN}u; i = i + 1u) {
24    sum += f32(x[i]) * f32(y[i]);
25  }
26  return array<f32, 1>(sum);
27}
28`,f=({inputs:e,output:r,target:t})=>((0,a.P)({module:{name:"row_dot",source:d},inputs:e,output:r,operationType:"float32",outputBuffer:t}),{success:!0}),p=`\
29fn equalAll(x: array<{TYPE}, {X_LEN}>, y: array<{TYPE}, {Y_LEN}>) -> array<u32, 1> {
30  var allEqual = 1u;
31  for (var i = 0u; i < {X_LEN}u; i = i + 1u) {
32    if (x[i] != y[i]) {
33      allEqual = 0u;
34      break;
35    }
36  }
37  return array<u32, 1>(allEqual);
38}
39`,c=({inputs:e,output:r,target:t})=>((0,a.P)({module:{name:"equalAll",source:p},inputs:e,output:r,operationType:e.x.type,outputBuffer:t}),{success:!0});var x=t(38705),g=t(53733),m=t(95871),h=t(81870);function $(e,r,t){let n=(0,s.iP)(r.type);return`@group(0) @binding(${t}) var<storage, read> ${e}: array<${n}>;`}function y(e,r,t,n=e){let i=(0,s.iP)(t);if(r.isConstant){let e=r.value;if(!e)throw Error(`Constant input ${r} is missing CPU values`);return`fn read_${n}(_sourceIndex: u32) -> array<${i}, ${r.size}> {
40  return array<${i}, ${r.size}>(${Array.from({length:r.size},(r,t)=>(0,s.Lm)(i,e[t]??0)).join(", ")});
41}`}let u=r.stride/r.ValueType.BYTES_PER_ELEMENT,a=r.offset/r.ValueType.BYTES_PER_ELEMENT,o=(0,s.iP)(r.type)===i?"":`${i}`;return`fn read_${n}(sourceIndex: u32) -> array<${i}, ${r.size}> {
42  var value: array<${i}, ${r.size}>;
43  let rowOffset = ${a}u + sourceIndex * ${u}u;
44${Array.from({length:r.size},(r,t)=>o?`  value[${t}] = ${o}(${e}[rowOffset + ${t}u]);`:`  value[${t}] = ${e}[rowOffset + ${t}u];`).join("\n")}
45  return value;
46}`}function w(e,r){return y("sourceValues",e,r,"source_values")}function v(e,r){let t=(0,s.iP)(e.type);return`@group(0) @binding(${r}) var<storage, read_write> result: array<${t}>;`}function E(e){let r=e.stride/e.ValueType.BYTES_PER_ELEMENT,t=e.offset/e.ValueType.BYTES_PER_ELEMENT,n=(0,s.iP)(e.type);return`fn write_result(rowIndex: u32, value: array<${n}, ${e.size}>) {
47  let rowOffset = ${t}u + rowIndex * ${r}u;
48${Array.from({length:e.size},(e,r)=>`  result[rowOffset + ${r}u] = value[${r}];`).join("\n")}
49}`}let _=({inputs:e,output:r,target:t})=>{let{sourceValues:n}=e;if(0===n.length){let e=new r.ValueType(r.length*r.size);return t.write(e),{success:!0,value:e}}if(n.isConstant){let e=n.value;if(!e)throw Error(`Constant input ${n} is missing CPU values`);let i=new r.ValueType(r.length*r.size);for(let t=0;t<r.length;t++){let r=e[t];i[2*t]=r,i[2*t+1]=r}return t.write(i),{success:!0,value:i}}let i=[],u=n,a="raw",o=n.length;try{for(;;){let e=Math.ceil(o/64),n=r.length*e,l=1===e?t:m.R.createOrReuse(t.device,n*r.stride);if(e>1&&i.push(l),function({input:e,inputMode:r,inputGroupCount:t,channelCount:n,outputType:i,outputBuffer:u,outputLength:a,outputStride:o,outputOffset:l}){let d=(0,s.iP)(i),f=(0,h.BB)(a,u.device.limits.maxComputeWorkgroupsPerDimension),p=new g.GL({buffer:u,type:i,size:2,length:a,stride:o,offset:l}),c=`
50${e.isConstant?"":$("sourceValues",e,0)}
51${w(e,i)}
52${v(p,+!e.isConstant)}
53${E(p)}
54${function(e,r,t,n){let i=(0,s.iP)(r),[u,a]=function(e){switch(e){case"uint32":return["0xffffffffu","0u"];case"sint32":return["2147483647","-2147483648"];case"float32":return["3.402823e38","-3.402823e38"];default:throw Error(`Unsupported WebGPU extent type for ${e}`)}}(r);return"raw"===e?`fn extent_pass(channelIndex: u32, inputGroupIndex: u32) -> array<${i}, 2> {
55  var result: array<${i}, 2>;
56  result[0] = ${u};
57  result[1] = ${a};
58
59  if (inputGroupIndex < ${n}u) {
60    let value = read_source_values(inputGroupIndex);
61    result[0] = value[channelIndex];
62    result[1] = value[channelIndex];
63  }
64
65  return result;
66}`:`fn extent_pass(channelIndex: u32, inputGroupIndex: u32) -> array<${i}, 2> {
67  var result: array<${i}, 2>;
68  result[0] = ${u};
69  result[1] = ${a};
70
71  if (inputGroupIndex < ${n}u) {
72    let rowIndex = inputGroupIndex * ${t}u + channelIndex;
73    let value = read_source_values(rowIndex);
74    result[0] = value[0];
75    result[1] = value[1];
76  }
77
78  return result;
79}`}(r,i,n,t)}
80
81var<workgroup> sharedMin: array<${d}, 64>;
82var<workgroup> sharedMax: array<${d}, 64>;
83
84@compute @workgroup_size(64) fn main(
85  @builtin(workgroup_id) workgroupId: vec3<u32>,
86  @builtin(local_invocation_id) localId: vec3<u32>
87) {
88  let outputRowIndex = ${(0,h.B)(f)};
89  if (outputRowIndex >= ${a}u) {
90    return;
91  }
92
93  let channelIndex = outputRowIndex % ${n}u;
94  let outputGroupIndex = outputRowIndex / ${n}u;
95  let inputGroupIndex = outputGroupIndex * 64u + localId.x;
96
97  let result = extent_pass(channelIndex, inputGroupIndex);
98  sharedMin[localId.x] = result[0];
99  sharedMax[localId.x] = result[1];
100  workgroupBarrier();
101
102  var stride = ${Math.floor(32)}u;
103  loop {
104    if (stride == 0u) {
105      break;
106    }
107    if (localId.x < stride) {
108      let compareIndex = localId.x + stride;
109      if (sharedMin[compareIndex] < sharedMin[localId.x]) {
110        sharedMin[localId.x] = sharedMin[compareIndex];
111      }
112      if (sharedMax[compareIndex] > sharedMax[localId.x]) {
113        sharedMax[localId.x] = sharedMax[compareIndex];
114      }
115    }
116    workgroupBarrier();
117    stride = stride / 2u;
118  }
119
120  if (localId.x == 0u) {
121    write_result(outputRowIndex, array<${d}, 2>(sharedMin[0], sharedMax[0]));
122  }
123}
124`,m=new x.C(u.device,{source:c,shaderLayout:{bindings:[...e.isConstant?[]:[{name:"sourceValues",type:"storage",group:0,location:0}],{name:"result",type:"storage",group:0,location:+!e.isConstant}]}}),y={result:u};e.isConstant||(y.sourceValues=e.buffer),m.setBindings(y);let _=u.device.beginComputePass({});m.dispatch(_,f.x,f.y,f.z),_.end(),u.device.submit(),m.destroy()}({input:u,inputMode:a,inputGroupCount:o,channelCount:r.length,outputType:r.type,outputBuffer:l,outputLength:n,outputStride:r.stride,outputOffset:r.offset}),1===e)break;u=new g.GL({buffer:l,type:r.type,size:2,length:n}),a="partial",o=e}return{success:!0}}finally{for(let e of i)m.R.recycle(e)}},I=`\
125const LE: bool = ${new Uint8Array(new Uint16Array([255]).buffer)[0]>0?"true":"false"};
126const F32_NAN: u32 = 0xffffffffu;
127const F32_INF: u32 = 0x7f800000u;
128
129fn roundShiftRight(value: u32, shift: i32) -> u32 {
130  if (shift <= 0) {
131    return value << u32(-shift);
132  }
133
134  if (shift >= 32) {
135    if (shift == 32 && value > 0x80000000u) {
136      return 1u;
137    }
138    return 0u;
139  }
140
141  let shiftU32 = u32(shift);
142  let truncated = value >> shiftU32;
143  let halfShift = 1u << u32(shift - 1);
144  let remainder = value & ((1u << shiftU32) - 1u);
145  if (remainder > halfShift || (remainder == halfShift && (truncated & 1u) == 1u)) {
146    return truncated + 1u;
147  }
148  return truncated;
149}
150
151fn makeFloatImmediate(sign: u32, exponent: i32, mantissa: u32) -> u32 {
152  return (sign << 31u) | (u32(exponent + 127) << 23u) | (mantissa & 0x7fffffu);
153}
154
155fn makeFloat(sign: u32, exponent: i32, significand: u32) -> u32 {
156  if (significand == 0u) {
157    return sign << 31u;
158  }
159
160  let leadingZeros = i32(countLeadingZeros(significand));
161  var normalizedExponent = exponent + 31 - leadingZeros;
162
163  if (normalizedExponent > 127) {
164    return (sign << 31u) | F32_INF;
165  }
166
167  var mantissa: u32;
168  if (normalizedExponent >= -126) {
169    mantissa = roundShiftRight(significand, 8 - leadingZeros);
170    if (mantissa >= 0x1000000u) {
171      mantissa = mantissa >> 1u;
172      normalizedExponent += 1;
173      if (normalizedExponent > 127) {
174        return (sign << 31u) | F32_INF;
175      }
176    }
177    return makeFloatImmediate(sign, normalizedExponent, mantissa);
178  }
179
180  let subnormalShift = -149 - exponent;
181  mantissa = roundShiftRight(significand, subnormalShift);
182  if (mantissa >= 0x800000u) {
183    return (sign << 31u) | (1u << 23u);
184  }
185  return (sign << 31u) | mantissa;
186}
187
188fn parseAsDouble(words: vec2<u32>) -> vec2<u32> {
189  var d = words;
190  if (LE) {
191    d = d.yx;
192  }
193
194  let sign = (d.x >> 31u) & 1u;
195  let exponentBits = (d.x >> 20u) & 0x7ffu;
196  let exponent = i32(exponentBits) - 1023;
197  let fractionHigh = d.x & 0xfffffu;
198  let fractionLow = d.y;
199
200  if (exponentBits == 0x7ffu) {
201    if (fractionHigh == 0u && fractionLow == 0u) {
202      return vec2<u32>((sign << 31u) | F32_INF, F32_NAN);
203    }
204    return vec2<u32>(F32_NAN);
205  }
206
207  if (exponentBits == 0u) {
208    return vec2<u32>(sign << 31u);
209  }
210
211  if (exponent > 127) {
212    return vec2<u32>((sign << 31u) | F32_INF, ((1u - sign) << 31u) | F32_INF);
213  }
214
215  let highSignificand = 0x800000u | (fractionHigh << 3u) | (fractionLow >> 29u);
216  let lowSignificand = fractionLow & 0x1fffffffu;
217
218  if (exponent < -126) {
219    let highPart = makeFloat(sign, exponent - 23, highSignificand);
220    let lowPart = makeFloat(sign, exponent - 52, lowSignificand);
221    return vec2<u32>(highPart, lowPart);
222  }
223
224  let roundUp = lowSignificand > 0x10000000u ||
225    (lowSignificand == 0x10000000u && (highSignificand & 1u) == 1u);
226
227  var roundedSignificand = highSignificand + select(0u, 1u, roundUp);
228  var highExponent = exponent;
229  if (roundedSignificand == 0x1000000u) {
230    roundedSignificand = 0x800000u;
231    highExponent += 1;
232  }
233
234  if (highExponent > 127) {
235    return vec2<u32>((sign << 31u) | F32_INF, ((1u - sign) << 31u) | F32_INF);
236  }
237
238  let highPart = makeFloatImmediate(sign, highExponent, roundedSignificand);
239
240  var remainder = i32(lowSignificand);
241  var lowSign = sign;
242  if (roundUp) {
243    remainder -= 0x20000000;
244  }
245  if (remainder < 0) {
246    lowSign = 1u - sign;
247    remainder = -remainder;
248  }
249
250  let lowPart = makeFloat(lowSign, exponent - 52, u32(remainder));
251  return vec2<u32>(highPart, lowPart);
252}
253
254fn fround(x: array<u32, {X_LEN}>) -> array<f32, {RESULT_LEN}> {
255  var result: array<f32, {RESULT_LEN}>;
256  let n = {X_LEN}u / 2u;
257  for (var i = 0u; i < n; i = i + 1u) {
258    let parts = parseAsDouble(vec2<u32>(x[i * 2u], x[i * 2u + 1u]));
259    result[i] = bitcast<f32>(parts.x);
260    result[i + n] = bitcast<f32>(parts.y);
261  }
262  return result;
263}
264`,P=({inputs:e,output:r,target:t})=>((0,a.P)({module:{name:"fround",source:I},inputs:e,output:r,operationType:"uint32",outputBuffer:t}),{success:!0}),T=async({inputs:e,output:r,target:t})=>{let{ids:n,sourceValues:i}=e,u=(0,s.iP)(n.type),a=[];n.isConstant||a.push({name:"ids",input:n,index:a.length}),i.isConstant||a.push({name:"sourceValues",input:i,index:a.length});let o=(0,h.BB)(Math.ceil(r.length/64),t.device.limits.maxComputeWorkgroupsPerDimension),l=`
265${a.map(({name:e,input:r,index:t})=>$(e,r,t)).join("\n")}
266${function(e,r){if(e.isConstant){let t=e.value;if(!t)throw Error(`Constant input ${e} is missing CPU values`);return`fn read_ids(_rowIndex: u32) -> ${r} {
267  return ${(0,s.Lm)(r,t[0]??0)};
268}`}let t=e.stride/e.ValueType.BYTES_PER_ELEMENT,n=e.offset/e.ValueType.BYTES_PER_ELEMENT;return`fn read_ids(rowIndex: u32) -> ${r} {
269  let rowOffset = ${n}u + rowIndex * ${t}u;
270  return ids[rowOffset];
271}`}(n,u)}
272${w(i,r.type)}
273${v(r,a.length)}
274${E(r)}
275${function(e,r){let t=(0,s._1)(e);return`fn zero_result() -> array<${(0,s.iP)(e)}, ${r}> {
276  var result: array<${(0,s.iP)(e)}, ${r}>;
277${Array.from({length:r},(e,r)=>`  result[${r}] = ${t};`).join("\n")}
278  return result;
279}`}(r.type,r.size)}
280${function(e,r,t,n){let i=(0,s.iP)(e),u=(0,s.iP)(r);return`fn gather(idsValue: ${i}) -> array<${u}, ${t}> {
281  let sourceIndex = ${"u32"===i?"i32(idsValue)":"i32"===i?"idsValue":"i32(idsValue)"};
282  if (sourceIndex < 0 || sourceIndex >= ${n}) {
283    return zero_result();
284  }
285  return read_source_values(u32(sourceIndex));
286}`}(n.type,r.type,r.size,i.length)}
287
288@compute @workgroup_size(64) fn main(
289  @builtin(workgroup_id) workgroupId: vec3<u32>,
290  @builtin(local_invocation_id) localId: vec3<u32>
291) {
292  let rowIndex = ${(0,h.vL)(o,64)};
293  if (rowIndex >= ${r.length}u) {
294    return;
295  }
296
297  let idsValue = read_ids(rowIndex);
298  let result = gather(idsValue);
299  write_result(rowIndex, result);
300}
301`,d=new x.C(t.device,{source:l,shaderLayout:{bindings:[...a.map(({name:e,index:r})=>({name:e,type:"storage",group:0,location:r})),{name:"result",type:"storage",group:0,location:a.length}]}}),f={};n.isConstant||(f.ids=n.buffer),i.isConstant||(f.sourceValues=i.buffer),f.result=t,d.setBindings(f);let p=t.device.beginComputePass({});return d.dispatch(p,o.x,o.y,o.z),p.end(),t.device.submit(),d.destroy(),{success:!0}},b=async({inputs:e,output:r,target:t})=>{var n;let{segments:i}=e,u=i.isConstant?[]:[{name:"segments",input:i,index:0}],a=(0,h.BB)(Math.ceil(r.length/64),t.device.limits.maxComputeWorkgroupsPerDimension),s=`
302${u.map(({name:e,input:r,index:t})=>$(e,r,t)).join("\n")}
303${y("segments",i,"uint32")}
304${v(r,u.length)}
305${E(r)}
306${(n=i.length,`fn segmented_map(vertexIndex: u32) -> array<u32, 2> {
307  var low = 0i;
308  var high = ${n}i;
309  while (low < high) {
310    let mid = low + (high - low) / 2i;
311    let midStart = read_segments(u32(mid))[0];
312    if (midStart <= vertexIndex) {
313      low = mid + 1i;
314    } else {
315      high = mid;
316    }
317  }
318
319  let segmentIndex = u32(max(low - 1i, 0i));
320  let segmentStart = read_segments(segmentIndex)[0];
321  return array<u32, 2>(segmentIndex, vertexIndex - segmentStart);
322}`)}
323
324@compute @workgroup_size(64) fn main(
325  @builtin(workgroup_id) workgroupId: vec3<u32>,
326  @builtin(local_invocation_id) localId: vec3<u32>
327) {
328  let rowIndex = ${(0,h.vL)(a,64)};
329  if (rowIndex >= ${r.length}u) {
330    return;
331  }
332
333  let result = segmented_map(rowIndex);
334  write_result(rowIndex, result);
335}
336`,o=new x.C(t.device,{source:s,shaderLayout:{bindings:[...u.map(({name:e,index:r})=>({name:e,type:"storage",group:0,location:r})),{name:"result",type:"storage",group:0,location:u.length}]}}),l=Object.fromEntries(u.map(({name:e,input:r})=>[e,r.buffer]));l.result=t,o.setBindings(l);let d=t.device.beginComputePass({});return o.dispatch(d,a.x,a.y,a.z),d.end(),t.device.submit(),o.destroy(),{success:!0}};var L=t(14071);let k=`\
337fn row_length(x: array<{TYPE}, {X_LEN}>) -> array<f32, 1> {
338  var sum = 0.0;
339  for (var i = 0u; i < {X_LEN}u; i = i + 1u) {
340    sum += f32(x[i]) * f32(x[i]);
341  }
342  return array<f32, 1>(sqrt(sum));
343}
344`,z=({inputs:e,output:r,target:t})=>((0,a.P)({module:{name:"row_length",source:k},inputs:e,output:r,operationType:"float32",outputBuffer:t}),{success:!0}
344),C=async({inputs:e,output:r,target:t})=>{let n=(0,s._1)(r.type);return(0,a.P)({module:{name:"select",source:"// inline expression select\n"},inputs:e,output:r,operationType:r.type,outputBuffer:t,expression:r=>{let t=S("condition",e.condition,r,n),i=S("whenTrue",e.whenTrue,r,n),u=S("whenFalse",e.whenFalse,r,n);return`select(${u}, ${i}, ${t} != ${n})`}}),{success:!0}};function S(e,r,t,n){return t<r.size?`${e}[${t}]`:1===r.size?`${e}[0]`:n}let N=({inputs:e,output:r,target:t})=>{let n=(0,h.BB)(Math.ceil(r.length/64),t.device.limits.maxComputeWorkgroupsPerDimension),i=`\
345@group(0) @binding(0) var<storage, read_write> result: array<i32>;
346
347@compute @workgroup_size(64) fn main(
348  @builtin(workgroup_id) workgroupId: vec3<u32>,
349  @builtin(local_invocation_id) localId: vec3<u32>
350) {
351  let rowIndex = ${(0,h.vL)(n,64)};
352  if (rowIndex >= ${r.length}u) {
353    return;
354  }
355
356  let rowOffset = ${r.offset/r.ValueType.BYTES_PER_ELEMENT}u + rowIndex * ${r.stride/r.ValueType.BYTES_PER_ELEMENT}u;
357  result[rowOffset] = ${e.start} + i32(rowIndex) * ${e.step};
358}
359`,u=new x.C(t.device,{source:i,shaderLayout:{bindings:[{name:"result",type:"storage",group:0,location:0}]}});u.setBindings({result:t});let a=t.device.beginComputePass({});return u.dispatch(a,n.x,n.y,n.z),a.end(),t.device.submit(),u.destroy(),{success:!0}},B=({inputs:e,output:r,target:t})=>{let{columns:n}=e;return(0,a.P)({module:{name:"swizzle",source:"// swizzle expression handled inline"},expression:e=>`x[${n[e]}]`,inputs:{x:e.x},output:r,outputBuffer:t}),{success:!0}}},33386:(e,r,t)=>{t.d(r,{W:()=>n});function n(e,r){return!function e(r,{operations:t,inputs:n}){switch(r.kind){case"input":if(!(r.name in n))throw Error(`Unknown expression input '${r.name}'`);return;case"literal":if(Array.isArray(r.value)){for(let e of r.value)if(!Number.isFinite(e))throw Error(`Expression literal array must contain only finite values, got ${e}`)}else if(!Number.isFinite(r.value))throw Error(`Expression literal must be finite, got ${r.value}`);return;case"call":{let i=t[r.op];if(!i)throw Error(`Unknown expression op '${r.op}'`);if(r.args.length!==i.arity)throw Error(`Expression op '${r.op}' expects ${i.arity} args, got ${r.args.length}`);for(let i of r.args)e(i,{operations:t,inputs:n});return}default:throw Error(`Unsupported expression node ${r.kind}`)}}(e,r),function e(r,t){switch(r.kind){case"input":{let e=t.inputs[r.name];if(t.laneIndex<e.size)return t.formatInput(r.name);return t.formatOutOfBoundsInput(r.name)}case"literal":return t.formatLiteral(r.value);case"call":{let n=t.operations[r.op],i=r.args.map(r=>e(r,t));return t.formatCall(n.symbol,i)}default:throw Error(`Unsupported expression node ${r.kind}`)}}(e,r)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.