diff --git a/docs/en/script/edit.mdx b/docs/en/script/edit.mdx
index 60feec35e..95c8561a1 100644
--- a/docs/en/script/edit.mdx
+++ b/docs/en/script/edit.mdx
@@ -24,14 +24,14 @@ For more information about the code editor, please check [Code Editor](/en/docs/
After creating a script asset in the scene editor, double-click the script to open the code editor. Scripts in Galacean need to be written in [Typescript](https://www.typescriptlang.org/), and new scripts are created based on built-in templates by default. Additionally, the Galacean code editor is based on Monaco, with shortcuts similar to VSCode. After modifying the script, press `Ctrl/⌘ + S` to save, and the real-time preview area on the right will show the latest scene effects.
-> Tip: The Galacean code editor currently supports `.ts`, `.gs`, and `.glsl` file editing.
+> Tip: The Galacean code editor currently supports `.ts`, `.shader`, and `.glsl` file editing.
## File Preview
1. **File Search** Quickly search for files in the project
-2. **Code Filter** Whether to display only code files ( `.ts`, `.gs`, `.glsl` ) in the file tree
+2. **Code Filter** Whether to display only code files ( `.ts`, `.shader`, `.glsl` ) in the file tree
3. **Built-in Files** Used to display which files are non-editable internal files
4. **Expand/Hide** Toggle the expansion or hiding of folders
5. **Code Files** Editable code files will display corresponding file type thumbnails
diff --git a/docs/zh/script/edit.mdx b/docs/zh/script/edit.mdx
index 28cdd108a..4cb0255ef 100644
--- a/docs/zh/script/edit.mdx
+++ b/docs/zh/script/edit.mdx
@@ -24,14 +24,14 @@ Galacean Editor 提供了一个功能强大的代码编辑器,提供了代码
在场景编辑器中创建脚本资产后,双击该脚本即可打开代码编辑器。Galacean 中的脚本需使用 [Typescript](https://www.typescriptlang.org/) 语言编写,同时新脚本默认基于内置模板创建。另外,Galacean 的代码编辑器基于 Monaco,快捷键与 VSCode 类似。修改脚本后,按 `Ctrl/⌘ + S` 保存,右侧实时预览区展现最新场景效果。
-> 提示:Galacean 代码编辑器目前支持 `.ts` `.gs` 和 `.glsl` 的文件编辑
+> 提示:Galacean 代码编辑器目前支持 `.ts` `.shader` 和 `.glsl` 的文件编辑
## 文件预览
1. **文件搜索** 可快速搜索项目中的文件
-2. **代码筛选** 文件树是否仅显示代码文件 ( `.ts` `.gs` `.glsl` )
+2. **代码筛选** 文件树是否仅显示代码文件 ( `.ts` `.shader` `.glsl` )
3. **内置文件** 用来显示哪些文件是不可编辑的内部文件
4. **展开/隐藏** 可切换文件夹的展开或隐藏
5. **代码文件** 可编辑的代码文件会显示对应的文件类型的缩略图标
diff --git a/e2e/case/shaderLab-mrt.ts b/e2e/case/shaderLab-mrt.ts
index 54afaf649..a8f3a2c7c 100644
--- a/e2e/case/shaderLab-mrt.ts
+++ b/e2e/case/shaderLab-mrt.ts
@@ -9,7 +9,7 @@ import { initScreenshot, updateForE2E } from "./.mockForE2E";
const shaderLab = new ShaderLab();
-const shaderSource = `Shader "/custom.gs" {
+const shaderSource = `Shader "/custom.shader" {
SubShader "Default" {
UsePass "pbr/Default/ShadowCaster"
diff --git a/packages/loader/src/ShaderLoader.ts b/packages/loader/src/ShaderLoader.ts
index 3380ff297..d7e714af5 100644
--- a/packages/loader/src/ShaderLoader.ts
+++ b/packages/loader/src/ShaderLoader.ts
@@ -9,7 +9,7 @@ import {
} from "@galacean/engine-core";
import { ShaderChunkLoader } from "./ShaderChunkLoader";
-@resourceLoader(AssetType.Shader, ["gs", "gsl"])
+@resourceLoader(AssetType.Shader, ["shader"])
class ShaderLoader extends Loader {
private static _builtinRegex = /^\s*\/\/\s*@builtin\s+(\w+)/;
diff --git a/packages/shader/src/global.d.ts b/packages/shader/src/global.d.ts
index d0abf1234..8ce5f3375 100644
--- a/packages/shader/src/global.d.ts
+++ b/packages/shader/src/global.d.ts
@@ -3,7 +3,7 @@ declare module "*.glsl" {
export default value;
}
-declare module "*.gs" {
+declare module "*.shader" {
const value: string;
export default value;
}
diff --git a/packages/shader/src/shaders/PBR.gs b/packages/shader/src/shaders/PBR.shader
similarity index 100%
rename from packages/shader/src/shaders/PBR.gs
rename to packages/shader/src/shaders/PBR.shader
diff --git a/packages/shader/src/shaders/index.ts b/packages/shader/src/shaders/index.ts
index de23d2e39..3a0430c97 100644
--- a/packages/shader/src/shaders/index.ts
+++ b/packages/shader/src/shaders/index.ts
@@ -3,7 +3,7 @@ import Common from "./Common.glsl";
import Fog from "./Fog.glsl";
import Light from "./Light.glsl";
import Normal from "./Normal.glsl";
-import PBRSource from "./PBR.gs";
+import PBRSource from "./PBR.shader";
import Shadow from "./Shadow.glsl";
import ShadowSampleTent from "./ShadowSampleTent.glsl";
import Skin from "./Skin.glsl";
diff --git a/packages/ui/src/shader/global.d.ts b/packages/ui/src/shader/global.d.ts
index d0abf1234..8ce5f3375 100644
--- a/packages/ui/src/shader/global.d.ts
+++ b/packages/ui/src/shader/global.d.ts
@@ -3,7 +3,7 @@ declare module "*.glsl" {
export default value;
}
-declare module "*.gs" {
+declare module "*.shader" {
const value: string;
export default value;
}
diff --git a/rollup-plugin-glsl.js b/rollup-plugin-glsl.js
index cc545c623..3a48c3efc 100644
--- a/rollup-plugin-glsl.js
+++ b/rollup-plugin-glsl.js
@@ -35,7 +35,7 @@ function compressShader(code) {
export default function glsl(userOptions = {}) {
const options = Object.assign(
{
- include: ["**/*.vs", "**/*.fs", "**/*.vert", "**/*.frag", "**/*.glsl"]
+ include: ["**/*.vs", "**/*.fs", "**/*.vert", "**/*.frag", "**/*.glsl", "**/*.shader"]
},
userOptions
);
diff --git a/rollup.config.js b/rollup.config.js
index b72def7cb..dd57ae8a1 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -32,7 +32,7 @@ const extensions = [".js", ".jsx", ".ts", ".tsx"];
const mainFields = NODE_ENV === "development" ? ["debug", "module", "main"] : undefined;
const glslPlugin = glsl({
- include: [/\.(glsl|gs)$/],
+ include: [/\.(glsl|shader)$/],
compress: false
});
@@ -90,7 +90,7 @@ function config({ location, pkgJson, verboseMode }) {
glslifyPluginIdx,
1,
glsl({
- include: [/\.(glsl|gs)$/],
+ include: [/\.(glsl|shader)$/],
compress: true
})
);
@@ -157,7 +157,7 @@ function config({ location, pkgJson, verboseMode }) {
glslifyPluginIdx,
1,
glsl({
- include: [/\.(glsl|gs)$/],
+ include: [/\.(glsl|shader)$/],
compress: true
})
);
diff --git a/tests/src/shader-lab/shaders/mrt-struct.shader b/tests/src/shader-lab/shaders/mrt-struct.shader
index f29056199..85a47193c 100644
--- a/tests/src/shader-lab/shaders/mrt-struct.shader
+++ b/tests/src/shader-lab/shaders/mrt-struct.shader
@@ -1,4 +1,4 @@
-Shader "/mrt-test.gs" {
+Shader "/mrt-test.shader" {
SubShader "Default" {