@luma.gl/webgpu 9.0.0-alpha.14 → 9.0.0-alpha.16
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/adapter/helpers/accessor-to-format.js +100 -1
- package/dist/adapter/helpers/convert-texture-format.js +5 -6
- package/dist/adapter/helpers/generate-mipmaps.js +88 -92
- package/dist/adapter/helpers/get-bind-group.js +54 -48
- package/dist/adapter/helpers/get-vertex-buffer-layout.js +97 -84
- package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
- package/dist/adapter/helpers/webgpu-parameters.js +181 -129
- package/dist/adapter/resources/webgpu-buffer.js +57 -73
- package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-command-encoder.js +47 -63
- package/dist/adapter/resources/webgpu-compute-pass.d.ts +1 -1
- package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-compute-pass.js +51 -55
- package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-compute-pipeline.js +22 -24
- package/dist/adapter/resources/webgpu-external-texture.js +26 -27
- package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-framebuffer.js +89 -103
- package/dist/adapter/resources/webgpu-query.js +42 -1
- package/dist/adapter/resources/webgpu-render-pass.d.ts +1 -1
- package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-render-pass.js +64 -89
- package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-render-pipeline.js +158 -154
- package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
- package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-sampler.js +16 -22
- package/dist/adapter/resources/webgpu-shader.d.ts +1 -1
- package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-shader.js +47 -58
- package/dist/adapter/resources/webgpu-texture.d.ts +0 -1
- package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-texture.js +100 -103
- package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgpu-canvas-context.js +77 -90
- package/dist/adapter/webgpu-device.js +215 -242
- package/dist/adapter/webgpu-types.js +0 -2
- package/dist/bundle.js +1 -2
- package/dist/dist.js +8051 -0
- package/dist/dist.min.js +1 -0
- package/dist/es5/adapter/helpers/accessor-to-format.js +2 -0
- package/dist/es5/adapter/helpers/accessor-to-format.js.map +1 -0
- package/dist/es5/adapter/helpers/convert-texture-format.js +13 -0
- package/dist/es5/adapter/helpers/convert-texture-format.js.map +1 -0
- package/dist/es5/adapter/helpers/generate-mipmaps.js +103 -0
- package/dist/es5/adapter/helpers/generate-mipmaps.js.map +1 -0
- package/dist/es5/adapter/helpers/get-bind-group.js +66 -0
- package/dist/es5/adapter/helpers/get-bind-group.js.map +1 -0
- package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js +149 -0
- package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
- package/dist/es5/adapter/helpers/webgpu-parameters.js +150 -0
- package/dist/es5/adapter/helpers/webgpu-parameters.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-buffer.js +131 -0
- package/dist/es5/adapter/resources/webgpu-buffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-command-encoder.js +90 -0
- package/dist/es5/adapter/resources/webgpu-command-encoder.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-compute-pass.js +85 -0
- package/dist/es5/adapter/resources/webgpu-compute-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-compute-pipeline.js +48 -0
- package/dist/es5/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-external-texture.js +50 -0
- package/dist/es5/adapter/resources/webgpu-external-texture.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-framebuffer.js +126 -0
- package/dist/es5/adapter/resources/webgpu-framebuffer.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-query.js +2 -0
- package/dist/es5/adapter/resources/webgpu-query.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-render-pass.js +124 -0
- package/dist/es5/adapter/resources/webgpu-render-pass.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-render-pipeline.js +185 -0
- package/dist/es5/adapter/resources/webgpu-render-pipeline.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-sampler.js +45 -0
- package/dist/es5/adapter/resources/webgpu-sampler.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-shader.js +125 -0
- package/dist/es5/adapter/resources/webgpu-shader.js.map +1 -0
- package/dist/es5/adapter/resources/webgpu-texture.js +138 -0
- package/dist/es5/adapter/resources/webgpu-texture.js.map +1 -0
- package/dist/es5/adapter/webgpu-canvas-context.js +111 -0
- package/dist/es5/adapter/webgpu-canvas-context.js.map +1 -0
- package/dist/es5/adapter/webgpu-device.js +317 -0
- package/dist/es5/adapter/webgpu-device.js.map +1 -0
- package/dist/es5/adapter/webgpu-types.js +2 -0
- package/dist/es5/adapter/webgpu-types.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/glsl/glsllang.js +47 -0
- package/dist/es5/glsl/glsllang.js.map +1 -0
- package/dist/es5/index.js +44 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/init.js +7 -0
- package/dist/es5/init.js.map +1 -0
- package/dist/esm/adapter/helpers/accessor-to-format.js +2 -0
- package/dist/esm/adapter/helpers/accessor-to-format.js.map +1 -0
- package/dist/esm/adapter/helpers/convert-texture-format.js +7 -0
- package/dist/esm/adapter/helpers/convert-texture-format.js.map +1 -0
- package/dist/esm/adapter/helpers/generate-mipmaps.js +88 -0
- package/dist/esm/adapter/helpers/generate-mipmaps.js.map +1 -0
- package/dist/esm/adapter/helpers/get-bind-group.js +51 -0
- package/dist/esm/adapter/helpers/get-bind-group.js.map +1 -0
- package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js +83 -0
- package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
- package/dist/esm/adapter/helpers/webgpu-parameters.js +137 -0
- package/dist/esm/adapter/helpers/webgpu-parameters.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-buffer.js +70 -0
- package/dist/esm/adapter/resources/webgpu-buffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-command-encoder.js +49 -0
- package/dist/esm/adapter/resources/webgpu-command-encoder.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-compute-pass.js +44 -0
- package/dist/esm/adapter/resources/webgpu-compute-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-compute-pipeline.js +23 -0
- package/dist/esm/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-external-texture.js +23 -0
- package/dist/esm/adapter/resources/webgpu-external-texture.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-framebuffer.js +93 -0
- package/dist/esm/adapter/resources/webgpu-framebuffer.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-query.js +2 -0
- package/dist/esm/adapter/resources/webgpu-query.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-render-pass.js +79 -0
- package/dist/esm/adapter/resources/webgpu-render-pass.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-render-pipeline.js +130 -0
- package/dist/esm/adapter/resources/webgpu-render-pipeline.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-sampler.js +20 -0
- package/dist/esm/adapter/resources/webgpu-sampler.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-shader.js +50 -0
- package/dist/esm/adapter/resources/webgpu-shader.js.map +1 -0
- package/dist/esm/adapter/resources/webgpu-texture.js +95 -0
- package/dist/esm/adapter/resources/webgpu-texture.js.map +1 -0
- package/dist/esm/adapter/webgpu-canvas-context.js +74 -0
- package/dist/esm/adapter/webgpu-canvas-context.js.map +1 -0
- package/dist/esm/adapter/webgpu-device.js +196 -0
- package/dist/esm/adapter/webgpu-device.js.map +1 -0
- package/dist/esm/adapter/webgpu-types.js +2 -0
- package/dist/esm/adapter/webgpu-types.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/glsl/glsllang.js +9 -0
- package/dist/esm/glsl/glsllang.js.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/init.js +4 -0
- package/dist/esm/init.js.map +1 -0
- package/dist/glsl/glsllang.js +9 -7
- package/dist/index.js +8 -6
- package/dist/init.js +1 -2
- package/package.json +8 -8
- package/src/adapter/helpers/webgpu-parameters.ts +7 -2
- package/src/adapter/resources/webgpu-command-encoder.ts +2 -1
- package/src/adapter/resources/webgpu-compute-pass.ts +4 -4
- package/src/adapter/resources/webgpu-compute-pipeline.ts +2 -1
- package/src/adapter/resources/webgpu-framebuffer.ts +3 -2
- package/src/adapter/resources/webgpu-render-pass.ts +2 -2
- package/src/adapter/resources/webgpu-render-pipeline.ts +2 -1
- package/src/adapter/resources/webgpu-shader.ts +1 -1
- package/src/adapter/webgpu-canvas-context.ts +3 -2
- package/src/adapter/webgpu-device.ts +2 -2
- package/dist/adapter/helpers/accessor-to-format.js.map +0 -1
- package/dist/adapter/helpers/convert-texture-format.js.map +0 -1
- package/dist/adapter/helpers/generate-mipmaps.js.map +0 -1
- package/dist/adapter/helpers/get-bind-group.js.map +0 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
- package/dist/adapter/helpers/webgpu-parameters.js.map +0 -1
- package/dist/adapter/resources/webgpu-buffer.js.map +0 -1
- package/dist/adapter/resources/webgpu-command-encoder.js.map +0 -1
- package/dist/adapter/resources/webgpu-compute-pass.js.map +0 -1
- package/dist/adapter/resources/webgpu-compute-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgpu-external-texture.js.map +0 -1
- package/dist/adapter/resources/webgpu-framebuffer.js.map +0 -1
- package/dist/adapter/resources/webgpu-query.js.map +0 -1
- package/dist/adapter/resources/webgpu-render-pass.js.map +0 -1
- package/dist/adapter/resources/webgpu-render-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgpu-sampler.js.map +0 -1
- package/dist/adapter/resources/webgpu-shader.js.map +0 -1
- package/dist/adapter/resources/webgpu-texture.js.map +0 -1
- package/dist/adapter/webgpu-canvas-context.js.map +0 -1
- package/dist/adapter/webgpu-device.js.map +0 -1
- package/dist/adapter/webgpu-types.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/glsl/glsllang.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-framebuffer.js","names":["_api","require","_webgpuTexture","_interopRequireDefault","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUFramebuffer","_Framebuffer","_inherits2","_super","device","props","_this","_classCallCheck2","_assertThisInitialized2","colorAttachments","depthStencilAttachment","createDepthStencilTexture","map","colorAttachment","createColorTexture","renderPassDescriptor","view","handle","createView","depthClearValue","depthStoreOp","stencilClearValue","stencilStoreOp","loadOp","loadValue","storeOp","_createClass2","value","WEBGPUTexture","_createTexture","id","format","width","height","usage","Texture","RENDER_ATTACHMENT","Error","texture","_resizeAttachments","resizedTexture","destroy","Framebuffer","exports"],"sources":["../../../../src/adapter/resources/webgpu-framebuffer.ts"],"sourcesContent":["import type {FramebufferProps, ColorTextureFormat} from '@luma.gl/api';\nimport {Framebuffer, Texture} from '@luma.gl/api';\nimport WebGPUDevice from '../webgpu-device';\n// import WebGPUCanvasContext from '../webgpu-canvas-context';\nimport WEBGPUTexture from './webgpu-texture';\nimport WebGPUTexture from './webgpu-texture';\n\n// const DEFAULT_DEPTH_STENCIL_FORMAT: DepthStencilTextureFormat = 'depth24plus';\n\n// const MAX_COLOR_ATTACHMENTS = 8;\n\n/**\n * Create new textures with correct size for all attachments. \n * @note resize() destroys existing textures (if size has changed). \n */\nexport default class WebGPUFramebuffer extends Framebuffer {\n readonly device: WebGPUDevice;\n\n colorAttachments: WebGPUTexture[] = [];\n depthStencilAttachment: WebGPUTexture | null = null;\n\n /** Partial render pass descriptor. Used by WebGPURenderPass */\n renderPassDescriptor: {\n colorAttachments: GPURenderPassColorAttachment[];\n depthStencilAttachment?: GPURenderPassDepthStencilAttachment;\n } = {\n colorAttachments: []\n };\n\n constructor(device: WebGPUDevice, props: FramebufferProps) {\n super(device, props);\n this.device = device;\n\n if (props.depthStencilAttachment) {\n this.depthStencilAttachment = this.createDepthStencilTexture(props);\n }\n\n if (props.colorAttachments) {\n this.colorAttachments = props.colorAttachments.map(colorAttachment => this.createColorTexture(this.props, colorAttachment));\n }\n\n if (this.depthStencilAttachment) {\n this.renderPassDescriptor.depthStencilAttachment = {\n view: this.depthStencilAttachment.handle.createView(),\n // Add default clear values\n depthClearValue: 1.0,\n depthStoreOp: 'store',\n stencilClearValue: 0,\n stencilStoreOp: 'store',\n }\n }\n\n if (this.colorAttachments.length > 0) {\n this.renderPassDescriptor.colorAttachments = this.colorAttachments.map(colorAttachment => ({\n view: colorAttachment.handle.createView(),\n loadOp: 'clear',\n loadValue: [0.0, 0.0, 0.0, 0.0],\n storeOp: 'store'\n }));\n }\n }\n\n /** Create depth stencil texture */\n private createDepthStencilTexture(props: FramebufferProps): WEBGPUTexture {\n if (props.depthStencilAttachment instanceof WEBGPUTexture) {\n return props.depthStencilAttachment;\n }\n\n if (typeof props.depthStencilAttachment === 'string') {\n return this.device._createTexture({\n id: 'depth-stencil-attachment',\n format: props.depthStencilAttachment,\n width: props.width,\n height: props.height,\n usage: Texture.RENDER_ATTACHMENT\n });\n }\n\n throw new Error('type');\n }\n\n private createColorTexture(props: FramebufferProps, texture: Texture | ColorTextureFormat): WEBGPUTexture {\n if (texture instanceof WEBGPUTexture) {\n return texture;\n }\n\n if (typeof texture === 'string') {\n return this.device._createTexture({\n id: 'color-attachment',\n format: texture,\n width: props.width,\n height: props.height,\n usage: Texture.RENDER_ATTACHMENT\n });\n }\n\n throw new Error('type');\n }\n\n /**\n * Create new textures with correct size for all attachments.\n * @note destroys existing textures.\n */\n protected _resizeAttachments(width: number, height: number): void {\n for (let i = 0; i < this.colorAttachments.length; ++i) {\n if (this.colorAttachments[i]) {\n const resizedTexture = this.device._createTexture({...this.colorAttachments[i].props, width, height})\n this.colorAttachments[i].destroy();\n this.colorAttachments[i] = resizedTexture;\n this.renderPassDescriptor.colorAttachments[i].view = resizedTexture.handle.createView();\n }\n }\n\n if (this.depthStencilAttachment) {\n const resizedTexture = this.device._createTexture({...this.depthStencilAttachment.props, width, height})\n this.depthStencilAttachment.destroy();\n this.depthStencilAttachment = resizedTexture;\n this.renderPassDescriptor.depthStencilAttachment.view = resizedTexture.handle.createView();\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-query.js","names":[],"sources":["../../../../src/adapter/resources/webgpu-query.ts"],"sourcesContent":["/*\nimport {Resource, Query, QueryProps} from '@luma.gl/api';\nimport WebGPUDevice from '../webgpu-device';\n\nexport type WebGPUQueryProps = QueryProps & {\n handle?: any;\n};\n\nconst DEFAULT_QUERY_PROPS: Required<WebGPUQueryProps> = {\n id: undefined,\n handle: undefined,\n userData: undefined,\n type: 'timestamp',\n count: 1,\n pipelineStatistics: []\n};\n\n/**\n * Immutable\n *\nclass WebGPUQuery extends Resource<WebGPUQueryProps> implements Query {\n readonly device: WebGPUDevice;\n readonly handle: GPUQuerySet;\n\n constructor(device: WebGPUDevice, props: WebGPUQueryProps) {\n super(device, props, DEFAULT_QUERY_PROPS);\n this.handle = this.props.handle as GPUQuerySet || this.createHandle();\n this.handle.label = this.props.id;\n }\n\n protected createHandle() {\n return this.device.handle.createQuerySet({\n type: this.props.type,\n count: this.props.count,\n pipelineStatistics: this.props.pipelineStatistics\n });\n }\n\n override destroy(): void {\n this.handle.destroy();\n }\n}\n*/"],"mappings":""}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _api = require("@luma.gl/api");
|
|
16
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
17
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
18
|
+
var WebGPURenderPass = function (_RenderPass) {
|
|
19
|
+
(0, _inherits2.default)(WebGPURenderPass, _RenderPass);
|
|
20
|
+
var _super = _createSuper(WebGPURenderPass);
|
|
21
|
+
function WebGPURenderPass(device) {
|
|
22
|
+
var _this;
|
|
23
|
+
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
24
|
+
(0, _classCallCheck2.default)(this, WebGPURenderPass);
|
|
25
|
+
_this = _super.call(this, device, props);
|
|
26
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
27
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
|
|
28
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "pipeline", null);
|
|
29
|
+
_this.device = device;
|
|
30
|
+
var framebuffer = props.framebuffer || device.canvasContext.getCurrentFramebuffer();
|
|
31
|
+
var renderPassDescriptor = framebuffer.renderPassDescriptor;
|
|
32
|
+
_this.handle = _this.props.handle || device.commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
33
|
+
_this.handle.label = _this.props.id;
|
|
34
|
+
return _this;
|
|
35
|
+
}
|
|
36
|
+
(0, _createClass2.default)(WebGPURenderPass, [{
|
|
37
|
+
key: "destroy",
|
|
38
|
+
value: function destroy() {}
|
|
39
|
+
}, {
|
|
40
|
+
key: "end",
|
|
41
|
+
value: function end() {
|
|
42
|
+
this.handle.end();
|
|
43
|
+
}
|
|
44
|
+
}, {
|
|
45
|
+
key: "setPipeline",
|
|
46
|
+
value: function setPipeline(pipeline) {
|
|
47
|
+
this.pipeline = (0, _api.cast)(pipeline);
|
|
48
|
+
this.handle.setPipeline(this.pipeline.handle);
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
key: "setBindings",
|
|
52
|
+
value: function setBindings(bindings) {
|
|
53
|
+
var _this$pipeline, _this$pipeline2;
|
|
54
|
+
(_this$pipeline = this.pipeline) === null || _this$pipeline === void 0 ? void 0 : _this$pipeline.setBindings(bindings);
|
|
55
|
+
var bindGroup = (_this$pipeline2 = this.pipeline) === null || _this$pipeline2 === void 0 ? void 0 : _this$pipeline2._getBindGroup();
|
|
56
|
+
if (bindGroup) {
|
|
57
|
+
this.handle.setBindGroup(0, bindGroup);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "setIndexBuffer",
|
|
62
|
+
value: function setIndexBuffer(buffer, indexFormat) {
|
|
63
|
+
var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
64
|
+
var size = arguments.length > 3 ? arguments[3] : undefined;
|
|
65
|
+
this.handle.setIndexBuffer((0, _api.cast)(buffer).handle, indexFormat, offset, size);
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "setVertexBuffer",
|
|
69
|
+
value: function setVertexBuffer(slot, buffer) {
|
|
70
|
+
var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
71
|
+
this.handle.setVertexBuffer(slot, (0, _api.cast)(buffer).handle, offset);
|
|
72
|
+
}
|
|
73
|
+
}, {
|
|
74
|
+
key: "draw",
|
|
75
|
+
value: function draw(options) {
|
|
76
|
+
if (options.indexCount) {
|
|
77
|
+
this.handle.drawIndexed(options.indexCount, options.instanceCount, options.firstIndex, options.baseVertex, options.firstInstance);
|
|
78
|
+
} else {
|
|
79
|
+
this.handle.draw(options.vertexCount || 0, options.instanceCount, options.firstIndex, options.firstInstance);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
key: "drawIndirect",
|
|
84
|
+
value: function drawIndirect() {}
|
|
85
|
+
}, {
|
|
86
|
+
key: "setParameters",
|
|
87
|
+
value: function setParameters(parameters) {
|
|
88
|
+
var blendConstant = parameters.blendConstant,
|
|
89
|
+
stencilReference = parameters.stencilReference,
|
|
90
|
+
scissorRect = parameters.scissorRect,
|
|
91
|
+
viewport = parameters.viewport;
|
|
92
|
+
if (blendConstant) {
|
|
93
|
+
this.handle.setBlendConstant(blendConstant);
|
|
94
|
+
}
|
|
95
|
+
if (stencilReference) {
|
|
96
|
+
this.handle.setStencilReference(stencilReference);
|
|
97
|
+
}
|
|
98
|
+
if (scissorRect) {
|
|
99
|
+
this.handle.setScissorRect(scissorRect[0], scissorRect[1], scissorRect[2], scissorRect[3]);
|
|
100
|
+
}
|
|
101
|
+
if (viewport) {
|
|
102
|
+
this.handle.setViewport(viewport[0], viewport[1], viewport[2], viewport[3], viewport[4], viewport[5]);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "pushDebugGroup",
|
|
107
|
+
value: function pushDebugGroup(groupLabel) {
|
|
108
|
+
this.handle.pushDebugGroup(groupLabel);
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
key: "popDebugGroup",
|
|
112
|
+
value: function popDebugGroup() {
|
|
113
|
+
this.handle.popDebugGroup();
|
|
114
|
+
}
|
|
115
|
+
}, {
|
|
116
|
+
key: "insertDebugMarker",
|
|
117
|
+
value: function insertDebugMarker(markerLabel) {
|
|
118
|
+
this.handle.insertDebugMarker(markerLabel);
|
|
119
|
+
}
|
|
120
|
+
}]);
|
|
121
|
+
return WebGPURenderPass;
|
|
122
|
+
}(_api.RenderPass);
|
|
123
|
+
exports.default = WebGPURenderPass;
|
|
124
|
+
//# sourceMappingURL=webgpu-render-pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-render-pass.js","names":["_api","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPURenderPass","_RenderPass","_inherits2","_super","device","_this","props","length","undefined","_classCallCheck2","_defineProperty2","_assertThisInitialized2","framebuffer","canvasContext","getCurrentFramebuffer","renderPassDescriptor","handle","commandEncoder","beginRenderPass","label","id","_createClass2","key","value","destroy","end","setPipeline","pipeline","cast","setBindings","bindings","_this$pipeline","_this$pipeline2","bindGroup","_getBindGroup","setBindGroup","setIndexBuffer","buffer","indexFormat","offset","size","setVertexBuffer","slot","draw","options","indexCount","drawIndexed","instanceCount","firstIndex","baseVertex","firstInstance","vertexCount","drawIndirect","setParameters","parameters","blendConstant","stencilReference","scissorRect","viewport","setBlendConstant","setStencilReference","setScissorRect","setViewport","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel","RenderPass","exports"],"sources":["../../../../src/adapter/resources/webgpu-render-pass.ts"],"sourcesContent":["import type {RenderPassProps, RenderPassParameters, Binding} from '@luma.gl/api';\nimport {Buffer, RenderPass, RenderPipeline, cast} from '@luma.gl/api';\nimport WebGPUDevice from '../webgpu-device';\nimport WebGPUBuffer from './webgpu-buffer';\n// import WebGPUCommandEncoder from './webgpu-command-encoder';\nimport WebGPURenderPipeline from './webgpu-render-pipeline';\n\nexport default class WebGPURenderPass extends RenderPass {\n readonly device: WebGPUDevice;\n readonly handle: GPURenderPassEncoder;\n\n /** Active pipeline */\n pipeline: WebGPURenderPipeline | null = null;\n\n constructor(device: WebGPUDevice, props: RenderPassProps = {}) {\n super(device, props);\n this.device = device;\n const framebuffer = props.framebuffer || device.canvasContext.getCurrentFramebuffer();\n // @ts-expect-error\n const renderPassDescriptor = framebuffer.renderPassDescriptor;\n this.handle = this.props.handle || device.commandEncoder.beginRenderPass(renderPassDescriptor);\n this.handle.label = this.props.id;\n }\n\n override destroy(): void {}\n\n end(): void {\n this.handle.end();\n }\n\n setPipeline(pipeline: RenderPipeline): void {\n this.pipeline = cast<WebGPURenderPipeline>(pipeline);\n this.handle.setPipeline(this.pipeline.handle);\n }\n\n /** Sets an array of bindings (uniform buffers, samplers, textures, ...) */\n setBindings(bindings: Record<string, Binding>): void {\n this.pipeline?.setBindings(bindings);\n const bindGroup = this.pipeline?._getBindGroup();\n if (bindGroup) {\n this.handle.setBindGroup(0, bindGroup);\n }\n }\n\n setIndexBuffer(\n buffer: Buffer,\n indexFormat: GPUIndexFormat,\n offset: number = 0,\n size?: number\n ): void {\n this.handle.setIndexBuffer(cast<WebGPUBuffer>(buffer).handle, indexFormat, offset, size);\n }\n\n setVertexBuffer(slot: number, buffer: Buffer, offset: number = 0): void {\n this.handle.setVertexBuffer(slot, cast<WebGPUBuffer>(buffer).handle, offset);\n }\n\n draw(options: {\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): void {\n if (options.indexCount) {\n this.handle.drawIndexed(\n options.indexCount,\n options.instanceCount,\n options.firstIndex,\n options.baseVertex,\n options.firstInstance\n );\n } else {\n this.handle.draw(\n options.vertexCount || 0,\n options.instanceCount,\n options.firstIndex,\n options.firstInstance\n );\n }\n }\n\n drawIndirect(): void {\n // drawIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): void;\n // drawIndexedIndirect(indirectBuffer: GPUBuffer, indirectOffset: number): void;\n }\n\n setParameters(parameters: RenderPassParameters): void {\n const {blendConstant, stencilReference, scissorRect, viewport} = parameters;\n if (blendConstant) {\n this.handle.setBlendConstant(blendConstant);\n }\n if (stencilReference) {\n this.handle.setStencilReference(stencilReference);\n }\n if (scissorRect) {\n this.handle.setScissorRect(scissorRect[0], scissorRect[1], scissorRect[2], scissorRect[3]);\n }\n // TODO - explain how 3 dimensions vs 2 in WebGL works.\n if (viewport) {\n this.handle.setViewport(\n viewport[0],\n viewport[1],\n viewport[2],\n viewport[3],\n viewport[4],\n viewport[5]\n );\n }\n }\n\n pushDebugGroup(groupLabel: string): void {\n this.handle.pushDebugGroup(groupLabel);\n }\n popDebugGroup(): void {\n this.handle.popDebugGroup();\n }\n insertDebugMarker(markerLabel: string): void {\n this.handle.insertDebugMarker(markerLabel);\n }\n\n // writeTimestamp(querySet: GPUQuerySet, queryIndex: number): void;\n // beginOcclusionQuery(queryIndex: number): void;\n // endOcclusionQuery(): void;\n // beginPipelineStatisticsQuery(querySet: GPUQuerySet, queryIndex: number): void;\n // endPipelineStatisticsQuery(querySet: GPUQuerySet, queryIndex: number): void;\n\n // executeBundles(bundles: Iterable<GPURenderBundle>): void;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _api = require("@luma.gl/api");
|
|
17
|
+
var _webgpuParameters = require("../helpers/webgpu-parameters");
|
|
18
|
+
var _convertTextureFormat = require("../helpers/convert-texture-format");
|
|
19
|
+
var _getBindGroup2 = require("../helpers/get-bind-group");
|
|
20
|
+
var _getVertexBufferLayout = require("../helpers/get-vertex-buffer-layout");
|
|
21
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
22
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
23
|
+
var WebGPURenderPipeline = function (_RenderPipeline) {
|
|
24
|
+
(0, _inherits2.default)(WebGPURenderPipeline, _RenderPipeline);
|
|
25
|
+
var _super = _createSuper(WebGPURenderPipeline);
|
|
26
|
+
function WebGPURenderPipeline(device, props) {
|
|
27
|
+
var _this;
|
|
28
|
+
(0, _classCallCheck2.default)(this, WebGPURenderPipeline);
|
|
29
|
+
_this = _super.call(this, device, props);
|
|
30
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
31
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
|
|
32
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vs", void 0);
|
|
33
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fs", null);
|
|
34
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_bufferSlots", void 0);
|
|
35
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_buffers", void 0);
|
|
36
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_indexBuffer", null);
|
|
37
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_bindGroupLayout", void 0);
|
|
38
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_bindGroup", null);
|
|
39
|
+
_this.device = device;
|
|
40
|
+
_this.handle = _this.props.handle || _this.createHandle();
|
|
41
|
+
_this.handle.label = _this.props.id;
|
|
42
|
+
_this.vs = (0, _api.cast)(props.vs);
|
|
43
|
+
_this.fs = (0, _api.cast)(props.fs);
|
|
44
|
+
_this._bufferSlots = (0, _getVertexBufferLayout.getBufferSlots)(_this.props.layout, _this.props.bufferMap);
|
|
45
|
+
_this._buffers = new Array(Object.keys(_this._bufferSlots).length).fill(null);
|
|
46
|
+
_this._bindGroupLayout = _this.handle.getBindGroupLayout(0);
|
|
47
|
+
return _this;
|
|
48
|
+
}
|
|
49
|
+
(0, _createClass2.default)(WebGPURenderPipeline, [{
|
|
50
|
+
key: "createHandle",
|
|
51
|
+
value: function createHandle() {
|
|
52
|
+
var descriptor = this._getRenderPipelineDescriptor();
|
|
53
|
+
var renderPipeline = this.device.handle.createRenderPipeline(descriptor);
|
|
54
|
+
_api.log.groupCollapsed(1, "new WebGPRenderPipeline(".concat(this.id, ")"))();
|
|
55
|
+
_api.log.log(1, JSON.stringify(descriptor, null, 2))();
|
|
56
|
+
_api.log.groupEnd(1)();
|
|
57
|
+
return renderPipeline;
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
key: "destroy",
|
|
61
|
+
value: function destroy() {}
|
|
62
|
+
}, {
|
|
63
|
+
key: "setIndexBuffer",
|
|
64
|
+
value: function setIndexBuffer(indexBuffer) {
|
|
65
|
+
this._indexBuffer = (0, _api.cast)(indexBuffer);
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "setAttributes",
|
|
69
|
+
value: function setAttributes(attributes) {
|
|
70
|
+
for (var _i = 0, _Object$entries = Object.entries(attributes); _i < _Object$entries.length; _i++) {
|
|
71
|
+
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
72
|
+
name = _Object$entries$_i[0],
|
|
73
|
+
buffer = _Object$entries$_i[1];
|
|
74
|
+
var bufferIndex = this._bufferSlots[name];
|
|
75
|
+
if (bufferIndex >= 0) {
|
|
76
|
+
this._buffers[bufferIndex] = buffer;
|
|
77
|
+
} else {
|
|
78
|
+
throw new Error("Setting attribute '".concat(name, "' not listed in shader layout for program ").concat(this.id));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
key: "setBindings",
|
|
84
|
+
value: function setBindings(bindings) {
|
|
85
|
+
if (!(0, _api.isObjectEmpty)(this.props.bindings)) {
|
|
86
|
+
Object.assign(this.props.bindings, bindings);
|
|
87
|
+
this._bindGroup = (0, _getBindGroup2.getBindGroup)(this.device.handle, this._bindGroupLayout, this.props.layout, this.props.bindings);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, {
|
|
91
|
+
key: "setUniforms",
|
|
92
|
+
value: function setUniforms(uniforms) {
|
|
93
|
+
if (!(0, _api.isObjectEmpty)(uniforms)) {
|
|
94
|
+
throw new Error('WebGPU does not support uniforms');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
key: "_getBuffers",
|
|
99
|
+
value: function _getBuffers() {
|
|
100
|
+
return this._buffers;
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
key: "_getBindGroup",
|
|
104
|
+
value: function _getBindGroup() {
|
|
105
|
+
return this._bindGroup;
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
key: "_getRenderPipelineDescriptor",
|
|
109
|
+
value: function _getRenderPipelineDescriptor() {
|
|
110
|
+
var vertex = {
|
|
111
|
+
module: (0, _api.cast)(this.props.vs).handle,
|
|
112
|
+
entryPoint: this.props.vsEntryPoint || 'main',
|
|
113
|
+
buffers: (0, _getVertexBufferLayout.getVertexBufferLayout)(this.props.layout, this.props.bufferMap)
|
|
114
|
+
};
|
|
115
|
+
var fragment;
|
|
116
|
+
if (this.props.fs) {
|
|
117
|
+
var _this$device, _this$device$canvasCo;
|
|
118
|
+
fragment = {
|
|
119
|
+
module: (0, _api.cast)(this.props.fs).handle,
|
|
120
|
+
entryPoint: this.props.fsEntryPoint || 'main',
|
|
121
|
+
targets: [{
|
|
122
|
+
format: (0, _convertTextureFormat.getWebGPUTextureFormat)((_this$device = this.device) === null || _this$device === void 0 ? void 0 : (_this$device$canvasCo = _this$device.canvasContext) === null || _this$device$canvasCo === void 0 ? void 0 : _this$device$canvasCo.format)
|
|
123
|
+
}]
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
switch (this.props.topology) {
|
|
127
|
+
case 'triangle-fan':
|
|
128
|
+
case 'line-loop':
|
|
129
|
+
throw new Error("WebGPU does not support primitive topology ".concat(this.props.topology));
|
|
130
|
+
default:
|
|
131
|
+
}
|
|
132
|
+
var descriptor = {
|
|
133
|
+
vertex: vertex,
|
|
134
|
+
fragment: fragment,
|
|
135
|
+
primitive: {
|
|
136
|
+
topology: this.props.topology
|
|
137
|
+
},
|
|
138
|
+
layout: 'auto'
|
|
139
|
+
};
|
|
140
|
+
(0, _webgpuParameters.applyParametersToRenderPipelineDescriptor)(descriptor, this.props.parameters);
|
|
141
|
+
return descriptor;
|
|
142
|
+
}
|
|
143
|
+
}, {
|
|
144
|
+
key: "draw",
|
|
145
|
+
value: function draw(options) {
|
|
146
|
+
var webgpuRenderPass = (0, _api.cast)(options.renderPass) || this.device.getDefaultRenderPass();
|
|
147
|
+
webgpuRenderPass.handle.setPipeline(this.handle);
|
|
148
|
+
var bindGroup = this._getBindGroup();
|
|
149
|
+
if (bindGroup) {
|
|
150
|
+
webgpuRenderPass.handle.setBindGroup(0, bindGroup);
|
|
151
|
+
}
|
|
152
|
+
this._setAttributeBuffers(webgpuRenderPass);
|
|
153
|
+
if (options.indexCount) {
|
|
154
|
+
webgpuRenderPass.handle.drawIndexed(options.indexCount, options.instanceCount, options.firstIndex, options.baseVertex, options.firstInstance);
|
|
155
|
+
} else {
|
|
156
|
+
webgpuRenderPass.handle.draw(options.vertexCount || 0, options.instanceCount, options.firstIndex, options.firstInstance);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}, {
|
|
160
|
+
key: "_setAttributeBuffers",
|
|
161
|
+
value: function _setAttributeBuffers(webgpuRenderPass) {
|
|
162
|
+
var _this2 = this;
|
|
163
|
+
if (this._indexBuffer) {
|
|
164
|
+
webgpuRenderPass.handle.setIndexBuffer(this._indexBuffer.handle, this._indexBuffer.props.indexType);
|
|
165
|
+
}
|
|
166
|
+
var buffers = this._getBuffers();
|
|
167
|
+
var _loop = function _loop(i) {
|
|
168
|
+
var buffer = (0, _api.cast)(buffers[i]);
|
|
169
|
+
if (!buffer) {
|
|
170
|
+
var attribute = _this2.props.layout.attributes.find(function (attribute) {
|
|
171
|
+
return attribute.location === i;
|
|
172
|
+
});
|
|
173
|
+
throw new Error("No buffer provided for attribute '".concat((attribute === null || attribute === void 0 ? void 0 : attribute.name) || '', "' in Model '").concat(_this2.props.id, "'"));
|
|
174
|
+
}
|
|
175
|
+
webgpuRenderPass.handle.setVertexBuffer(i, buffer.handle);
|
|
176
|
+
};
|
|
177
|
+
for (var i = 0; i < buffers.length; ++i) {
|
|
178
|
+
_loop(i);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}]);
|
|
182
|
+
return WebGPURenderPipeline;
|
|
183
|
+
}(_api.RenderPipeline);
|
|
184
|
+
exports.default = WebGPURenderPipeline;
|
|
185
|
+
//# sourceMappingURL=webgpu-render-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-render-pipeline.js","names":["_api","require","_webgpuParameters","_convertTextureFormat","_getBindGroup2","_getVertexBufferLayout","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPURenderPipeline","_RenderPipeline","_inherits2","_super","device","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","handle","createHandle","label","id","vs","cast","fs","_bufferSlots","getBufferSlots","layout","bufferMap","_buffers","Array","Object","keys","length","fill","_bindGroupLayout","getBindGroupLayout","_createClass2","key","value","descriptor","_getRenderPipelineDescriptor","renderPipeline","createRenderPipeline","log","groupCollapsed","concat","JSON","stringify","groupEnd","destroy","setIndexBuffer","indexBuffer","_indexBuffer","setAttributes","attributes","_i","_Object$entries","entries","_Object$entries$_i","_slicedToArray2","name","buffer","bufferIndex","Error","setBindings","bindings","isObjectEmpty","assign","_bindGroup","getBindGroup","setUniforms","uniforms","_getBuffers","_getBindGroup","vertex","module","entryPoint","vsEntryPoint","buffers","getVertexBufferLayout","fragment","_this$device","_this$device$canvasCo","fsEntryPoint","targets","format","getWebGPUTextureFormat","canvasContext","topology","primitive","applyParametersToRenderPipelineDescriptor","parameters","draw","options","webgpuRenderPass","renderPass","getDefaultRenderPass","setPipeline","bindGroup","setBindGroup","_setAttributeBuffers","indexCount","drawIndexed","instanceCount","firstIndex","baseVertex","firstInstance","vertexCount","_this2","indexType","_loop","i","attribute","find","location","setVertexBuffer","RenderPipeline","exports"],"sources":["../../../../src/adapter/resources/webgpu-render-pipeline.ts"],"sourcesContent":["import type {Binding, RenderPass} from '@luma.gl/api';\nimport {Buffer, RenderPipeline, RenderPipelineProps, cast, log, isObjectEmpty} from '@luma.gl/api';\nimport {applyParametersToRenderPipelineDescriptor} from '../helpers/webgpu-parameters';\nimport {getWebGPUTextureFormat} from '../helpers/convert-texture-format';\nimport {getBindGroup} from '../helpers/get-bind-group';\nimport {getVertexBufferLayout, getBufferSlots} from '../helpers/get-vertex-buffer-layout';\n// import {convertAttributesVertexBufferToLayout} from '../helpers/get-vertex-buffer-layout';\n// import {mapAccessorToWebGPUFormat} from './helpers/accessor-to-format';\n// import type {BufferAccessors} from './webgpu-pipeline';\n\nimport type WebGPUDevice from '../webgpu-device';\nimport type WebGPUBuffer from './webgpu-buffer';\nimport type WebGPUShader from './webgpu-shader';\nimport type WebGPURenderPass from './webgpu-render-pass';\n\n// RENDER PIPELINE\n\n/** Creates a new render pipeline when parameters change */\nexport default class WebGPURenderPipeline extends RenderPipeline {\n device: WebGPUDevice;\n handle: GPURenderPipeline;\n\n vs: WebGPUShader;\n fs: WebGPUShader | null = null;\n\n private _bufferSlots: Record<string, number>;\n private _buffers: Buffer[];\n private _indexBuffer: WebGPUBuffer | null = null;\n // private _firstIndex: number;\n // private _lastIndex: number;\n\n /** For internal use to create BindGroups */\n private _bindGroupLayout: GPUBindGroupLayout;\n private _bindGroup: GPUBindGroup | null = null;\n\n constructor(device: WebGPUDevice, props: RenderPipelineProps) {\n super(device, props);\n this.device = device;\n this.handle = (this.props.handle as GPURenderPipeline) || this.createHandle();\n this.handle.label = this.props.id;\n\n this.vs = cast<WebGPUShader>(props.vs);\n this.fs = cast<WebGPUShader>(props.fs);\n\n this._bufferSlots = getBufferSlots(this.props.layout, this.props.bufferMap);\n this._buffers = new Array<Buffer>(Object.keys(this._bufferSlots).length).fill(null);\n this._bindGroupLayout = this.handle.getBindGroupLayout(0);\n }\n\n protected createHandle(): GPURenderPipeline {\n const descriptor = this._getRenderPipelineDescriptor();\n const renderPipeline = this.device.handle.createRenderPipeline(descriptor);\n log.groupCollapsed(1, `new WebGPRenderPipeline(${this.id})`)();\n log.log(1, JSON.stringify(descriptor, null, 2))();\n log.groupEnd(1)();\n return renderPipeline;\n }\n\n override destroy(): void {\n // WebGPURenderPipeline has no destroy method.\n }\n\n setIndexBuffer(indexBuffer: Buffer): void {\n this._indexBuffer = cast<WebGPUBuffer>(indexBuffer);\n }\n\n setAttributes(attributes: Record<string, Buffer>): void {\n for (const [name, buffer] of Object.entries(attributes)) {\n const bufferIndex = this._bufferSlots[name];\n if (bufferIndex >= 0) {\n this._buffers[bufferIndex] = buffer;\n } else {\n throw new Error(\n `Setting attribute '${name}' not listed in shader layout for program ${this.id}`\n );\n }\n }\n // for (let i = 0; i < this._bufferSlots.length; ++i) {\n // const bufferName = this._bufferSlots[i];\n // if (attributes[bufferName]) {\n // this.handle\n // }\n // }\n }\n\n /** Set the bindings */\n setBindings(bindings: Record<string, Binding>): void {\n if (!isObjectEmpty(this.props.bindings)) {\n Object.assign(this.props.bindings, bindings);\n // Set up the bindings\n this._bindGroup = getBindGroup(\n this.device.handle,\n this._bindGroupLayout,\n this.props.layout,\n this.props.bindings\n );\n }\n }\n\n setUniforms(uniforms: Record<string, any>): void {\n if (!isObjectEmpty(uniforms)) {\n throw new Error('WebGPU does not support uniforms');\n }\n }\n\n _getBuffers() {\n return this._buffers;\n }\n\n /** Return a bind group created by setBindings */\n _getBindGroup() {\n // assert(this._bindGroup);\n return this._bindGroup;\n }\n\n /** Populate the complex WebGPU GPURenderPipelineDescriptor */\n protected _getRenderPipelineDescriptor() {\n // Set up the vertex stage\n const vertex: GPUVertexState = {\n module: cast<WebGPUShader>(this.props.vs).handle,\n entryPoint: this.props.vsEntryPoint || 'main',\n buffers: getVertexBufferLayout(this.props.layout, this.props.bufferMap)\n };\n\n // Set up the fragment stage\n let fragment: GPUFragmentState | undefined;\n if (this.props.fs) {\n fragment = {\n module: cast<WebGPUShader>(this.props.fs).handle,\n entryPoint: this.props.fsEntryPoint || 'main',\n targets: [\n {\n // TODO exclamation mark hack!\n format: getWebGPUTextureFormat(this.device?.canvasContext?.format!)\n }\n ]\n };\n }\n\n // WebGPU has more restrictive topology support than WebGL\n switch (this.props.topology) {\n case 'triangle-fan':\n case 'line-loop':\n throw new Error(`WebGPU does not support primitive topology ${this.props.topology}`);\n default:\n }\n\n // Create a partially populated descriptor\n let descriptor: GPURenderPipelineDescriptor = {\n vertex,\n fragment,\n primitive: {\n topology: this.props.topology\n },\n layout: 'auto'\n };\n\n // Set parameters on the descriptor\n applyParametersToRenderPipelineDescriptor(descriptor, this.props.parameters);\n\n return descriptor;\n }\n\n draw(options: {\n renderPass?: RenderPass;\n vertexCount?: number;\n indexCount?: number;\n instanceCount?: number;\n firstVertex?: number;\n firstIndex?: number;\n firstInstance?: number;\n baseVertex?: number;\n }): void {\n const webgpuRenderPass: WebGPURenderPass =\n cast<WebGPURenderPass>(options.renderPass) || this.device.getDefaultRenderPass();\n\n // Set pipeline\n webgpuRenderPass.handle.setPipeline(this.handle);\n\n // Set bindings (uniform buffers, textures etc)\n const bindGroup = this._getBindGroup();\n if (bindGroup) {\n webgpuRenderPass.handle.setBindGroup(0, bindGroup);\n }\n\n // Set attributes\n this._setAttributeBuffers(webgpuRenderPass);\n\n // Draw\n if (options.indexCount) {\n webgpuRenderPass.handle.drawIndexed(\n options.indexCount,\n options.instanceCount,\n options.firstIndex,\n options.baseVertex,\n options.firstInstance\n );\n } else {\n webgpuRenderPass.handle.draw(\n options.vertexCount || 0,\n options.instanceCount,\n options.firstIndex,\n options.firstInstance\n );\n }\n }\n\n _setAttributeBuffers(webgpuRenderPass: WebGPURenderPass) {\n if (this._indexBuffer) {\n webgpuRenderPass.handle.setIndexBuffer(this._indexBuffer.handle, this._indexBuffer.props.indexType);\n }\n\n const buffers = this._getBuffers();\n for (let i = 0; i < buffers.length; ++i) {\n const buffer = cast<WebGPUBuffer>(buffers[i]);\n if (!buffer) {\n const attribute = this.props.layout.attributes.find(\n (attribute) => attribute.location === i\n );\n throw new Error(\n `No buffer provided for attribute '${attribute?.name || ''}' in Model '${this.props.id}'`\n );\n }\n webgpuRenderPass.handle.setVertexBuffer(i, buffer.handle);\n }\n\n // TODO - HANDLE buffer maps\n /*\n for (const [bufferName, attributeMapping] of Object.entries(this.props.bufferMap)) {\n const buffer = cast<WebGPUBuffer>(this.props.attributes[bufferName]);\n if (!buffer) {\n log.warn(`Missing buffer for buffer map ${bufferName}`)();\n continue;\n }\n\n if ('location' in attributeMapping) {\n // @ts-expect-error TODO model must not depend on webgpu\n renderPass.handle.setVertexBuffer(layout.location, buffer.handle);\n } else {\n for (const [bufferName, mapping] of Object.entries(attributeMapping)) {\n // @ts-expect-error TODO model must not depend on webgpu\n renderPass.handle.setVertexBuffer(field.location, buffer.handle);\n }\n }\n }\n */\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _api = require("@luma.gl/api");
|
|
16
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
19
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
20
|
+
var WebGPUSampler = function (_Sampler) {
|
|
21
|
+
(0, _inherits2.default)(WebGPUSampler, _Sampler);
|
|
22
|
+
var _super = _createSuper(WebGPUSampler);
|
|
23
|
+
function WebGPUSampler(device, props) {
|
|
24
|
+
var _this;
|
|
25
|
+
(0, _classCallCheck2.default)(this, WebGPUSampler);
|
|
26
|
+
_this = _super.call(this, device, props);
|
|
27
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
28
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
|
|
29
|
+
_this.device = device;
|
|
30
|
+
var samplerProps = _objectSpread({}, _this.props);
|
|
31
|
+
if (samplerProps.type !== 'comparison-sampler') {
|
|
32
|
+
delete samplerProps.compare;
|
|
33
|
+
}
|
|
34
|
+
_this.handle = _this.handle || _this.device.handle.createSampler(samplerProps);
|
|
35
|
+
_this.handle.label = _this.props.id;
|
|
36
|
+
return _this;
|
|
37
|
+
}
|
|
38
|
+
(0, _createClass2.default)(WebGPUSampler, [{
|
|
39
|
+
key: "destroy",
|
|
40
|
+
value: function destroy() {}
|
|
41
|
+
}]);
|
|
42
|
+
return WebGPUSampler;
|
|
43
|
+
}(_api.Sampler);
|
|
44
|
+
exports.default = WebGPUSampler;
|
|
45
|
+
//# sourceMappingURL=webgpu-sampler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-sampler.js","names":["_api","require","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUSampler","_Sampler","_inherits2","_super","device","props","_this","_classCallCheck2","_assertThisInitialized2","samplerProps","type","compare","handle","createSampler","label","id","_createClass2","value","destroy","Sampler","exports"],"sources":["../../../../src/adapter/resources/webgpu-sampler.ts"],"sourcesContent":["import {Sampler, SamplerProps} from '@luma.gl/api';\nimport type WebGPUDevice from '../webgpu-device';\n\nexport type WebGPUSamplerProps = SamplerProps & {\n handle?: GPUSampler;\n}\n\n/**\n *\n */\nexport default class WebGPUSampler extends Sampler {\n readonly device: WebGPUDevice;\n readonly handle: GPUSampler;\n\n constructor(device: WebGPUDevice, props: WebGPUSamplerProps) {\n super(device, props);\n this.device = device;\n\n // Prepare sampler props\n const samplerProps: Partial<WebGPUSamplerProps> = {...this.props};\n if (samplerProps.type !== 'comparison-sampler') {\n delete samplerProps.compare;\n }\n\n this.handle = this.handle || this.device.handle.createSampler(samplerProps);\n this.handle.label = this.props.id;\n }\n\n override destroy(): void {\n // this.handle.destroy();\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
var _api = require("@luma.gl/api");
|
|
18
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
19
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
20
|
+
var WebGPUShader = function (_Shader) {
|
|
21
|
+
(0, _inherits2.default)(WebGPUShader, _Shader);
|
|
22
|
+
var _super = _createSuper(WebGPUShader);
|
|
23
|
+
function WebGPUShader(device, props) {
|
|
24
|
+
var _this;
|
|
25
|
+
(0, _classCallCheck2.default)(this, WebGPUShader);
|
|
26
|
+
_this = _super.call(this, device, props);
|
|
27
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
28
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
|
|
29
|
+
_this.device = device;
|
|
30
|
+
_this.device.handle.pushErrorScope('validation');
|
|
31
|
+
_this.handle = _this.props.handle || _this.createHandle();
|
|
32
|
+
_this.handle.label = _this.props.id;
|
|
33
|
+
_this._checkCompilationError(_this.device.handle.popErrorScope());
|
|
34
|
+
return _this;
|
|
35
|
+
}
|
|
36
|
+
(0, _createClass2.default)(WebGPUShader, [{
|
|
37
|
+
key: "_checkCompilationError",
|
|
38
|
+
value: function () {
|
|
39
|
+
var _checkCompilationError2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(errorScope) {
|
|
40
|
+
var error, shaderLog;
|
|
41
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
42
|
+
while (1) switch (_context.prev = _context.next) {
|
|
43
|
+
case 0:
|
|
44
|
+
_context.next = 2;
|
|
45
|
+
return errorScope;
|
|
46
|
+
case 2:
|
|
47
|
+
error = _context.sent;
|
|
48
|
+
if (!error) {
|
|
49
|
+
_context.next = 9;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
_context.next = 6;
|
|
53
|
+
return this.compilationInfo();
|
|
54
|
+
case 6:
|
|
55
|
+
shaderLog = _context.sent;
|
|
56
|
+
_api.log.error("Shader compilation error: ".concat(error.message), shaderLog)();
|
|
57
|
+
throw new Error("Shader compilation error: ".concat(error.message));
|
|
58
|
+
case 9:
|
|
59
|
+
case "end":
|
|
60
|
+
return _context.stop();
|
|
61
|
+
}
|
|
62
|
+
}, _callee, this);
|
|
63
|
+
}));
|
|
64
|
+
function _checkCompilationError(_x) {
|
|
65
|
+
return _checkCompilationError2.apply(this, arguments);
|
|
66
|
+
}
|
|
67
|
+
return _checkCompilationError;
|
|
68
|
+
}()
|
|
69
|
+
}, {
|
|
70
|
+
key: "destroy",
|
|
71
|
+
value: function destroy() {}
|
|
72
|
+
}, {
|
|
73
|
+
key: "createHandle",
|
|
74
|
+
value: function createHandle() {
|
|
75
|
+
var _this2 = this;
|
|
76
|
+
var source = this.props.source;
|
|
77
|
+
var language = this.props.language;
|
|
78
|
+
if (!language) {
|
|
79
|
+
language = source.includes('->') ? 'wgsl' : 'glsl';
|
|
80
|
+
}
|
|
81
|
+
switch (language) {
|
|
82
|
+
case 'wgsl':
|
|
83
|
+
return this.device.handle.createShaderModule({
|
|
84
|
+
code: source
|
|
85
|
+
});
|
|
86
|
+
case 'glsl':
|
|
87
|
+
return this.device.handle.createShaderModule({
|
|
88
|
+
code: source,
|
|
89
|
+
transform: function transform(glsl) {
|
|
90
|
+
return _this2.device.glslang.compileGLSL(glsl, type);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
default:
|
|
94
|
+
throw new Error(language);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}, {
|
|
98
|
+
key: "compilationInfo",
|
|
99
|
+
value: function () {
|
|
100
|
+
var _compilationInfo = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2() {
|
|
101
|
+
var compilationInfo;
|
|
102
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
103
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
104
|
+
case 0:
|
|
105
|
+
_context2.next = 2;
|
|
106
|
+
return this.handle.getCompilationInfo();
|
|
107
|
+
case 2:
|
|
108
|
+
compilationInfo = _context2.sent;
|
|
109
|
+
return _context2.abrupt("return", compilationInfo.messages);
|
|
110
|
+
case 4:
|
|
111
|
+
case "end":
|
|
112
|
+
return _context2.stop();
|
|
113
|
+
}
|
|
114
|
+
}, _callee2, this);
|
|
115
|
+
}));
|
|
116
|
+
function compilationInfo() {
|
|
117
|
+
return _compilationInfo.apply(this, arguments);
|
|
118
|
+
}
|
|
119
|
+
return compilationInfo;
|
|
120
|
+
}()
|
|
121
|
+
}]);
|
|
122
|
+
return WebGPUShader;
|
|
123
|
+
}(_api.Shader);
|
|
124
|
+
exports.default = WebGPUShader;
|
|
125
|
+
//# sourceMappingURL=webgpu-shader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-shader.js","names":["_api","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUShader","_Shader","_inherits2","_super","device","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","handle","pushErrorScope","createHandle","label","id","_checkCompilationError","popErrorScope","_createClass2","key","value","_checkCompilationError2","_asyncToGenerator2","_regenerator","mark","_callee","errorScope","error","shaderLog","wrap","_callee$","_context","prev","next","sent","compilationInfo","log","concat","message","Error","stop","_x","destroy","_this2","source","language","includes","createShaderModule","code","transform","glsl","glslang","compileGLSL","type","_compilationInfo","_callee2","_callee2$","_context2","getCompilationInfo","abrupt","messages","Shader","exports"],"sources":["../../../../src/adapter/resources/webgpu-shader.ts"],"sourcesContent":["import type {ShaderProps, CompilerMessage} from '@luma.gl/api';\nimport {Shader, log} from '@luma.gl/api';\nimport type WebGPUDevice from '../webgpu-device';\n\nexport type WebGPUShaderProps = ShaderProps & {\n handle?: GPUShaderModule;\n};\n\n/**\n * Immutable shader\n */\nexport default class WebGPUShader extends Shader {\n readonly device: WebGPUDevice;\n readonly handle: GPUShaderModule;\n\n constructor(device: WebGPUDevice, props: WebGPUShaderProps) {\n super(device, props);\n this.device = device;\n\n this.device.handle.pushErrorScope('validation');\n\n this.handle = this.props.handle || this.createHandle();\n this.handle.label = this.props.id;\n\n this._checkCompilationError(this.device.handle.popErrorScope());\n }\n\n async _checkCompilationError(errorScope: Promise<GPUError | null>): Promise<void> {\n const error = await errorScope as GPUValidationError;\n if (error) {\n const shaderLog = await this.compilationInfo();\n log.error(`Shader compilation error: ${error.message}`, shaderLog)();\n // Note: Even though this error is asynchronous and thrown after the constructor completes,\n // it will result in a useful stack trace leading back to the constructor\n throw new Error(`Shader compilation error: ${error.message}`);\n }\n }\n\n override destroy(): void {\n // this.handle.destroy();\n }\n\n protected createHandle(): GPUShaderModule {\n const {source} = this.props;\n\n let language = this.props.language;\n // Compile from src\n if (!language) {\n // wgsl uses C++ \"auto\" style arrow notation\n language = source.includes('->') ? 'wgsl' : 'glsl';\n }\n\n switch(language) {\n case 'wgsl':\n return this.device.handle.createShaderModule({code: source});\n case 'glsl':\n return this.device.handle.createShaderModule({\n code: source,\n // @ts-expect-error\n transform: (glsl) => this.device.glslang.compileGLSL(glsl, type)\n });\n default:\n throw new Error(language);\n }\n }\n\n /** Returns compilation info for this shader */\n async compilationInfo(): Promise<readonly CompilerMessage[]> {\n const compilationInfo = await this.handle.getCompilationInfo();\n return compilationInfo.messages;\n }\n}\n"],"mappings":"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"}
|