webgpuCacheRenderPipeline.d.ts 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. import type { Effect } from "../../Materials/effect";
  2. import type { InternalTexture } from "../../Materials/Textures/internalTexture";
  3. import { VertexBuffer } from "../../Buffers/buffer";
  4. import type { DataBuffer } from "../../Buffers/dataBuffer";
  5. import type { Nullable } from "../../types";
  6. /** @internal */
  7. export declare abstract class WebGPUCacheRenderPipeline {
  8. static NumCacheHitWithoutHash: number;
  9. static NumCacheHitWithHash: number;
  10. static NumCacheMiss: number;
  11. static NumPipelineCreationLastFrame: number;
  12. disabled: boolean;
  13. private static _NumPipelineCreationCurrentFrame;
  14. protected _states: number[];
  15. protected _statesLength: number;
  16. protected _stateDirtyLowestIndex: number;
  17. lastStateDirtyLowestIndex: number;
  18. private _device;
  19. private _isDirty;
  20. private _emptyVertexBuffer;
  21. private _parameter;
  22. private _kMaxVertexBufferStride;
  23. private _shaderId;
  24. private _alphaToCoverageEnabled;
  25. private _frontFace;
  26. private _cullEnabled;
  27. private _cullFace;
  28. private _clampDepth;
  29. private _rasterizationState;
  30. private _depthBias;
  31. private _depthBiasClamp;
  32. private _depthBiasSlopeScale;
  33. private _colorFormat;
  34. private _webgpuColorFormat;
  35. private _mrtAttachments1;
  36. private _mrtAttachments2;
  37. private _mrtFormats;
  38. private _mrtEnabledMask;
  39. private _alphaBlendEnabled;
  40. private _alphaBlendFuncParams;
  41. private _alphaBlendEqParams;
  42. private _writeMask;
  43. private _colorStates;
  44. private _depthStencilFormat;
  45. private _webgpuDepthStencilFormat;
  46. private _depthTestEnabled;
  47. private _depthWriteEnabled;
  48. private _depthCompare;
  49. private _stencilEnabled;
  50. private _stencilFrontCompare;
  51. private _stencilFrontDepthFailOp;
  52. private _stencilFrontPassOp;
  53. private _stencilFrontFailOp;
  54. private _stencilReadMask;
  55. private _stencilWriteMask;
  56. private _depthStencilState;
  57. private _vertexBuffers;
  58. private _overrideVertexBuffers;
  59. private _indexBuffer;
  60. private _textureState;
  61. private _useTextureStage;
  62. private static _IsSignedType;
  63. constructor(device: GPUDevice, emptyVertexBuffer: VertexBuffer);
  64. reset(): void;
  65. protected abstract _getRenderPipeline(param: {
  66. token: any;
  67. pipeline: Nullable<GPURenderPipeline>;
  68. }): void;
  69. protected abstract _setRenderPipeline(param: {
  70. token: any;
  71. pipeline: Nullable<GPURenderPipeline>;
  72. }): void;
  73. readonly vertexBuffers: VertexBuffer[];
  74. get colorFormats(): (GPUTextureFormat | null)[];
  75. readonly mrtAttachments: number[];
  76. readonly mrtTextureArray: InternalTexture[];
  77. readonly mrtTextureCount: number;
  78. getRenderPipeline(fillMode: number, effect: Effect, sampleCount: number, textureState?: number): GPURenderPipeline;
  79. endFrame(): void;
  80. setAlphaToCoverage(enabled: boolean): void;
  81. setFrontFace(frontFace: number): void;
  82. setCullEnabled(enabled: boolean): void;
  83. setCullFace(cullFace: number): void;
  84. setClampDepth(clampDepth: boolean): void;
  85. resetDepthCullingState(): void;
  86. setDepthCullingState(cullEnabled: boolean, frontFace: number, cullFace: number, zOffset: number, zOffsetUnits: number, depthTestEnabled: boolean, depthWriteEnabled: boolean, depthCompare: Nullable<number>): void;
  87. setDepthBias(depthBias: number): void;
  88. setDepthBiasSlopeScale(depthBiasSlopeScale: number): void;
  89. setColorFormat(format: GPUTextureFormat | null): void;
  90. setMRTAttachments(attachments: number[]): void;
  91. setMRT(textureArray: InternalTexture[], textureCount?: number): void;
  92. setAlphaBlendEnabled(enabled: boolean): void;
  93. setAlphaBlendFactors(factors: Array<Nullable<number>>, operations: Array<Nullable<number>>): void;
  94. setWriteMask(mask: number): void;
  95. setDepthStencilFormat(format: GPUTextureFormat | undefined): void;
  96. setDepthTestEnabled(enabled: boolean): void;
  97. setDepthWriteEnabled(enabled: boolean): void;
  98. setDepthCompare(func: Nullable<number>): void;
  99. setStencilEnabled(enabled: boolean): void;
  100. setStencilCompare(func: Nullable<number>): void;
  101. setStencilDepthFailOp(op: Nullable<number>): void;
  102. setStencilPassOp(op: Nullable<number>): void;
  103. setStencilFailOp(op: Nullable<number>): void;
  104. setStencilReadMask(mask: number): void;
  105. setStencilWriteMask(mask: number): void;
  106. resetStencilState(): void;
  107. setStencilState(stencilEnabled: boolean, compare: Nullable<number>, depthFailOp: Nullable<number>, passOp: Nullable<number>, failOp: Nullable<number>, readMask: number, writeMask: number): void;
  108. setBuffers(vertexBuffers: Nullable<{
  109. [key: string]: Nullable<VertexBuffer>;
  110. }>, indexBuffer: Nullable<DataBuffer>, overrideVertexBuffers: Nullable<{
  111. [key: string]: Nullable<VertexBuffer>;
  112. }>): void;
  113. private static _GetTopology;
  114. private static _GetAphaBlendOperation;
  115. private static _GetAphaBlendFactor;
  116. private static _GetCompareFunction;
  117. private static _GetStencilOpFunction;
  118. private static _GetVertexInputDescriptorFormat;
  119. private _getAphaBlendState;
  120. private _getColorBlendState;
  121. private _setShaderStage;
  122. private _setRasterizationState;
  123. private _setColorStates;
  124. private _setDepthStencilState;
  125. private _setVertexState;
  126. private _setTextureState;
  127. private _createPipelineLayout;
  128. private _createPipelineLayoutWithTextureStage;
  129. private _getVertexInputDescriptor;
  130. private _processNonFloatVertexBuffers;
  131. private _createRenderPipeline;
  132. }