mirror of
https://github.com/galacean/engine.git
synced 2026-06-06 13:47:54 +08:00
Shaderlab detect shader with duplicate name (#1897)
* fix: detect shaders with duplicate name
This commit is contained in:
@@ -89,6 +89,9 @@ export class Shader {
|
||||
}
|
||||
|
||||
const shaderInfo = Shader._shaderLab.parseShader(nameOrShaderSource);
|
||||
if (shaderMap[shaderInfo.name]) {
|
||||
throw `Shader named "${shaderInfo.name}" already exists.`;
|
||||
}
|
||||
const subShaderList = shaderInfo.subShaders.map((subShaderInfo) => {
|
||||
const passList = subShaderInfo.passes.map((passInfo) => {
|
||||
if (typeof passInfo === "string") {
|
||||
|
||||
@@ -3,6 +3,7 @@ import { IShaderPassInfo, ISubShaderInfo } from "@galacean/engine-design";
|
||||
import { Color } from "@galacean/engine-math";
|
||||
import { ShaderLab } from "@galacean/engine-shader-lab";
|
||||
import { glslValidate } from "./ShaderValidate";
|
||||
import { Shader } from "@galacean/engine-core";
|
||||
|
||||
import chai, { expect } from "chai";
|
||||
import spies from "chai-spies";
|
||||
@@ -215,4 +216,11 @@ describe("ShaderLab", () => {
|
||||
const demoShader = fs.readFileSync(path.join(__dirname, "shaders/glass.shader")).toString();
|
||||
glslValidate(demoShader, shaderLab);
|
||||
});
|
||||
|
||||
it("shader with duplicate name", () => {
|
||||
const demoShader = fs.readFileSync(path.join(__dirname, "shaders/glass.shader")).toString();
|
||||
(Shader as any)._shaderLab = shaderLab;
|
||||
expect(Shader.create(demoShader) instanceof Shader).to.be.true;
|
||||
expect(Shader.create.bind(null, demoShader)).to.throw('Shader named "Gem" already exists.');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user