@codexo/exojs 0.6.1 → 0.6.3

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 (43) hide show
  1. package/CHANGELOG.md +516 -464
  2. package/README.md +156 -156
  3. package/dist/esm/core/capabilities.d.ts +37 -0
  4. package/dist/esm/core/capabilities.js +96 -0
  5. package/dist/esm/core/capabilities.js.map +1 -0
  6. package/dist/esm/core/index.d.ts +1 -0
  7. package/dist/esm/index.js +4 -0
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/rendering/index.d.ts +3 -0
  10. package/dist/esm/rendering/mesh/Mesh.d.ts +69 -0
  11. package/dist/esm/rendering/mesh/Mesh.js +114 -0
  12. package/dist/esm/rendering/mesh/Mesh.js.map +1 -0
  13. package/dist/esm/rendering/webgl2/WebGl2Backend.js +3 -0
  14. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  15. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +27 -0
  16. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +242 -0
  17. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -0
  18. package/dist/esm/rendering/webgl2/glsl/mask-compose.frag.js +1 -1
  19. package/dist/esm/rendering/webgl2/glsl/mask-compose.vert.js +1 -1
  20. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +4 -0
  21. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js.map +1 -0
  22. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +4 -0
  23. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js.map +1 -0
  24. package/dist/esm/rendering/webgl2/glsl/particle.frag.js +1 -1
  25. package/dist/esm/rendering/webgl2/glsl/primitive.frag.js +1 -1
  26. package/dist/esm/rendering/webgl2/glsl/primitive.vert.js +1 -1
  27. package/dist/esm/rendering/webgl2/glsl/sprite.frag.js +1 -1
  28. package/dist/esm/rendering/webgpu/WebGpuBackend.js +44 -41
  29. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  30. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +44 -44
  31. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  32. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +40 -0
  33. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +439 -0
  34. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -0
  35. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +65 -65
  36. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  37. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js +25 -25
  38. package/dist/esm/rendering/webgpu/WebGpuPrimitiveRenderer.js.map +1 -1
  39. package/dist/esm/vendor/webgl-debug.js +1156 -1156
  40. package/dist/esm/vendor/webgl-debug.js.map +1 -1
  41. package/dist/exo.esm.js +3150 -2279
  42. package/dist/exo.esm.js.map +1 -1
  43. package/package.json +105 -105
