Skip to content

Commit 2ab32d3

Browse files
committed
add webgpu render library + test files
1 parent 06534f6 commit 2ab32d3

15 files changed

Lines changed: 4110 additions & 0 deletions

js/render/core/renderer-gpu.js

Lines changed: 840 additions & 0 deletions
Large diffs are not rendered by default.

js/render/geometry/primitive-stream.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,27 @@ export class PrimitiveStream {
210210

211211
return primitive;
212212
}
213+
214+
finishPrimitiveGPU(renderer) {
215+
if (!this._vertexOffset) {
216+
throw new Error(`Attempted to call finishPrimitiveGPU() before creating any geometry.`);
217+
}
218+
219+
let vertexBuffer = renderer.createRenderBuffer(new Float32Array(this._vertices), 'vertex');
220+
let indexBuffer = renderer.createRenderBuffer(new Uint16Array(this._indices), 'index');
221+
222+
let attribs = [
223+
new PrimitiveAttribute('POSITION', vertexBuffer, 3, 5126, 32, 0),
224+
new PrimitiveAttribute('TEXCOORD_0', vertexBuffer, 2, 5126, 32, 12),
225+
new PrimitiveAttribute('NORMAL', vertexBuffer, 3, 5126, 32, 20),
226+
];
227+
228+
let primitive = new Primitive(attribs, this._indices.length);
229+
primitive.setIndexBuffer(indexBuffer);
230+
primitive.setBounds(this._min, this._max);
231+
232+
return primitive;
233+
}
213234
}
214235

215236
export class GeometryBuilderBase {
@@ -233,6 +254,10 @@ export class GeometryBuilderBase {
233254
return this._stream.finishPrimitive(renderer);
234255
}
235256

257+
finishPrimitiveGPU(renderer) {
258+
return this._stream.finishPrimitiveGPU(renderer);
259+
}
260+
236261
clear() {
237262
this._stream.clear();
238263
}

0 commit comments

Comments
 (0)