diff --git a/packages/math/src/Color.ts b/packages/math/src/Color.ts index a4017b8dd9..e4fa91e5cb 100644 --- a/packages/math/src/Color.ts +++ b/packages/math/src/Color.ts @@ -196,13 +196,6 @@ export class Color implements IClone, ICopy { return out; } - copyFrom(color: Color) { - this.r = color.r; - this.g = color.g; - this.b = color.b; - this.a = color.a; - } - toObject() { return { r: this.r, diff --git a/packages/oasis-engine/src/index.ts b/packages/oasis-engine/src/index.ts index f2d861cbd9..00dcf7b582 100644 --- a/packages/oasis-engine/src/index.ts +++ b/packages/oasis-engine/src/index.ts @@ -1,15 +1,16 @@ import * as CoreObjects from "@oasis-engine/core"; import { Loader } from "@oasis-engine/core"; -for (let key in CoreObjects) { - Loader.register(key, CoreObjects[key]); -} - //@ts-ignore export const version = `__buildVersion`; +console.log(`oasis engine version: ${version}`); + export * from "@oasis-engine/core"; export * from "@oasis-engine/loader"; export * from "@oasis-engine/math"; export * from "@oasis-engine/rhi-webgl"; -console.log(`oasis engine version: ${version}`); +for (let key in CoreObjects) { + Loader.register(key, CoreObjects[key]); +} + diff --git a/packages/resource-process/src/index.ts b/packages/resource-process/src/index.ts index 813d48233c..092cf0f1a0 100644 --- a/packages/resource-process/src/index.ts +++ b/packages/resource-process/src/index.ts @@ -4,12 +4,9 @@ import { BufferWriter } from "./utils/BufferWriter"; import { decoderMap, encoderMap } from "./utils/Decorator"; import { FileHeader } from "./utils/FileHeader"; -export { MaterialDecoder } from "./resources/material/MaterialDecoder"; -export { MaterialEncoder } from "./resources/material/MaterialEncoder"; export { MeshDecoder } from "./resources/mesh/MeshDecoder"; export { MeshEncoder } from "./resources/mesh/MeshEncoder"; export { encoder, decoder } from "./utils/Decorator"; -export { UniformType } from "./resources/material/type"; export { Texture2DDecoder } from "./resources/texture2D/TextureDecoder"; export { Texture2DEncoder } from "./resources/texture2D/TextureEncoder"; export { ReflectionParser } from "./resources/prefab/ReflectionParser"; diff --git a/packages/resource-process/src/resources/material/MaterialDecoder.ts b/packages/resource-process/src/resources/material/MaterialDecoder.ts deleted file mode 100644 index 8fcb683c4a..0000000000 --- a/packages/resource-process/src/resources/material/MaterialDecoder.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { AssetType, Engine, Material, Shader } from "@oasis-engine/core"; -import { Color, Vector2, Vector3, Vector4 } from "@oasis-engine/math"; -import { decoder } from "../../utils/Decorator"; -import { UniformType } from "./type"; -import type { BufferReader } from "../../utils/BufferReader"; - -@decoder("Material") -export class MaterialDecoder { - public static decode(engine: Engine, bufferReader: BufferReader): Promise { - return new Promise((resolve) => { - // init material - const objectId = bufferReader.nextStr(); - const renderQueueType = bufferReader.nextUint16(); - const shader = bufferReader.nextStr(); - const material = new Material(engine, Shader.find(shader)); - material.renderQueueType = renderQueueType; - const { shaderData } = material; - - // read macro - const macroLen = bufferReader.nextUint16(); - for (let i = 0; i < macroLen; i++) { - const enabledMacro = bufferReader.nextStr(); - shaderData.enableMacro(enabledMacro); - } - - // uniform data length - const dataLen = bufferReader.nextUint16(); - for (let i = 0; i < dataLen; i++) { - const type = bufferReader.nextUint8(); - const key = bufferReader.nextStr(); - switch (type) { - case UniformType.Number: - { - const value = bufferReader.nextFloat32(); - shaderData.setFloat(key, value); - } - break; - case UniformType.Color: - const r = bufferReader.nextFloat32(); - const g = bufferReader.nextFloat32(); - const b = bufferReader.nextFloat32(); - const a = bufferReader.nextFloat32(); - shaderData.setColor(key, new Color(r, g, b, a)); - break; - case UniformType.Vector2: - { - const x = bufferReader.nextFloat32(); - const y = bufferReader.nextFloat32(); - shaderData.setVector2(key, new Vector2(x, y)); - } - break; - case UniformType.Vector3: - { - const x = bufferReader.nextFloat32(); - const y = bufferReader.nextFloat32(); - const z = bufferReader.nextFloat32(); - shaderData.setVector3(key, new Vector3(x, y, z)); - } - break; - case UniformType.Vector4: - { - const x = bufferReader.nextFloat32(); - const y = bufferReader.nextFloat32(); - const z = bufferReader.nextFloat32(); - const w = bufferReader.nextFloat32(); - shaderData.setVector4(key, new Vector4(x, y, z, w)); - } - break; - case UniformType.Texture: - { - const path = bufferReader.nextStr(); - const objectId = bufferReader.nextStr(); - engine.resourceManager - .load({ - url: path, - type: AssetType.Oasis - }) - .then(() => { - // @ts-ignore - shaderData.setTexture(key, engine.resourceManager._objectPool[objectId]); - }); - } - break; - } - } - const renderStateString = bufferReader.nextStr(); - if (renderStateString.length > 0) { - const renderState = JSON.parse(renderStateString); - const { blendState, depthState, rasterState, stencilState } = renderState; - const materialRenderState = material.renderState; - if (blendState) { - Object.keys(blendState).forEach((key) => (materialRenderState.blendState[key] = blendState[key])); - } - if (depthState) { - Object.keys(depthState).forEach((key) => (materialRenderState.depthState[key] = depthState[key])); - } - if (rasterState) { - Object.keys(rasterState).forEach((key) => (materialRenderState.rasterState[key] = rasterState[key])); - } - if (stencilState) { - Object.keys(stencilState).forEach((key) => (materialRenderState.stencilState[key] = stencilState[key])); - } - } - // @ts-ignore - engine.resourceManager._objectPool[objectId] = material; - resolve(material); - }); - } -} diff --git a/packages/resource-process/src/resources/material/MaterialEncoder.ts b/packages/resource-process/src/resources/material/MaterialEncoder.ts deleted file mode 100644 index 927435e9c8..0000000000 --- a/packages/resource-process/src/resources/material/MaterialEncoder.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { BufferWriter } from "../../utils/BufferWriter"; -import { encoder } from "../../utils/Decorator"; -import { UniformType } from "./type"; -import type { IMaterialAsset } from "./type"; - -@encoder("Material") -export class MaterialEncoder { - static encode(bufferWriter: BufferWriter, data: IMaterialAsset) { - bufferWriter.writeStr(data.objectId); - bufferWriter.writeUint16(data.renderQueueType); - bufferWriter.writeStr(data.shader); - const { shaderData, enabledMacro } = data; - - bufferWriter.writeUint16(enabledMacro.length); - enabledMacro.forEach((macro) => bufferWriter.writeStr(macro)); - - const shaderDataArray = Object.keys(shaderData); - bufferWriter.writeUint16(shaderDataArray.length); - - shaderDataArray.forEach((key) => { - const uniform = data.shaderData[key]; - let v = uniform.value; - bufferWriter.writeUint8(uniform.type); - bufferWriter.writeStr(key); - switch (uniform.type) { - case UniformType.Number: - bufferWriter.writeFloat32(uniform.value); - break; - case UniformType.Color: - bufferWriter.writeFloat32(v.r); - bufferWriter.writeFloat32(v.g); - bufferWriter.writeFloat32(v.b); - bufferWriter.writeFloat32(v.a); - break; - case UniformType.Vector2: - bufferWriter.writeFloat32(v.x); - bufferWriter.writeFloat32(v.y); - break; - case UniformType.Vector3: - bufferWriter.writeFloat32(v.x); - bufferWriter.writeFloat32(v.y); - bufferWriter.writeFloat32(v.z); - break; - case UniformType.Vector4: - bufferWriter.writeFloat32(v.x); - bufferWriter.writeFloat32(v.y); - bufferWriter.writeFloat32(v.z); - bufferWriter.writeFloat32(v.w); - break; - case UniformType.Texture: - bufferWriter.writeStr(v.path); - bufferWriter.writeStr(v.objectId); - break; - } - }); - - const str = JSON.stringify(data.renderState); - bufferWriter.writeStr(str); - } -} diff --git a/packages/resource-process/src/resources/material/type.ts b/packages/resource-process/src/resources/material/type.ts deleted file mode 100644 index 377abc7439..0000000000 --- a/packages/resource-process/src/resources/material/type.ts +++ /dev/null @@ -1,25 +0,0 @@ -export enum UniformType { - Number, - Vector2, - Vector3, - Vector4, - Color, - Texture -} - -export interface UniformValue { - type: UniformType; - value: any; // 详细查看 UniformType 到 Value 的映射 -} - -export interface IMaterialAsset { - // shader name - objectId: string; - // short - renderQueueType: number; - // string array - enabledMacro: string[]; - shader: string; - shaderData: { [uniformName: string]: UniformValue }; - renderState: any; -} \ No newline at end of file