Skip to content

资产定义

着色器资产(Shader Asset)是在 SandMod 游戏编辑器中的 项目窗口(Project)内创建的,或者您可以使用其他程序工具编辑并导出 Shader 格式的 着色器(Shader)文件通过 项目窗口(Project)导入游戏项目。着色器资产用于储存着色器程序,方便随时读取和调用对应着色器程序。创建或导入后,将在 项目窗口(Project)对应项目文件夹中获得着色器资产,该资产样式如图:

生成资产

创建资产

从 项目窗口(Project) 中创建菜单或从 项目窗口(Project) 中创建 着色器资产(Shader Asset)。创建的过程中您可以根据着色器的使用场合选择创建受光照影响的着色器或者不受光照影响的着色器。

名称描述
受光照着色器(LitShader)着色器资产中储存着能受光照影响的着色器程序模板,根据现实中光线传播原理,模拟出近似于真实光照的效果。优势在于:
· 真实性:基于光照系统的渲染让最终效果更加逼真。
· 一致性:美术制作流程规范化、制作标准统一化。
不受光照着色器(UnlitShader)着色器资产中储存着着色器程序模板,但是该模板只会根据纹理进行渲染,引擎的任何光源都无法影响其最终效果。适用于:
· 不受光源影响的物体。
· 画面要求不高或性能要求高的场景。

方法一:

在 项目窗口 中,点击 添加(+) 然后选择 着色器(Shader)> 受光照着色器(LitShader)/ 不受光照着色器(UnlitShader)

【Shader_Asset002.png】

方法二:

在 项目窗口 中右键点击空白处,然后依次选择 创建(Create)> 着色器(Shader)> 受光照着色器(LitShader)/ 不受光照着色器(UnlitShader)

【Shader_Asset003.png】

导入资产

当前版本的 SandMod 编辑器支持的 着色器(Shader)文件需要符合以下要求:

  • 着色器程序采用 GLSL(OpenGL Shading Language)的着色器语言编辑。

  • 文件拓展名为 .shader

将 SandMod 支持的 着色器(Shader)文件从资源管理器拖入 项目窗口(Project)中导入游戏项目,或在项目窗口的空白位置点击鼠标右键启动上下文菜单并点击 从文件夹导入(Import From Folder) 选项选中着色器文件导入游戏项目。具体导入方法请参阅 导入资产 章节。

当 着色器(Shader)文件完成导入后,将在项目窗口中生成对应的着色器资产。

打开资产

您可以在 项目窗口(Project)中双击 着色器资产(Shader Asset)打开该资产。

【Shader_Asset004.png】

随后您可以选择合适的程序编辑工具(如 VS Code)打开着色器,并编辑着色器资产所储存的着色器程序。着色器程序的具体编辑方法请参阅 着色器编辑 章节。

引用资产

您可以在 材质资产(Material Asset)的 着色器(Shader) 属性中指定该 着色器资产(Shader Asset),这样您就可以在选中该材质资产时,在 检视窗口(Inspector)上更便捷地编辑着色器公开的参数,并预览着色器影响材质的最终效果。此时再将材质资产指定到 网格渲染器(Mesh Renderer)、精灵渲染(SpriteRenderer)、粒子系统(Particle System)等 组件(Component)上,则可实现运用着色器资产影响游戏项目的整体视觉效果。具体操作方法请参阅 材质资产 章节。

【Shader_Asset005.png】

如果您需要通过 Type Script 脚本读取或访问着色器资产的程序内容,您也需要通过引用该着色器资产的材质进行读取或访问。具体读取和访问的方法,请参阅 脚本中编辑材质 章节。

资产右键菜单

在 项目窗口(Project)中,鼠标指向着色器资产,并点击鼠标右键,即会打开着色器资产对应的上下文菜单,在上下文菜单中您可以对此着色器资产进行以下内容的编辑。

【Shader_Asset006.png】

名称描述
在资源管理器中显示(Show In Explorer)在电脑的资源管理器上打开选中的着色器资产。
复制(Copy)复制所选着色器资产至剪贴板。
剪切(Cut)剪切所选着色器资产至剪贴板,与复制不同的是,剪切后的着色器资产将不再出现于原路径下。
复制并粘贴(Duplicate)在所选的着色器资产路径下克隆一份所选的着色器资产。
重命名(Rename)使对象名称可编辑,以便进行更改。按 Enter 键以保存更改,或按 Esc 键以取消重命名。
删除(Delete)删除选中的着色器资产。
复制资源 ID(Copy Asset ID)复制选中的着色器资产的 ID 至剪贴板中,您可以通过 Resources.Load(Type,ID) 代码,直接通过此 ID 将立方体贴图以 Shader 类型动态引用。
复制路径(Copy Path)以 Type Script 语法的方式,创建选中的着色器对象从 Assets 目录下的路径在剪贴板中。