From 3d372bb11c52e25f2bdc8dda417ddc347ca41465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B9=85=E5=8F=94?= Date: Wed, 6 Aug 2025 17:30:09 +0800 Subject: [PATCH] Refactor: add IPlatformShaderProgram type (#2782) * refactor: add IPlatformShaderProgram type --- .../src/renderingHardwareInterface/IPlatformPrimitive.ts | 4 +++- .../renderingHardwareInterface/IPlatformShaderProgram.ts | 4 ++++ packages/design/src/renderingHardwareInterface/index.ts | 1 + packages/rhi-webgl/src/GLPrimitive.ts | 8 ++++---- packages/rhi-webgl/src/WebGLGraphicDevice.ts | 4 ++-- 5 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 packages/design/src/renderingHardwareInterface/IPlatformShaderProgram.ts diff --git a/packages/design/src/renderingHardwareInterface/IPlatformPrimitive.ts b/packages/design/src/renderingHardwareInterface/IPlatformPrimitive.ts index ffda94e7a..9c4de8732 100644 --- a/packages/design/src/renderingHardwareInterface/IPlatformPrimitive.ts +++ b/packages/design/src/renderingHardwareInterface/IPlatformPrimitive.ts @@ -1,4 +1,6 @@ +import { IPlatformShaderProgram } from "./IPlatformShaderProgram"; + export interface IPlatformPrimitive { - draw(tech: any, subPrimitive: any): void; + draw(shaderProgram: IPlatformShaderProgram, subPrimitive: any): void; destroy(): void; } diff --git a/packages/design/src/renderingHardwareInterface/IPlatformShaderProgram.ts b/packages/design/src/renderingHardwareInterface/IPlatformShaderProgram.ts new file mode 100644 index 000000000..72d4c71b0 --- /dev/null +++ b/packages/design/src/renderingHardwareInterface/IPlatformShaderProgram.ts @@ -0,0 +1,4 @@ +export interface IPlatformShaderProgram { + readonly id: number; + readonly attributeLocation: Record; +} diff --git a/packages/design/src/renderingHardwareInterface/index.ts b/packages/design/src/renderingHardwareInterface/index.ts index 0c0547780..2d440a661 100644 --- a/packages/design/src/renderingHardwareInterface/index.ts +++ b/packages/design/src/renderingHardwareInterface/index.ts @@ -1,2 +1,3 @@ export type { IHardwareRenderer } from "./IHardwareRenderer"; export type { IPlatformPrimitive } from "./IPlatformPrimitive"; +export type { IPlatformShaderProgram } from "./IPlatformShaderProgram"; diff --git a/packages/rhi-webgl/src/GLPrimitive.ts b/packages/rhi-webgl/src/GLPrimitive.ts index 9b4222ca2..fa7d89f1e 100644 --- a/packages/rhi-webgl/src/GLPrimitive.ts +++ b/packages/rhi-webgl/src/GLPrimitive.ts @@ -1,6 +1,6 @@ import { GLCapabilityType, Logger, Primitive } from "@galacean/engine-core"; import { SubPrimitive } from "@galacean/engine-core/types/graphic/SubPrimitive"; -import { IPlatformPrimitive } from "@galacean/engine-design"; +import { IPlatformPrimitive, IPlatformShaderProgram } from "@galacean/engine-design"; import { WebGLGraphicDevice } from "./WebGLGraphicDevice"; import { WebGLExtension } from "./type"; @@ -32,7 +32,7 @@ export class GLPrimitive implements IPlatformPrimitive { /** * Draw the primitive. */ - draw(shaderProgram: any, subMesh: SubPrimitive): void { + draw(shaderProgram: IPlatformShaderProgram, subMesh: SubPrimitive): void { const gl = this._gl; const primitive = this._primitive; const useVao = this._isSupportVAO && primitive.enableVAO; @@ -100,7 +100,7 @@ export class GLPrimitive implements IPlatformPrimitive { /** * Bind buffer and attribute. */ - private _bindBufferAndAttrib(shaderProgram: any): void { + private _bindBufferAndAttrib(shaderProgram: IPlatformShaderProgram): void { const gl = this._gl; const primitive = this._primitive; const vertexBufferBindings = primitive.vertexBufferBindings; @@ -148,7 +148,7 @@ export class GLPrimitive implements IPlatformPrimitive { } } - private _registerVAO(shaderProgram: any): void { + private _registerVAO(shaderProgram: IPlatformShaderProgram): void { const gl = this._gl; const vao = gl.createVertexArray(); diff --git a/packages/rhi-webgl/src/WebGLGraphicDevice.ts b/packages/rhi-webgl/src/WebGLGraphicDevice.ts index 98e39e7e5..ed31d57d0 100644 --- a/packages/rhi-webgl/src/WebGLGraphicDevice.ts +++ b/packages/rhi-webgl/src/WebGLGraphicDevice.ts @@ -22,7 +22,7 @@ import { TextureCubeFace, TextureFormat } from "@galacean/engine-core"; -import { IHardwareRenderer, IPlatformPrimitive } from "@galacean/engine-design"; +import { IHardwareRenderer, IPlatformPrimitive, IPlatformShaderProgram } from "@galacean/engine-design"; import { Color, Vector4 } from "@galacean/engine-math"; import { GLBuffer } from "./GLBuffer"; import { GLCapability } from "./GLCapability"; @@ -354,7 +354,7 @@ export class WebGLGraphicDevice implements IHardwareRenderer { gl.clear(clearFlag); } - drawPrimitive(primitive: GLPrimitive, subPrimitive: SubMesh, shaderProgram: any) { + drawPrimitive(primitive: GLPrimitive, subPrimitive: SubMesh, shaderProgram: IPlatformShaderProgram) { // todo: VAO not support morph animation if (primitive) { primitive.draw(shaderProgram, subPrimitive);