Insider Insider
3dnchu 尚无浏览 2 分钟阅读

DreamShader | 用代码管理与构建 Unreal Engine 的材质!可从专用 DSL 自动生成材质资源的开源插件!

介绍由 Type Dream Moon 制作的开源插件「DreamShader」:通过独自的 DSL(Dream Shader Language)来编写材质,可自动生成和更新 Unreal Engine 的材质、材质函数、Material Layer 等!

DreamShader

这是一个替代 Unreal Engine 材质“意大利面”式图表的、以文本优先的材质语言。使用 .dsm.dsf.dsh,可以描述材质图、函数资源、材质层、共享辅助工具以及包依赖关系。

  • 使用 DreamShaderLang 的、以文本优先的 Unreal Engine 材质制作
  • DreamShader 会将 .dsm、.dsf 以及 .dsh 格式的源文件转换为 Unreal 的 UMaterial、UMaterialFunction、Material Layer 以及 Material Layer Blend 资源
  • 简单・快速・完整语法・支持 HLSL/GLSL 语言
项目用途.dsm材质实现文件。通常包含 Shader、ShaderFunction、ShaderLayer、ShaderLayerBlend 或 VirtualFunction 代码块。.dsfDream Shader Function 文件。可从 .dsm 文件导入,生成可复用的 ShaderFunction、ShaderLayer 以及 ShaderLayerBlend 资源。.dsh共享头文件。通常包含 import、Function、GraphFunction、Namespace 以及 VirtualFunction 的声明。Shader生成 Unreal 的 UMaterial。ShaderFunction生成 Unreal 的 UMaterialFunction。ShaderLayer生成原生的 UMaterialFunctionMaterialLayer。ShaderLayerBlend生成原生的 UMaterialFunctionMaterialLayerBlend。VirtualFunction描述现有的 Unreal UMaterialFunction,并使其可从 Graph 中调用。Graph在生成的材质和函数中使用的、节点导向 DSL。Function可复用的 HLSL 风格辅助工具。GraphFunction可复用的自定义节点辅助工具,能够将 UE.* 的材质节点读取到生成的自定义输入中。Namespace分组辅助函数。例如:Texture::Sample2DRGB(…) 等。Path(...)声明纹理、对象设置或虚拟函数用的 Unreal 资源路径。

这算是相当小众,但思路很有趣。
如果是在希望通过 Git 等工具管理差异、或需要用代码库维护大量材质的开发环境中,它应该会很有用。另一方面,在以美术为主的制作流程中,传统的 Material Editor 往往更容易上手,因此目前给人的印象更像是面向技术美术和着色器程序员的工具。详细内容请查看官方网站或 Github 页面!

链接

DreamShaderLang | DreamShaderLang

TypeDreamMoon/DreamShader: Unreal Engine Material DSL. Use Dream Shader Lang Write Unreal Material. Simple · Fast · Full syntax · HLSL GLSL Lang Support

Screenshot of lang.64hz.cn

Screenshot of github.com