@@ -0,0 +1,439 @@
1
+ import { Matrix } from '../../math/Matrix.js';
2
+ import { AbstractWebGpuRenderer } from './AbstractWebGpuRenderer.js';
3
+ import { BlendModes } from '../types.js';
4
+ import { Texture } from '../texture/Texture.js';
5
+ import { getWebGpuBlendState } from './WebGpuBlendState.js';
6
+
7
+ /// <reference types="@webgpu/types" />
8
+ const meshShaderSource = `
9
+ struct VertexInput {
10
+ @location(0) position: vec2<f32>,
11
+ @location(1) texcoord: vec2<f32>,
12
+ @location(2) color: vec4<f32>,
13
+ };
14
+
15
+ struct VertexOutput {
16
+ @builtin(position) position: vec4<f32>,
17
+ @location(0) texcoord: vec2<f32>,
18
+ @location(1) color: vec4<f32>,
19
+ @location(2) @interpolate(flat) premultiplySample: u32,
20
+ };
21
+
22
+ struct TintUniform {
23
+ tint: vec4<f32>,
24
+ flags: vec4<f32>,
25
+ };
26
+
27
+ @group(0) @binding(0) var<uniform> uniforms: TintUniform;
28
+
29
+ @group(1) @binding(0) var meshTexture: texture_2d<f32>;
30
+ @group(1) @binding(1) var meshSampler: sampler;
31
+
32
+ @vertex
33
+ fn vertexMain(input: VertexInput) -> VertexOutput {
34
+ var output: VertexOutput;
35
+ output.position = vec4<f32>(input.position, 0.0, 1.0);
36
+ output.texcoord = input.texcoord;
37
+ output.color = input.color;
38
+ output.premultiplySample = u32(uniforms.flags.x);
39
+ return output;
40
+ }
41
+
42
+ @fragment
43
+ fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
44
+ let sample = textureSample(meshTexture, meshSampler, input.texcoord);
45
+ let resolvedSample = select(sample, vec4(sample.rgb * sample.a, sample.a), input.premultiplySample == 1u);
46
+ let modulated = resolvedSample * input.color * uniforms.tint;
47
+ return vec4<f32>(modulated.rgb * modulated.a, modulated.a);
48
+ }
49
+ `;
50
+ // Per-vertex layout (20 bytes): pos f32x2 + uv f32x2 + color u8x4-norm.
51
+ // CPU bakes the (view * globalTransform) into position so the vertex
52
+ // shader stays branchless and uniform-free except for the per-mesh tint.
53
+ const vertexStrideBytes = 20;
54
+ const wordsPerVertex = vertexStrideBytes / 4;
55
+ const tintByteLength = 32; // vec4 tint + vec4 flags (only flags.x used)
56
+ class WebGpuMeshRenderer extends AbstractWebGpuRenderer {
57
+ _combinedTransform = new Matrix();
58
+ _drawCalls = [];
59
+ _pipelines = new Map();
60
+ _textureBindGroups = new Map();
61
+ _device = null;
62
+ _shaderModule = null;
63
+ _uniformBindGroupLayout = null;
64
+ _textureBindGroupLayout = null;
65
+ _pipelineLayout = null;
66
+ _vertexBuffer = null;
67
+ _indexBuffer = null;
68
+ _uniformBuffer = null;
69
+ _uniformBindGroup = null;
70
+ _uniformAlignment = 256;
71
+ _vertexBufferCapacity = 0;
72
+ _indexBufferCapacity = 0;
73
+ _uniformBufferCapacity = 0;
74
+ _vertexData = new ArrayBuffer(0);
75
+ _float32View = new Float32Array(this._vertexData);
76
+ _uint32View = new Uint32Array(this._vertexData);
77
+ _packedIndexData = new Uint16Array(0);
78
+ _drawCallCount = 0;
79
+ render(mesh) {
80
+ const backend = this._backend;
81
+ if (backend === null) {
82
+ throw new Error('WebGpuMeshRenderer is not connected to a backend.');
83
+ }
84
+ const vertexCount = mesh.vertexCount;
85
+ if (vertexCount === 0) {
86
+ return;
87
+ }
88
+ const blendMode = mesh.blendMode;
89
+ backend.setBlendMode(blendMode);
90
+ const meshTexture = mesh.texture ?? Texture.white;
91
+ // Texture.white is a 1x1 canvas-backed Texture; backend.shouldPremultiplyTextureSample
92
+ // expects RenderTexture-or-Texture. Both branches are valid here.
93
+ const premultiplySample = backend.shouldPremultiplyTextureSample(meshTexture);
94
+ const indexCount = mesh.indexCount;
95
+ // Plan offsets within the shared per-frame buffers; actual data
96
+ // packing happens in flush() after all drawcalls are known so a
97
+ // single writeBuffer per resource covers the whole frame.
98
+ const drawCall = {
99
+ mesh,
100
+ blendMode,
101
+ texture: meshTexture,
102
+ premultiplySample,
103
+ vertexByteOffset: 0,
104
+ vertexCount,
105
+ indexByteOffset: 0,
106
+ indexCount,
107
+ };
108
+ // Use mutable record (interface readonly is for type safety against
109
+ // callers; the renderer fills these slots in flush()).
110
+ this._drawCalls[this._drawCallCount++] = drawCall;
111
+ }
112
+ flush() {
113
+ const backend = this._backend;
114
+ const device = this._device;
115
+ if (!backend || !device) {
116
+ return;
117
+ }
118
+ if (this._drawCallCount === 0 && !backend.clearRequested) {
119
+ return;
120
+ }
121
+ const scissor = backend.getScissorRect();
122
+ const maskClipsAll = scissor !== null && (scissor.width <= 0 || scissor.height <= 0);
123
+ if (this._drawCallCount === 0 || maskClipsAll) {
124
+ // Honor a pending clear with an empty pass so createColorAttachment
125
+ // consumes the clear-state once.
126
+ if (backend.clearRequested) {
127
+ const encoder = device.createCommandEncoder();
128
+ const pass = encoder.beginRenderPass({
129
+ colorAttachments: [backend.createColorAttachment()],
130
+ });
131
+ backend.stats.renderPasses++;
132
+ pass.end();
133
+ backend.submit(encoder.finish());
134
+ }
135
+ this._drawCallCount = 0;
136
+ return;
137
+ }
138
+ // Phase 1: compute layout offsets for the whole frame.
139
+ let totalVertices = 0;
140
+ let totalIndices = 0;
141
+ for (let i = 0; i < this._drawCallCount; i++) {
142
+ const dc = this._drawCalls[i];
143
+ dc.vertexByteOffset = totalVertices * vertexStrideBytes;
144
+ dc.indexByteOffset = totalIndices * Uint16Array.BYTES_PER_ELEMENT;
145
+ totalVertices += dc.vertexCount;
146
+ totalIndices += dc.indexCount;
147
+ }
148
+ // Phase 2: ensure capacities for the totals.
149
+ this._ensureVertexCapacity(totalVertices);
150
+ this._ensureIndexCapacity(totalIndices);
151
+ this._ensureUniformCapacity(this._drawCallCount);
152
+ // Phase 3: pack vertex + index + uniform CPU-side data.
153
+ const uniformBytes = this._drawCallCount * this._uniformAlignment;
154
+ const uniformData = new ArrayBuffer(uniformBytes);
155
+ const uniformF32 = new Float32Array(uniformData);
156
+ for (let i = 0; i < this._drawCallCount; i++) {
157
+ const dc = this._drawCalls[i];
158
+ this._writeMeshVertices(backend, dc.mesh, dc.vertexByteOffset / vertexStrideBytes);
159
+ if (dc.mesh.indices !== null) {
160
+ this._packedIndexData.set(dc.mesh.indices, dc.indexByteOffset / Uint16Array.BYTES_PER_ELEMENT);
161
+ }
162
+ else {
163
+ const start = dc.indexByteOffset / Uint16Array.BYTES_PER_ELEMENT;
164
+ for (let j = 0; j < dc.indexCount; j++) {
165
+ this._packedIndexData[start + j] = j;
166
+ }
167
+ }
168
+ const uniformOffsetWords = (i * this._uniformAlignment) / Float32Array.BYTES_PER_ELEMENT;
169
+ const tint = dc.mesh.tint;
170
+ uniformF32[uniformOffsetWords + 0] = tint.red;
171
+ uniformF32[uniformOffsetWords + 1] = tint.green;
172
+ uniformF32[uniformOffsetWords + 2] = tint.blue;
173
+ uniformF32[uniformOffsetWords + 3] = tint.alpha;
174
+ uniformF32[uniformOffsetWords + 4] = dc.premultiplySample ? 1 : 0;
175
+ uniformF32[uniformOffsetWords + 5] = 0;
176
+ uniformF32[uniformOffsetWords + 6] = 0;
177
+ uniformF32[uniformOffsetWords + 7] = 0;
178
+ }
179
+ // Phase 4: single writeBuffer per resource for the whole frame.
180
+ device.queue.writeBuffer(this._vertexBuffer, 0, this._vertexData, 0, totalVertices * vertexStrideBytes);
181
+ device.queue.writeBuffer(this._indexBuffer, 0, this._packedIndexData.buffer, this._packedIndexData.byteOffset, totalIndices * Uint16Array.BYTES_PER_ELEMENT);
182
+ device.queue.writeBuffer(this._uniformBuffer, 0, uniformData, 0, uniformBytes);
183
+ // Phase 5: single render pass with one drawIndexed per mesh.
184
+ const encoder = device.createCommandEncoder();
185
+ const pass = encoder.beginRenderPass({
186
+ colorAttachments: [backend.createColorAttachment()],
187
+ });
188
+ backend.stats.renderPasses++;
189
+ if (scissor !== null) {
190
+ pass.setScissorRect(scissor.x, scissor.y, scissor.width, scissor.height);
191
+ }
192
+ let lastBlendMode = null;
193
+ let lastFormat = null;
194
+ let lastTexture = null;
195
+ const renderTargetFormat = backend.renderTargetFormat;
196
+ for (let i = 0; i < this._drawCallCount; i++) {
197
+ const dc = this._drawCalls[i];
198
+ if (dc.blendMode !== lastBlendMode || renderTargetFormat !== lastFormat) {
199
+ lastBlendMode = dc.blendMode;
200
+ lastFormat = renderTargetFormat;
201
+ pass.setPipeline(this._getPipeline({ blendMode: dc.blendMode, format: renderTargetFormat }));
202
+ }
203
+ pass.setBindGroup(0, this._uniformBindGroup, [i * this._uniformAlignment]);
204
+ if (dc.texture !== lastTexture) {
205
+ lastTexture = dc.texture;
206
+ pass.setBindGroup(1, this._getTextureBindGroup(backend, dc.texture));
207
+ }
208
+ pass.setVertexBuffer(0, this._vertexBuffer, dc.vertexByteOffset);
209
+ pass.setIndexBuffer(this._indexBuffer, 'uint16', dc.indexByteOffset);
210
+ pass.drawIndexed(dc.indexCount);
211
+ backend.stats.batches++;
212
+ backend.stats.drawCalls++;
213
+ }
214
+ pass.end();
215
+ backend.submit(encoder.finish());
216
+ this._drawCallCount = 0;
217
+ }
218
+ destroy() {
219
+ this.disconnect();
220
+ this._combinedTransform.destroy();
221
+ }
222
+ async prewarmPipelines(formats) {
223
+ const device = this._device;
224
+ if (!device || !this._shaderModule || !this._pipelineLayout) {
225
+ return;
226
+ }
227
+ if (typeof device.createRenderPipelineAsync !== 'function') {
228
+ return;
229
+ }
230
+ const blendModes = [
231
+ BlendModes.Normal,
232
+ BlendModes.Additive,
233
+ BlendModes.Subtract,
234
+ BlendModes.Multiply,
235
+ BlendModes.Screen,
236
+ ];
237
+ const promises = [];
238
+ for (const blendMode of blendModes) {
239
+ for (const format of formats) {
240
+ const key = `${blendMode}:${format}`;
241
+ if (this._pipelines.has(key))
242
+ continue;
243
+ promises.push(device.createRenderPipelineAsync(this._buildPipelineDescriptor(blendMode, format))
244
+ .then((pipeline) => {
245
+ this._pipelines.set(key, pipeline);
246
+ }));
247
+ }
248
+ }
249
+ await Promise.all(promises);
250
+ }
251
+ onConnect(backend) {
252
+ if (this._device) {
253
+ return;
254
+ }
255
+ this._device = backend.device;
256
+ this._shaderModule = this._device.createShaderModule({ code: meshShaderSource });
257
+ this._uniformBindGroupLayout = this._device.createBindGroupLayout({
258
+ entries: [{
259
+ binding: 0,
260
+ visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
261
+ buffer: { type: 'uniform', hasDynamicOffset: true },
262
+ }],
263
+ });
264
+ this._textureBindGroupLayout = this._device.createBindGroupLayout({
265
+ entries: [
266
+ {
267
+ binding: 0,
268
+ visibility: GPUShaderStage.FRAGMENT,
269
+ texture: { sampleType: 'float' },
270
+ },
271
+ {
272
+ binding: 1,
273
+ visibility: GPUShaderStage.FRAGMENT,
274
+ sampler: { type: 'filtering' },
275
+ },
276
+ ],
277
+ });
278
+ this._pipelineLayout = this._device.createPipelineLayout({
279
+ bindGroupLayouts: [this._uniformBindGroupLayout, this._textureBindGroupLayout],
280
+ });
281
+ }
282
+ onDisconnect() {
283
+ this.flush();
284
+ this._vertexBuffer?.destroy();
285
+ this._indexBuffer?.destroy();
286
+ this._uniformBuffer?.destroy();
287
+ this._pipelines.clear();
288
+ this._textureBindGroups.clear();
289
+ this._vertexBuffer = null;
290
+ this._indexBuffer = null;
291
+ this._uniformBuffer = null;
292
+ this._uniformBindGroup = null;
293
+ this._pipelineLayout = null;
294
+ this._textureBindGroupLayout = null;
295
+ this._uniformBindGroupLayout = null;
296
+ this._shaderModule = null;
297
+ this._device = null;
298
+ this._backend = null;
299
+ this._drawCallCount = 0;
300
+ this._vertexBufferCapacity = 0;
301
+ this._indexBufferCapacity = 0;
302
+ this._uniformBufferCapacity = 0;
303
+ }
304
+ _writeMeshVertices(backend, mesh, vertexStart) {
305
+ // Bake (view * globalTransform) into vertex positions on the CPU,
306
+ // matching the primitive renderer's no-uniforms approach.
307
+ const matrix = this._combinedTransform
308
+ .copy(mesh.getGlobalTransform())
309
+ .combine(backend.view.getTransform());
310
+ const a = matrix.a;
311
+ const b = matrix.b;
312
+ const c = matrix.c;
313
+ const d = matrix.d;
314
+ const tx = matrix.x;
315
+ const ty = matrix.y;
316
+ const vertices = mesh.vertices;
317
+ const uvs = mesh.uvs;
318
+ const colors = mesh.colors;
319
+ const vertexCount = mesh.vertexCount;
320
+ for (let i = 0; i < vertexCount; i++) {
321
+ const sourceIndex = i * 2;
322
+ const targetIndex = (vertexStart + i) * wordsPerVertex;
323
+ const px = vertices[sourceIndex];
324
+ const py = vertices[sourceIndex + 1];
325
+ this._float32View[targetIndex + 0] = a * px + b * py + tx;
326
+ this._float32View[targetIndex + 1] = c * px + d * py + ty;
327
+ this._float32View[targetIndex + 2] = uvs !== null ? uvs[sourceIndex] : 0;
328
+ this._float32View[targetIndex + 3] = uvs !== null ? uvs[sourceIndex + 1] : 0;
329
+ this._uint32View[targetIndex + 4] = colors !== null ? colors[i] : 0xFFFFFFFF;
330
+ }
331
+ }
332
+ _getPipeline(key) {
333
+ const cacheKey = `${key.blendMode}:${key.format}`;
334
+ let pipeline = this._pipelines.get(cacheKey);
335
+ if (!pipeline) {
336
+ pipeline = this._device.createRenderPipeline(this._buildPipelineDescriptor(key.blendMode, key.format));
337
+ this._pipelines.set(cacheKey, pipeline);
338
+ }
339
+ return pipeline;
340
+ }
341
+ _buildPipelineDescriptor(blendMode, format) {
342
+ return {
343
+ layout: this._pipelineLayout,
344
+ vertex: {
345
+ module: this._shaderModule,
346
+ entryPoint: 'vertexMain',
347
+ buffers: [{
348
+ arrayStride: vertexStrideBytes,
349
+ stepMode: 'vertex',
350
+ attributes: [
351
+ { shaderLocation: 0, offset: 0, format: 'float32x2' },
352
+ { shaderLocation: 1, offset: 8, format: 'float32x2' },
353
+ { shaderLocation: 2, offset: 16, format: 'unorm8x4' },
354
+ ],
355
+ }],
356
+ },
357
+ fragment: {
358
+ module: this._shaderModule,
359
+ entryPoint: 'fragmentMain',
360
+ targets: [{
361
+ format,
362
+ blend: getWebGpuBlendState(blendMode),
363
+ writeMask: GPUColorWrite.ALL,
364
+ }],
365
+ },
366
+ primitive: {
367
+ topology: 'triangle-list',
368
+ cullMode: 'none',
369
+ },
370
+ };
371
+ }
372
+ _getTextureBindGroup(backend, texture) {
373
+ let group = this._textureBindGroups.get(texture);
374
+ if (!group) {
375
+ const binding = backend.getTextureBinding(texture);
376
+ group = this._device.createBindGroup({
377
+ layout: this._textureBindGroupLayout,
378
+ entries: [
379
+ { binding: 0, resource: binding.view },
380
+ { binding: 1, resource: binding.sampler },
381
+ ],
382
+ });
383
+ this._textureBindGroups.set(texture, group);
384
+ }
385
+ return group;
386
+ }
387
+ _ensureVertexCapacity(vertexCount) {
388
+ const requiredBytes = vertexCount * vertexStrideBytes;
389
+ if (requiredBytes > this._vertexData.byteLength) {
390
+ const byteLength = Math.max(requiredBytes, this._vertexData.byteLength === 0 ? vertexStrideBytes : this._vertexData.byteLength * 2);
391
+ this._vertexData = new ArrayBuffer(byteLength);
392
+ this._float32View = new Float32Array(this._vertexData);
393
+ this._uint32View = new Uint32Array(this._vertexData);
394
+ }
395
+ if (requiredBytes > this._vertexBufferCapacity) {
396
+ this._vertexBuffer?.destroy();
397
+ this._vertexBufferCapacity = Math.max(requiredBytes, this._vertexBufferCapacity === 0 ? vertexStrideBytes : this._vertexBufferCapacity * 2);
398
+ this._vertexBuffer = this._device.createBuffer({
399
+ size: this._vertexBufferCapacity,
400
+ usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
401
+ });
402
+ }
403
+ }
404
+ _ensureIndexCapacity(indexCount) {
405
+ const requiredBytes = indexCount * Uint16Array.BYTES_PER_ELEMENT;
406
+ if (this._packedIndexData.length < indexCount) {
407
+ this._packedIndexData = new Uint16Array(Math.max(indexCount, this._packedIndexData.length === 0 ? 1 : this._packedIndexData.length * 2));
408
+ }
409
+ if (requiredBytes > this._indexBufferCapacity) {
410
+ this._indexBuffer?.destroy();
411
+ this._indexBufferCapacity = Math.max(requiredBytes, this._indexBufferCapacity === 0 ? Uint16Array.BYTES_PER_ELEMENT : this._indexBufferCapacity * 2);
412
+ this._indexBuffer = this._device.createBuffer({
413
+ size: this._indexBufferCapacity,
414
+ usage: GPUBufferUsage.INDEX | GPUBufferUsage.COPY_DST,
415
+ });
416
+ }
417
+ }
418
+ _ensureUniformCapacity(drawCallCount) {
419
+ const requiredBytes = drawCallCount * this._uniformAlignment;
420
+ if (requiredBytes > this._uniformBufferCapacity) {
421
+ this._uniformBuffer?.destroy();
422
+ this._uniformBufferCapacity = Math.max(requiredBytes, this._uniformBufferCapacity === 0 ? this._uniformAlignment : this._uniformBufferCapacity * 2);
423
+ this._uniformBuffer = this._device.createBuffer({
424
+ size: this._uniformBufferCapacity,
425
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
426
+ });
427
+ this._uniformBindGroup = this._device.createBindGroup({
428
+ layout: this._uniformBindGroupLayout,
429
+ entries: [{
430
+ binding: 0,
431
+ resource: { buffer: this._uniformBuffer, size: tintByteLength },
432
+ }],
433
+ });
434
+ }
435
+ }
436
+ }
437
+
438
+ export { WebGpuMeshRenderer };
439
+ //# sourceMappingURL=WebGpuMeshRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGpuMeshRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuMeshRenderer.ts"],"sourcesContent":[null],"names":["TextureClass"],"mappings":"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"}
@@ -3,71 +3,71 @@ import { Texture } from '../texture/Texture.js';
3
3
  import { getWebGpuBlendState } from './WebGpuBlendState.js';
