@luma.gl/webgl 9.3.0-alpha.4 → 9.3.0-alpha.6

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 (68) hide show
  1. package/dist/adapter/converters/webgl-texture-table.d.ts +7 -1
  2. package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -1
  3. package/dist/adapter/converters/webgl-texture-table.js +121 -43
  4. package/dist/adapter/converters/webgl-texture-table.js.map +1 -1
  5. package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
  6. package/dist/adapter/device-helpers/webgl-device-features.js +1 -2
  7. package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -1
  8. package/dist/adapter/device-helpers/webgl-device-info.js +5 -0
  9. package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -1
  10. package/dist/adapter/helpers/get-shader-layout-from-glsl.js +16 -17
  11. package/dist/adapter/helpers/get-shader-layout-from-glsl.js.map +1 -1
  12. package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
  13. package/dist/adapter/resources/webgl-buffer.js +19 -4
  14. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  15. package/dist/adapter/resources/webgl-command-buffer.d.ts +2 -2
  16. package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
  17. package/dist/adapter/resources/webgl-command-buffer.js +2 -2
  18. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  19. package/dist/adapter/resources/webgl-command-encoder.d.ts +5 -4
  20. package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
  21. package/dist/adapter/resources/webgl-command-encoder.js +20 -7
  22. package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
  23. package/dist/adapter/resources/webgl-query-set.d.ts +29 -31
  24. package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -1
  25. package/dist/adapter/resources/webgl-query-set.js +193 -97
  26. package/dist/adapter/resources/webgl-query-set.js.map +1 -1
  27. package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
  28. package/dist/adapter/resources/webgl-render-pass.js +12 -0
  29. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  30. package/dist/adapter/resources/webgl-render-pipeline.d.ts +13 -19
  31. package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
  32. package/dist/adapter/resources/webgl-render-pipeline.js +35 -152
  33. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  34. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts +24 -0
  35. package/dist/adapter/resources/webgl-shared-render-pipeline.d.ts.map +1 -0
  36. package/dist/adapter/resources/webgl-shared-render-pipeline.js +152 -0
  37. package/dist/adapter/resources/webgl-shared-render-pipeline.js.map +1 -0
  38. package/dist/adapter/resources/webgl-texture.d.ts +23 -4
  39. package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
  40. package/dist/adapter/resources/webgl-texture.js +203 -100
  41. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  42. package/dist/adapter/webgl-device.d.ts +4 -2
  43. package/dist/adapter/webgl-device.d.ts.map +1 -1
  44. package/dist/adapter/webgl-device.js +31 -3
  45. package/dist/adapter/webgl-device.js.map +1 -1
  46. package/dist/adapter/webgl-presentation-context.d.ts +21 -0
  47. package/dist/adapter/webgl-presentation-context.d.ts.map +1 -0
  48. package/dist/adapter/webgl-presentation-context.js +64 -0
  49. package/dist/adapter/webgl-presentation-context.js.map +1 -0
  50. package/dist/dist.dev.js +1332 -788
  51. package/dist/dist.min.js +2 -2
  52. package/dist/index.cjs +1247 -797
  53. package/dist/index.cjs.map +4 -4
  54. package/package.json +3 -3
  55. package/src/adapter/converters/webgl-texture-table.ts +159 -47
  56. package/src/adapter/device-helpers/webgl-device-features.ts +1 -2
  57. package/src/adapter/device-helpers/webgl-device-info.ts +6 -0
  58. package/src/adapter/helpers/get-shader-layout-from-glsl.ts +18 -19
  59. package/src/adapter/resources/webgl-buffer.ts +16 -4
  60. package/src/adapter/resources/webgl-command-buffer.ts +3 -2
  61. package/src/adapter/resources/webgl-command-encoder.ts +22 -7
  62. package/src/adapter/resources/webgl-query-set.ts +229 -102
  63. package/src/adapter/resources/webgl-render-pass.ts +13 -0
  64. package/src/adapter/resources/webgl-render-pipeline.ts +45 -179
  65. package/src/adapter/resources/webgl-shared-render-pipeline.ts +208 -0
  66. package/src/adapter/resources/webgl-texture.ts +326 -121
  67. package/src/adapter/webgl-device.ts +40 -4
  68. package/src/adapter/webgl-presentation-context.ts +93 -0
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pass.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl-render-pass.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pass.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,UAAU,EAAwC,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAC,EAAE,EAAe,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,gBAAgB,EAAC,uDAAoD;AAC7E,OAAO,EAAC,eAAe,EAAC,0DAAuD;AAI/E,MAAM,cAAc,GAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,wCAAwC;AAEnG,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACpC,MAAM,CAAc;IACpB,MAAM,GAAG,IAAI,CAAC;IAEvB,8DAA8D;IAC9D,YAAY,GAAiB,EAAE,CAAC;IAEhC,YAAY,MAAmB,EAAE,KAAsB;QACrD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;YACxB,gFAAgF;YAChF,sEAAsE;YACtE,MAAM,CAAC,uBAAuB,EAAE,CAAC,4BAA4B,EAAE,CAAC;QAClE,CAAC;QAED,wDAAwD;QACxD,IAAI,QAAkC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;YACjC,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;gBACvB,kDAAkD;gBAClD,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC,WAAW,CAAC;gBAC1C,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,4FAA4F;gBAC5F,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,uBAAuB,EAAE,CAAC,oBAAoB,EAAE,CAAC;gBAChF,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAC,CAAC,CAAC;QAEzD,gEAAgE;QAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,WAA+B,CAAC;QACpE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,gBAAgB,EAAE,MAAM,EAAE,CAAC;YACvD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAC7D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAuB,CAAC,CACnC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,iEAAiE;YACjE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAS,CAAC,CAAC;QACxC,CAAC;QAED,yFAAyF;QACzF,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACjF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAkC,CAAC;YACpE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,GAAG;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAkC,CAAC;YACpE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,yCAAyC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,cAAc,CAAC,UAAkB,IAAS,CAAC;IAC3C,aAAa,KAAU,CAAC;IACxB,iBAAiB,CAAC,WAAmB,IAAS,CAAC;IAE/C,iDAAiD;IACjD,6BAA6B;IAE7B,4DAA4D;IAE5D;;OAEG;IACH,aAAa,CAAC,aAAmC,EAAE;QACjD,MAAM,YAAY,GAAiB,EAAC,GAAG,IAAI,CAAC,YAAY,EAAC,CAAC;QAE1D,uDAAuD;QACvD,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;QAE1D,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC7B,YAAY,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;QACrD,CAAC;QAED,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9D,YAAY,OAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAEzD,yDAAyD;QACzD,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,+CAA+C;YAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACpC,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAiB,CAAC;gBACxE,YAAY,CAAC,UAAU,GAAG;oBACxB,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAW;oBAChC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAW;iBACjC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAwB,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;YAChC,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;QAChD,CAAC;QACD,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;YAC7B,YAAY,CAAC,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;QACrD,CAAC;QACD,IAAI,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC9C,YAAY,MAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;YAC3D,YAAY,OAAqB,GAAG,UAAU,CAAC,gBAAgB,CAAC;QAClE,CAAC;QAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAAC;YAC9B,YAAY,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACpD,OAAO,CAAC,OAAO,GAAI,UAAU,CAAC,SAAoB,CAAC,CACpD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,mBAAmB,CAAC,UAAkB;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAkC,CAAC;QACpE,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACvC,CAAC;IAEQ,iBAAiB;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAkC,CAAC;QACpE,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACrC,CAAC;IAED,UAAU;IAEV;;OAEG;IACO,KAAK;QACb,MAAM,YAAY,GAAiB,EAAC,GAAG,IAAI,CAAC,YAAY,EAAC,CAAC;QAE1D,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE;gBACxD,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5E,SAAS,SAAuB,CAAC;YACjC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACpC,SAAS,OAAuB,CAAC;YACjC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;YACtC,SAAS,QAAyB,CAAC;YACnC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QACtD,CAAC;QAED,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,oDAAoD;YACpD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE;gBAClD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACO,gBAAgB,CAAC,aAAqB,CAAC,EAAE,QAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAC,EAAE,GAAG,EAAE;YAC3E,wCAAwC;YACxC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC1B,KAAK,SAAS,CAAC;gBACf,KAAK,UAAU,CAAC;gBAChB,KAAK,UAAU;oBACb,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,OAAW,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC1D,MAAM;gBACR,KAAK,UAAU,CAAC;gBAChB,KAAK,iBAAiB,CAAC;gBACvB,KAAK,WAAW,CAAC;gBACjB,KAAK,WAAW;oBACd,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,OAAW,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC3D,MAAM;gBACR,KAAK,YAAY;oBACf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,OAAW,UAAU,EAAE,KAAK,CAAC,CAAC;oBAC1D,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CAsBF"}
@@ -15,10 +15,10 @@ export declare class WEBGLRenderPipeline extends RenderPipeline {
15
15
  fs: WEBGLShader;
16
16
  /** The layout extracted from shader by WebGL introspection APIs */
17
17
  introspectedLayout: ShaderLayout;
18
- /** Uniforms set on this model */
19
- uniforms: Record<string, UniformValue>;
20
- /** Bindings set on this model */
18
+ /** Compatibility path for direct pipeline.setBindings() usage */
21
19
  bindings: Record<string, Binding>;
20
+ /** Compatibility path for direct pipeline.uniforms usage */
21
+ uniforms: Record<string, UniformValue>;
22
22
  /** WebGL varyings */
23
23
  varyings: string[] | null;
24
24
  _uniformCount: number;
@@ -27,8 +27,8 @@ export declare class WEBGLRenderPipeline extends RenderPipeline {
27
27
  constructor(device: WebGLDevice, props: RenderPipelineProps);
28
28
  destroy(): void;
29
29
  /**
30
- * Bindings include: textures, samplers and uniform buffers
31
- * @todo needed for portable model
30
+ * Compatibility shim for code paths that still set bindings on the pipeline.
31
+ * Shared-model draws pass bindings per draw and do not rely on this state.
32
32
  */
33
33
  setBindings(bindings: Record<string, Binding>, options?: {
34
34
  disableWarnings?: boolean;
@@ -51,30 +51,24 @@ export declare class WEBGLRenderPipeline extends RenderPipeline {
51
51
  firstInstance?: number;
52
52
  baseVertex?: number;
53
53
  transformFeedback?: WEBGLTransformFeedback;
54
+ bindings?: Record<string, Binding>;
55
+ uniforms?: Record<string, UniformValue>;
54
56
  }): boolean;
55
- protected _linkShaders(): Promise<void>;
56
- /** Report link status. First, check for shader compilation failures if linking fails */
57
- _reportLinkStatus(status: 'success' | 'link-error' | 'validation-error'): Promise<void>;
58
- /**
59
- * Get the shader compilation status
60
- * TODO - Load log even when no error reported, to catch warnings?
61
- * https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
62
- */
63
- _getLinkStatus(): 'success' | 'link-error' | 'validation-error';
64
- /** Use KHR_parallel_shader_compile extension if available */
65
- _waitForLinkComplete(): Promise<void>;
66
57
  /**
67
58
  * Checks if all texture-values uniforms are renderable (i.e. loaded)
68
59
  * Update a texture if needed (e.g. from video)
69
60
  * Note: This is currently done before every draw call
70
61
  */
71
- _areTexturesRenderable(): boolean;
62
+ _areTexturesRenderable(bindings: Record<string, Binding>): boolean;
72
63
  /** Apply any bindings (before each draw call) */
73
- _applyBindings(): void;
64
+ _applyBindings(bindings: Record<string, Binding>, _options?: {
65
+ disableWarnings?: boolean;
66
+ }): void;
74
67
  /**
75
68
  * Due to program sharing, uniforms need to be reset before every draw call
76
69
  * (though caching will avoid redundant WebGL calls)
77
70
  */
78
- _applyUniforms(): void;
71
+ _applyUniforms(uniforms: Record<string, UniformValue>): void;
72
+ private _syncLinkStatus;
79
73
  }
80
74
  //# sourceMappingURL=webgl-render-pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAM,MAAM,eAAe,CAAC;AASlD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAK3C,OAAO,EAAC,sBAAsB,EAAC,sCAAmC;AAKlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;IAE/C,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,WAEhC;gBAEW,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IA+BlD,OAAO,IAAI,IAAI;IAaxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IA0D3F;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;KAC5C,GAAG,OAAO;cAmGK,YAAY;IA2B5B,wFAAwF;IAClF,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC7F;;;;OAIG;IACH,cAAc,IAAI,SAAS,GAAG,YAAY,GAAG,kBAAkB;IAmB/D,6DAA6D;IACvD,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3C;;;;OAIG;IACH,sBAAsB;IAuBtB,iDAAiD;IACjD,cAAc;IAwFd;;;OAGG;IACH,cAAc;CASf"}
1
+ {"version":3,"file":"webgl-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAM,MAAM,eAAe,CAAC;AAQlD,OAAO,EAAC,WAAW,EAAC,2BAAwB;AAE5C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAK3C,OAAO,EAAC,sBAAsB,EAAC,sCAAmC;AAIlE,oCAAoC;AACpC,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,oBAAoB;IACpB,EAAE,EAAE,WAAW,CAAC;IAChB,sBAAsB;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB,mEAAmE;IACnE,kBAAkB,EAAE,YAAY,CAAC;IAEjC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACvC,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,qBAAqB;IACrB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IAEjC,aAAa,EAAE,MAAM,CAAK;IAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;IAE/C,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,WAEhC;gBAEW,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB;IAqBlD,OAAO,IAAI,IAAI;IAUxB;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI;IAkD3F;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;QACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;QAC7B,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;QAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;KACzC,GAAG,OAAO;IAkGX;;;;OAIG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoBxD,iDAAiD;IACjD,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAC;IAyFxF;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAUrD,OAAO,CAAC,eAAe;CAGxB"}
@@ -4,7 +4,6 @@
4
4
  import { RenderPipeline, log } from '@luma.gl/core';
5
5
  // import {getAttributeInfosFromLayouts} from '@luma.gl/core';
6
6
  import { GL } from '@luma.gl/constants';
7
- import { getShaderLayoutFromGLSL } from "../helpers/get-shader-layout-from-glsl.js";
8
7
  import { withDeviceAndGLParameters } from "../converters/device-parameters.js";
9
8
  import { setUniform } from "../helpers/set-uniform.js";
10
9
  import { WEBGLBuffer } from "./webgl-buffer.js";
@@ -12,7 +11,6 @@ import { WEBGLFramebuffer } from "./webgl-framebuffer.js";
12
11
  import { WEBGLTexture } from "./webgl-texture.js";
13
12
  import { WEBGLTextureView } from "./webgl-texture-view.js";
14
13
  import { getGLDrawMode } from "../helpers/webgl-topology-utils.js";
15
- const LOG_PROGRAM_PERF_PRIORITY = 4;
16
14
  /** Creates a new render pipeline */
17
15
  export class WEBGLRenderPipeline extends RenderPipeline {
18
16
  /** The WebGL device that created this render pipeline */
@@ -25,10 +23,10 @@ export class WEBGLRenderPipeline extends RenderPipeline {
25
23
  fs;
26
24
  /** The layout extracted from shader by WebGL introspection APIs */
27
25
  introspectedLayout;
28
- /** Uniforms set on this model */
29
- uniforms = {};
30
- /** Bindings set on this model */
26
+ /** Compatibility path for direct pipeline.setBindings() usage */
31
27
  bindings = {};
28
+ /** Compatibility path for direct pipeline.uniforms usage */
29
+ uniforms = {};
32
30
  /** WebGL varyings */
33
31
  varyings = null;
34
32
  _uniformCount = 0;
@@ -39,54 +37,35 @@ export class WEBGLRenderPipeline extends RenderPipeline {
39
37
  constructor(device, props) {
40
38
  super(device, props);
41
39
  this.device = device;
42
- this.handle = this.props.handle || this.device.gl.createProgram();
40
+ const webglSharedRenderPipeline = this.sharedRenderPipeline ||
41
+ this.device._createSharedRenderPipelineWebGL(props);
42
+ this.sharedRenderPipeline = webglSharedRenderPipeline;
43
+ this.handle = webglSharedRenderPipeline.handle;
44
+ this.vs = webglSharedRenderPipeline.vs;
45
+ this.fs = webglSharedRenderPipeline.fs;
46
+ this.linkStatus = webglSharedRenderPipeline.linkStatus;
47
+ this.introspectedLayout = webglSharedRenderPipeline.introspectedLayout;
43
48
  this.device._setWebGLDebugMetadata(this.handle, this, { spector: { id: this.props.id } });
44
- // Create shaders if needed
45
- this.vs = props.vs;
46
- this.fs = props.fs;
47
- // assert(this.vs.stage === 'vertex');
48
- // assert(this.fs.stage === 'fragment');
49
- // Setup varyings if supplied
50
- // @ts-expect-error WebGL only
51
- const { varyings, bufferMode = 35981 } = props;
52
- if (varyings && varyings.length > 0) {
53
- this.varyings = varyings;
54
- this.device.gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
55
- }
56
- this._linkShaders();
57
- log.time(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
58
- this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
59
- log.timeEnd(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
60
49
  // Merge provided layout with introspected layout
61
50
  this.shaderLayout = props.shaderLayout
62
51
  ? mergeShaderLayout(this.introspectedLayout, props.shaderLayout)
63
52
  : this.introspectedLayout;
64
53
  }
65
54
  destroy() {
66
- if (this.handle) {
67
- // log.error(`Deleting program ${this.id}`)();
68
- this.device.gl.useProgram(null);
69
- this.device.gl.deleteProgram(this.handle);
70
- this.destroyed = true;
71
- // @ts-expect-error
72
- this.handle.destroyed = true;
73
- // @ts-ignore
74
- this.handle = null;
55
+ if (this.destroyed) {
56
+ return;
75
57
  }
58
+ if (this.sharedRenderPipeline && !this.props._sharedRenderPipeline) {
59
+ this.sharedRenderPipeline.destroy();
60
+ }
61
+ this.destroyResource();
76
62
  }
77
63
  /**
78
- * Bindings include: textures, samplers and uniform buffers
79
- * @todo needed for portable model
64
+ * Compatibility shim for code paths that still set bindings on the pipeline.
65
+ * Shared-model draws pass bindings per draw and do not rely on this state.
80
66
  */
81
67
  setBindings(bindings, options) {
82
- // if (log.priority >= 2) {
83
- // checkUniformValues(uniforms, this.id, this._uniformSetters);
84
- // }
85
68
  for (const [name, value] of Object.entries(bindings)) {
86
- // Accept both `xyz` and `xyzUniforms` as valid names for `xyzUniforms` uniform block
87
- // This convention allows shaders to name uniform blocks as `uniform appUniforms {} app;`
88
- // and reference them as `app` from both GLSL and JS.
89
- // TODO - this is rather hacky - we could also remap the name directly in the shader layout.
90
69
  const binding = this.shaderLayout.bindings.find(binding_ => binding_.name === name) ||
91
70
  this.shaderLayout.bindings.find(binding_ => binding_.name === `${name}Uniforms`);
92
71
  if (!binding) {
@@ -96,7 +75,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
96
75
  if (!options?.disableWarnings) {
97
76
  log.warn(`No binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`, value)();
98
77
  }
99
- continue; // eslint-disable-line no-continue
78
+ continue;
100
79
  }
101
80
  if (!value) {
102
81
  log.warn(`Unsetting binding "${name}" in render pipeline "${this.id}"`)();
@@ -129,13 +108,14 @@ export class WEBGLRenderPipeline extends RenderPipeline {
129
108
  * This function unifies those ways into a single call using common parameters with sane defaults
130
109
  */
131
110
  draw(options) {
111
+ this._syncLinkStatus();
132
112
  const { renderPass, parameters = this.props.parameters, topology = this.props.topology, vertexArray, vertexCount,
133
113
  // indexCount,
134
114
  instanceCount, isInstanced = false, firstVertex = 0,
135
115
  // firstIndex,
136
116
  // firstInstance,
137
117
  // baseVertex,
138
- transformFeedback } = options;
118
+ transformFeedback, bindings = this.bindings, uniforms = this.uniforms } = options;
139
119
  const glDrawMode = getGLDrawMode(topology);
140
120
  const isIndexed = Boolean(vertexArray.indexBuffer);
141
121
  const glIndexType = vertexArray.indexBuffer?.glIndexType;
@@ -149,7 +129,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
149
129
  // Note: async textures set as uniforms might still be loading.
150
130
  // Now that all uniforms have been updated, check if any texture
151
131
  // in the uniforms is not yet initialized, then we don't draw
152
- if (!this._areTexturesRenderable()) {
132
+ if (!this._areTexturesRenderable(bindings)) {
153
133
  log.info(2, `RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)();
154
134
  // Note: false means that the app needs to redraw the pipeline again.
155
135
  return false;
@@ -167,8 +147,8 @@ export class WEBGLRenderPipeline extends RenderPipeline {
167
147
  transformFeedback.begin(this.props.topology);
168
148
  }
169
149
  // We have to apply bindings before every draw call since other draw calls will overwrite
170
- this._applyBindings();
171
- this._applyUniforms();
150
+ this._applyBindings(bindings, { disableWarnings: this.props.disableWarnings });
151
+ this._applyUniforms(uniforms);
172
152
  const webglRenderPass = renderPass;
173
153
  withDeviceAndGLParameters(this.device, parameters, webglRenderPass.glParameters, () => {
174
154
  if (isIndexed && isInstanced) {
@@ -193,116 +173,15 @@ export class WEBGLRenderPipeline extends RenderPipeline {
193
173
  vertexArray.unbindAfterRender(renderPass);
194
174
  return true;
195
175
  }
196
- // PRIVATE METHODS
197
- // setAttributes(attributes: Record<string, Buffer>): void {}
198
- // setBindings(bindings: Record<string, Binding>): void {}
199
- async _linkShaders() {
200
- const { gl } = this.device;
201
- gl.attachShader(this.handle, this.vs.handle);
202
- gl.attachShader(this.handle, this.fs.handle);
203
- log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
204
- gl.linkProgram(this.handle);
205
- log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
206
- // TODO Avoid checking program linking error in production
207
- if (log.level === 0) {
208
- // return;
209
- }
210
- if (!this.device.features.has('compilation-status-async-webgl')) {
211
- const status = this._getLinkStatus();
212
- this._reportLinkStatus(status);
213
- return;
214
- }
215
- // async case
216
- log.once(1, 'RenderPipeline linking is asynchronous')();
217
- await this._waitForLinkComplete();
218
- log.info(2, `RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();
219
- const status = this._getLinkStatus();
220
- this._reportLinkStatus(status);
221
- }
222
- /** Report link status. First, check for shader compilation failures if linking fails */
223
- async _reportLinkStatus(status) {
224
- switch (status) {
225
- case 'success':
226
- return;
227
- default:
228
- const errorType = status === 'link-error' ? 'Link error' : 'Validation error';
229
- // First check for shader compilation failures if linking fails
230
- switch (this.vs.compilationStatus) {
231
- case 'error':
232
- this.vs.debugShader();
233
- throw new Error(`${this} ${errorType} during compilation of ${this.vs}`);
234
- case 'pending':
235
- await this.vs.asyncCompilationStatus;
236
- this.vs.debugShader();
237
- break;
238
- case 'success':
239
- break;
240
- }
241
- switch (this.fs?.compilationStatus) {
242
- case 'error':
243
- this.fs.debugShader();
244
- throw new Error(`${this} ${errorType} during compilation of ${this.fs}`);
245
- case 'pending':
246
- await this.fs.asyncCompilationStatus;
247
- this.fs.debugShader();
248
- break;
249
- case 'success':
250
- break;
251
- }
252
- const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
253
- this.device.reportError(new Error(`${errorType} during ${status}: ${linkErrorLog}`), this)();
254
- this.device.debug();
255
- }
256
- }
257
- /**
258
- * Get the shader compilation status
259
- * TODO - Load log even when no error reported, to catch warnings?
260
- * https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
261
- */
262
- _getLinkStatus() {
263
- const { gl } = this.device;
264
- const linked = gl.getProgramParameter(this.handle, 35714);
265
- if (!linked) {
266
- this.linkStatus = 'error';
267
- return 'link-error';
268
- }
269
- gl.validateProgram(this.handle);
270
- const validated = gl.getProgramParameter(this.handle, 35715);
271
- if (!validated) {
272
- this.linkStatus = 'error';
273
- return 'validation-error';
274
- }
275
- this.linkStatus = 'success';
276
- return 'success';
277
- }
278
- /** Use KHR_parallel_shader_compile extension if available */
279
- async _waitForLinkComplete() {
280
- const waitMs = async (ms) => await new Promise(resolve => setTimeout(resolve, ms));
281
- const DELAY_MS = 10; // Shader compilation is typically quite fast (with some exceptions)
282
- // If status polling is not available, we can't wait for completion. Just wait a little to minimize blocking
283
- if (!this.device.features.has('compilation-status-async-webgl')) {
284
- await waitMs(DELAY_MS);
285
- return;
286
- }
287
- const { gl } = this.device;
288
- for (;;) {
289
- const complete = gl.getProgramParameter(this.handle, 37297);
290
- if (complete) {
291
- return;
292
- }
293
- await waitMs(DELAY_MS);
294
- }
295
- }
296
176
  /**
297
177
  * Checks if all texture-values uniforms are renderable (i.e. loaded)
298
178
  * Update a texture if needed (e.g. from video)
299
179
  * Note: This is currently done before every draw call
300
180
  */
301
- _areTexturesRenderable() {
181
+ _areTexturesRenderable(bindings) {
302
182
  let texturesRenderable = true;
303
183
  for (const bindingInfo of this.shaderLayout.bindings) {
304
- if (!this.bindings[bindingInfo.name] &&
305
- !this.bindings[bindingInfo.name.replace(/Uniforms$/, '')]) {
184
+ if (!bindings[bindingInfo.name] && !bindings[bindingInfo.name.replace(/Uniforms$/, '')]) {
306
185
  log.warn(`Binding ${bindingInfo.name} not found in ${this.id}`)();
307
186
  texturesRenderable = false;
308
187
  }
@@ -316,7 +195,8 @@ export class WEBGLRenderPipeline extends RenderPipeline {
316
195
  return texturesRenderable;
317
196
  }
318
197
  /** Apply any bindings (before each draw call) */
319
- _applyBindings() {
198
+ _applyBindings(bindings, _options) {
199
+ this._syncLinkStatus();
320
200
  // If we are using async linking, we need to wait until linking completes
321
201
  if (this.linkStatus !== 'success') {
322
202
  return;
@@ -327,7 +207,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
327
207
  let uniformBufferIndex = 0;
328
208
  for (const binding of this.shaderLayout.bindings) {
329
209
  // Accept both `xyz` and `xyzUniforms` as valid names for `xyzUniforms` uniform block
330
- const value = this.bindings[binding.name] || this.bindings[binding.name.replace(/Uniforms$/, '')];
210
+ const value = bindings[binding.name] || bindings[binding.name.replace(/Uniforms$/, '')];
331
211
  if (!value) {
332
212
  throw new Error(`No value for binding ${binding.name} in ${this.id}`);
333
213
  }
@@ -393,15 +273,18 @@ export class WEBGLRenderPipeline extends RenderPipeline {
393
273
  * Due to program sharing, uniforms need to be reset before every draw call
394
274
  * (though caching will avoid redundant WebGL calls)
395
275
  */
396
- _applyUniforms() {
276
+ _applyUniforms(uniforms) {
397
277
  for (const uniformLayout of this.shaderLayout.uniforms || []) {
398
278
  const { name, location, type, textureUnit } = uniformLayout;
399
- const value = this.uniforms[name] ?? textureUnit;
279
+ const value = uniforms[name] ?? textureUnit;
400
280
  if (value !== undefined) {
401
281
  setUniform(this.device.gl, location, type, value);
402
282
  }
403
283
  }
404
284
  }
285
+ _syncLinkStatus() {
286
+ this.linkStatus = this.sharedRenderPipeline.linkStatus;
287
+ }
405
288
  }
406
289
  /**
407
290
  * Merges an provided shader layout into a base shader layout
@@ -1 +1 @@
1
- {"version":3,"file":"webgl-render-pipeline.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl-render-pipeline.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-render-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { SharedRenderPipeline, type ShaderLayout, type SharedRenderPipelineProps } from '@luma.gl/core';
2
+ import type { WebGLDevice } from "../webgl-device.js";
3
+ import type { WEBGLShader } from "./webgl-shader.js";
4
+ export declare class WEBGLSharedRenderPipeline extends SharedRenderPipeline {
5
+ readonly device: WebGLDevice;
6
+ readonly handle: WebGLProgram;
7
+ readonly vs: WEBGLShader;
8
+ readonly fs: WEBGLShader;
9
+ introspectedLayout: ShaderLayout;
10
+ linkStatus: 'pending' | 'success' | 'error';
11
+ constructor(device: WebGLDevice, props: SharedRenderPipelineProps & {
12
+ handle?: WebGLProgram;
13
+ vs: WEBGLShader;
14
+ fs: WEBGLShader;
15
+ });
16
+ destroy(): void;
17
+ protected _linkShaders(): Promise<void>;
18
+ _reportLinkStatus(status: 'success' | 'link-error' | 'validation-error'): Promise<void>;
19
+ _getLinkStatus(): 'success' | 'link-error' | 'validation-error';
20
+ _initializeSamplerUniforms(): void;
21
+ _assignSamplerUniform(location: WebGLUniformLocation, activeInfo: WebGLActiveInfo, isArray: boolean, textureUnit: number): number;
22
+ _waitForLinkComplete(): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=webgl-shared-render-pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgl-shared-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgl-shared-render-pipeline.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EAEpB,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AAIvB,OAAO,KAAK,EAAC,WAAW,EAAC,2BAAwB;AACjD,OAAO,KAAK,EAAC,WAAW,EAAC,0BAAuB;AAIhD,qBAAa,yBAA0B,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,kBAAkB,EAAE,YAAY,CAAgD;IAChF,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAa;gBAGtD,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,yBAAyB,GAAG;QACjC,MAAM,CAAC,EAAE,YAAY,CAAC;QACtB,EAAE,EAAE,WAAW,CAAC;QAChB,EAAE,EAAE,WAAW,CAAC;KACjB;IAsBM,OAAO,IAAI,IAAI;cAYR,YAAY;IAqBtB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC7F,cAAc,IAAI,SAAS,GAAG,YAAY,GAAG,kBAAkB;IAoB/D,0BAA0B,IAAI,IAAI;IAoBlC,qBAAqB,CACnB,QAAQ,EAAE,oBAAoB,EAC9B,UAAU,EAAE,eAAe,EAC3B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM;IAgBH,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB5C"}
@@ -0,0 +1,152 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GL } from '@luma.gl/constants';
5
+ import { SharedRenderPipeline, log } from '@luma.gl/core';
6
+ import { getShaderLayoutFromGLSL } from "../helpers/get-shader-layout-from-glsl.js";
7
+ import { isGLSamplerType } from "../converters/webgl-shadertypes.js";
8
+ const LOG_PROGRAM_PERF_PRIORITY = 4;
9
+ export class WEBGLSharedRenderPipeline extends SharedRenderPipeline {
10
+ device;
11
+ handle;
12
+ vs;
13
+ fs;
14
+ introspectedLayout = { attributes: [], bindings: [], uniforms: [] };
15
+ linkStatus = 'pending';
16
+ constructor(device, props) {
17
+ super(device, props);
18
+ this.device = device;
19
+ this.handle = props.handle || this.device.gl.createProgram();
20
+ this.vs = props.vs;
21
+ this.fs = props.fs;
22
+ if (props.varyings && props.varyings.length > 0) {
23
+ this.device.gl.transformFeedbackVaryings(this.handle, props.varyings, props.bufferMode || 35981);
24
+ }
25
+ this._linkShaders();
26
+ log.time(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
27
+ this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
28
+ log.timeEnd(3, `RenderPipeline ${this.id} - shaderLayout introspection`)();
29
+ }
30
+ destroy() {
31
+ if (this.destroyed) {
32
+ return;
33
+ }
34
+ this.device.gl.useProgram(null);
35
+ this.device.gl.deleteProgram(this.handle);
36
+ // @ts-expect-error
37
+ this.handle.destroyed = true;
38
+ this.destroyResource();
39
+ }
40
+ async _linkShaders() {
41
+ const { gl } = this.device;
42
+ gl.attachShader(this.handle, this.vs.handle);
43
+ gl.attachShader(this.handle, this.fs.handle);
44
+ log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
45
+ gl.linkProgram(this.handle);
46
+ log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
47
+ if (!this.device.features.has('compilation-status-async-webgl')) {
48
+ const status = this._getLinkStatus();
49
+ this._reportLinkStatus(status);
50
+ return;
51
+ }
52
+ log.once(1, 'RenderPipeline linking is asynchronous')();
53
+ await this._waitForLinkComplete();
54
+ log.info(2, `RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();
55
+ const status = this._getLinkStatus();
56
+ this._reportLinkStatus(status);
57
+ }
58
+ async _reportLinkStatus(status) {
59
+ switch (status) {
60
+ case 'success':
61
+ return;
62
+ default:
63
+ const errorType = status === 'link-error' ? 'Link error' : 'Validation error';
64
+ switch (this.vs.compilationStatus) {
65
+ case 'error':
66
+ this.vs.debugShader();
67
+ throw new Error(`${this} ${errorType} during compilation of ${this.vs}`);
68
+ case 'pending':
69
+ await this.vs.asyncCompilationStatus;
70
+ this.vs.debugShader();
71
+ break;
72
+ case 'success':
73
+ break;
74
+ }
75
+ switch (this.fs?.compilationStatus) {
76
+ case 'error':
77
+ this.fs.debugShader();
78
+ throw new Error(`${this} ${errorType} during compilation of ${this.fs}`);
79
+ case 'pending':
80
+ await this.fs.asyncCompilationStatus;
81
+ this.fs.debugShader();
82
+ break;
83
+ case 'success':
84
+ break;
85
+ }
86
+ const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
87
+ this.device.reportError(new Error(`${errorType} during ${status}: ${linkErrorLog}`), this)();
88
+ this.device.debug();
89
+ }
90
+ }
91
+ _getLinkStatus() {
92
+ const { gl } = this.device;
93
+ const linked = gl.getProgramParameter(this.handle, 35714);
94
+ if (!linked) {
95
+ this.linkStatus = 'error';
96
+ return 'link-error';
97
+ }
98
+ this._initializeSamplerUniforms();
99
+ gl.validateProgram(this.handle);
100
+ const validated = gl.getProgramParameter(this.handle, 35715);
101
+ if (!validated) {
102
+ this.linkStatus = 'error';
103
+ return 'validation-error';
104
+ }
105
+ this.linkStatus = 'success';
106
+ return 'success';
107
+ }
108
+ _initializeSamplerUniforms() {
109
+ const { gl } = this.device;
110
+ gl.useProgram(this.handle);
111
+ let textureUnit = 0;
112
+ const uniformCount = gl.getProgramParameter(this.handle, 35718);
113
+ for (let uniformIndex = 0; uniformIndex < uniformCount; uniformIndex++) {
114
+ const activeInfo = gl.getActiveUniform(this.handle, uniformIndex);
115
+ if (activeInfo && isGLSamplerType(activeInfo.type)) {
116
+ const isArray = activeInfo.name.endsWith('[0]');
117
+ const uniformName = isArray ? activeInfo.name.slice(0, -3) : activeInfo.name;
118
+ const location = gl.getUniformLocation(this.handle, uniformName);
119
+ if (location !== null) {
120
+ textureUnit = this._assignSamplerUniform(location, activeInfo, isArray, textureUnit);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ _assignSamplerUniform(location, activeInfo, isArray, textureUnit) {
126
+ const { gl } = this.device;
127
+ if (isArray && activeInfo.size > 1) {
128
+ const textureUnits = Int32Array.from({ length: activeInfo.size }, (_, arrayIndex) => textureUnit + arrayIndex);
129
+ gl.uniform1iv(location, textureUnits);
130
+ return textureUnit + activeInfo.size;
131
+ }
132
+ gl.uniform1i(location, textureUnit);
133
+ return textureUnit + 1;
134
+ }
135
+ async _waitForLinkComplete() {
136
+ const waitMs = async (ms) => await new Promise(resolve => setTimeout(resolve, ms));
137
+ const DELAY_MS = 10;
138
+ if (!this.device.features.has('compilation-status-async-webgl')) {
139
+ await waitMs(DELAY_MS);
140
+ return;
141
+ }
142
+ const { gl } = this.device;
143
+ for (;;) {
144
+ const complete = gl.getProgramParameter(this.handle, 37297);
145
+ if (complete) {
146
+ return;
147
+ }
148
+ await waitMs(DELAY_MS);
149
+ }
150
+ }
151
+ }
152
+ //# sourceMappingURL=webgl-shared-render-pipeline.js.map