webgpuShaderProcessingContext.d.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import type { ShaderLanguage } from "../../Materials/shaderLanguage";
  2. import type { ShaderProcessingContext } from "../Processors/shaderProcessingOptions";
  3. /** @internal */
  4. export interface WebGPUBindingInfo {
  5. groupIndex: number;
  6. bindingIndex: number;
  7. }
  8. /** @internal */
  9. export interface WebGPUTextureDescription {
  10. autoBindSampler?: boolean;
  11. isTextureArray: boolean;
  12. isStorageTexture: boolean;
  13. textures: Array<WebGPUBindingInfo>;
  14. sampleType?: GPUTextureSampleType;
  15. }
  16. /** @internal */
  17. export interface WebGPUSamplerDescription {
  18. binding: WebGPUBindingInfo;
  19. type: GPUSamplerBindingType;
  20. }
  21. /** @internal */
  22. export interface WebGPUBufferDescription {
  23. binding: WebGPUBindingInfo;
  24. }
  25. /** @internal */
  26. export interface WebGPUBindGroupLayoutEntryInfo {
  27. name: string;
  28. index: number;
  29. nameInArrayOfTexture?: string;
  30. }
  31. /**
  32. * @internal
  33. */
  34. export declare class WebGPUShaderProcessingContext implements ShaderProcessingContext {
  35. /** @internal */
  36. static _SimplifiedKnownBindings: boolean;
  37. protected static _SimplifiedKnownUBOs: {
  38. [key: string]: WebGPUBufferDescription;
  39. };
  40. protected static _KnownUBOs: {
  41. [key: string]: WebGPUBufferDescription;
  42. };
  43. static get KnownUBOs(): {
  44. [key: string]: WebGPUBufferDescription;
  45. };
  46. shaderLanguage: ShaderLanguage;
  47. uboNextBindingIndex: number;
  48. freeGroupIndex: number;
  49. freeBindingIndex: number;
  50. availableVaryings: {
  51. [key: string]: number;
  52. };
  53. availableAttributes: {
  54. [key: string]: number;
  55. };
  56. availableBuffers: {
  57. [key: string]: WebGPUBufferDescription;
  58. };
  59. availableTextures: {
  60. [key: string]: WebGPUTextureDescription;
  61. };
  62. availableSamplers: {
  63. [key: string]: WebGPUSamplerDescription;
  64. };
  65. leftOverUniforms: {
  66. name: string;
  67. type: string;
  68. length: number;
  69. }[];
  70. orderedAttributes: string[];
  71. bindGroupLayoutEntries: GPUBindGroupLayoutEntry[][];
  72. bindGroupLayoutEntryInfo: WebGPUBindGroupLayoutEntryInfo[][];
  73. bindGroupEntries: GPUBindGroupEntry[][];
  74. bufferNames: string[];
  75. textureNames: string[];
  76. samplerNames: string[];
  77. attributeNamesFromEffect: string[];
  78. attributeLocationsFromEffect: number[];
  79. private _attributeNextLocation;
  80. private _varyingNextLocation;
  81. constructor(shaderLanguage: ShaderLanguage);
  82. private _findStartingGroupBinding;
  83. getAttributeNextLocation(dataType: string, arrayLength?: number): number;
  84. getVaryingNextLocation(dataType: string, arrayLength?: number): number;
  85. getNextFreeUBOBinding(): {
  86. groupIndex: number;
  87. bindingIndex: number;
  88. };
  89. private _getNextFreeBinding;
  90. }