4
4
 
5
5
  /// <reference types="@webgpu/types" />
6
- const particleShaderSource = `
7
- struct ProjectionUniforms {
8
- projection: mat4x4<f32>,
9
- translation: mat4x4<f32>,
10
- flags: vec4<f32>,
11
- localBounds: vec4<f32>, // quadMin.xy, quadSize.xy
12
- uvBounds: vec4<f32>, // uvMin.xy, uvMax.xy
13
- };
14
-
15
- @group(0) @binding(0)
16
- var<uniform> uniforms: ProjectionUniforms;
17
-
18
- @group(1) @binding(0)
19
- var particleTexture: texture_2d<f32>;
20
-
21
- @group(1) @binding(1)
22
- var particleSampler: sampler;
23
-
24
- // Per-instance attributes (one entry per particle, 24 bytes total).
25
- struct VertexInput {
26
- @location(0) unitPosition: vec2<f32>, // per-vertex (static unit quad)
27
- @location(1) translation: vec2<f32>,
28
- @location(2) scale: vec2<f32>,
29
- @location(3) rotation: f32,
30
- @location(4) color: vec4<f32>,
31
- };
32
-
33
- struct VertexOutput {
34
- @builtin(position) position: vec4<f32>,
35
- @location(0) texcoord: vec2<f32>,
36
- @location(1) color: vec4<f32>,
37
- };
38
-
39
- @vertex
40
- fn vertexMain(input: VertexInput) -> VertexOutput {
41
- let quadMin = uniforms.localBounds.xy;
42
- let quadSize = uniforms.localBounds.zw;
43
- let uvMin = uniforms.uvBounds.xy;
44
- let uvMax = uniforms.uvBounds.zw;
45
-
46
- let localPosition = quadMin + (input.unitPosition * quadSize);
47
- let radians = radians(input.rotation);
48
- let sinValue = sin(radians);
49
- let cosValue = cos(radians);
50
- let rotated = vec2<f32>(
51
- (localPosition.x * (input.scale.x * cosValue)) + (localPosition.y * (input.scale.y * sinValue)) + input.translation.x,
52
- (localPosition.x * (input.scale.x * -sinValue)) + (localPosition.y * (input.scale.y * cosValue)) + input.translation.y
53
- );
54
-
55
- var output: VertexOutput;
56
-
57
- output.position = uniforms.projection * uniforms.translation * vec4<f32>(rotated, 0.0, 1.0);
58
- output.texcoord = uvMin + ((uvMax - uvMin) * input.unitPosition);
59
- output.color = vec4(input.color.rgb * input.color.a, input.color.a);
60
-
61
- return output;
62
- }
63
-
64
- @fragment
65
- fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
66
- let sample = textureSample(particleTexture, particleSampler, input.texcoord);
67
- let premultipliedSample = select(sample, vec4(sample.rgb * sample.a, sample.a), uniforms.flags.x > 0.5);
68
-
69
- return premultipliedSample * input.color;
70
- }
6
+ const particleShaderSource = `
7
+ struct ProjectionUniforms {
8
+ projection: mat4x4<f32>,
9
+ translation: mat4x4<f32>,
10
+ flags: vec4<f32>,
11
+ localBounds: vec4<f32>, // quadMin.xy, quadSize.xy
12
+ uvBounds: vec4<f32>, // uvMin.xy, uvMax.xy
13
+ };
14
+
15
+ @group(0) @binding(0)
16
+ var<uniform> uniforms: ProjectionUniforms;
17
+
18
+ @group(1) @binding(0)
19
+ var particleTexture: texture_2d<f32>;
20
+
21
+ @group(1) @binding(1)
22
+ var particleSampler: sampler;
23
+
24
+ // Per-instance attributes (one entry per particle, 24 bytes total).
25
+ struct VertexInput {
26
+ @location(0) unitPosition: vec2<f32>, // per-vertex (static unit quad)
27
+ @location(1) translation: vec2<f32>,
28
+ @location(2) scale: vec2<f32>,
29
+ @location(3) rotation: f32,
30
+ @location(4) color: vec4<f32>,
31
+ };
32
+
33
+ struct VertexOutput {
34
+ @builtin(position) position: vec4<f32>,
35
+ @location(0) texcoord: vec2<f32>,
36
+ @location(1) color: vec4<f32>,
37
+ };
38
+
39
+ @vertex
40
+ fn vertexMain(input: VertexInput) -> VertexOutput {
41
+ let quadMin = uniforms.localBounds.xy;
42
+ let quadSize = uniforms.localBounds.zw;
43
+ let uvMin = uniforms.uvBounds.xy;
44
+ let uvMax = uniforms.uvBounds.zw;
45
+
46
+ let localPosition = quadMin + (input.unitPosition * quadSize);
47
+ let radians = radians(input.rotation);
48
+ let sinValue = sin(radians);
49
+ let cosValue = cos(radians);
50
+ let rotated = vec2<f32>(
51
+ (localPosition.x * (input.scale.x * cosValue)) + (localPosition.y * (input.scale.y * sinValue)) + input.translation.x,
52
+ (localPosition.x * (input.scale.x * -sinValue)) + (localPosition.y * (input.scale.y * cosValue)) + input.translation.y
53
+ );
54
+
55
+ var output: VertexOutput;
56
+
57
+ output.position = uniforms.projection * uniforms.translation * vec4<f32>(rotated, 0.0, 1.0);
58
+ output.texcoord = uvMin + ((uvMax - uvMin) * input.unitPosition);
59
+ output.color = vec4(input.color.rgb * input.color.a, input.color.a);
60
+
61
+ return output;
62
+ }
63
+
64
+ @fragment
65
+ fn fragmentMain(input: VertexOutput) -> @location(0) vec4<f32> {
66
+ let sample = textureSample(particleTexture, particleSampler, input.texcoord);
67
+ let premultipliedSample = select(sample, vec4(sample.rgb * sample.a, sample.a), uniforms.flags.x > 0.5);
68
+
69
+ return premultipliedSample * input.color;
70
+ }
71
71
  `;
72
72
  const staticVertexStrideBytes = 8;
73
73
  const instanceWords = 6;
@@ -1 +1 @@
1
- {"version":3,"file":"WebGpuParticleRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuParticleRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGpuParticleRenderer.js","sources":["../../../../../src/rendering/webgpu/WebGpuParticleRenderer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}