DagorMat

概述

DagorMat 本质上是 3ds Max 的着色器集合。要访问它,请打开“材质编辑器”(最好使用 Slate 材质编辑器)。 导航到 General 选项卡,您应该会看到 Dagor Dagorrat 材质下列出了两种材质。

Note

如果您没有看到 DagorMat 列出,请按 ‘F10’ 并将 Renderer 字段切换到 Scanline Renderer

有两个版本可用,因为原始版本是 DagorMat1(通常简称为 DagorMat),其中着色器名称(类名称)及其参数必须手动输入。即使是现在,一些着色器还没有迁移到 DagorMat2,因此仍然在 DagorMat1 中打开,所有参数都通过脚本定义。这可能很麻烦,因为 3ds Max 的界面将明暗器参数显示区域限制为只有几行。

DagorMat2 可能是为了解决这些可用性问题而开发的,允许您使用鼠标友好的界面设置所有参数。

着色器:

其它参数:

配置 DagorMat 着色器

由于 DagorMat1 不使用任何预设参数(一切都是手动编写的),因此无需额外配置。但是,DagorMat2 要求将着色器及其参数添加到dagorShaders.cfg 文件中,以便它们出现在 3ds Max 中。

这些配置文件可以在以下位置找到:

.../dagor_cdk/windows-x86_64/plugins-3dsMax/

通用配置参数

要配置着色器,请在任何文本编辑器中打开 dagorShaders.cfg 文件。

纹理插槽名称

参数:

[_settings]
tex1_name="diffuse"
tex2_name="CUBE environment"
tex3_name="normalmap"
tex4_name="parallax (height field)"
tex5_name="glossmap (specular mask+shininess)"
tex6_name="emission tex (unsupported!)"
tex7_name="lightmap"
tex8_name="detail tex"

控制以下内容:

全局参数

这些参数适用于所有着色器。虽然它们可能并非在所有地方都有效,但您可以在任何着色器中设置它们。如果着色器没有自己的特定参数,则仅使用全局参数。

参数:

[_global_params]
lighting=enum(none lightmap vltmap)
real_two_sided=enum(yes no)
scene_emission=real optional
emission=real optional
relief=real optional
atest=text optional
reflection_multiplier=int optional

控制以下内容:

请密切注意不同参数类型在 3ds Max 界面中的显示和处理方式:

  • enum(none lightmap vltmap): 枚举显示为 “单选按钮”。

  • enum(yes no): 布尔选项显示为复选框。

  • real optional: “实数”允许您指定任何数值。

    Note

    3ds Max 不会导出零值,除非您手动输入零值。如果您添加了一个新参数(默认为 ‘0’)并且没有将其替换为您自己的零,则不会导出该参数。

  • text optional: string 类型,通常在参数需要多个组件时使用 (例如, (1,1,1,1)).

  • int optional: 整数类型,范围从负无穷大到正无穷大。

特定于着色器的参数

接下来,您将找到特定于每个着色器的参数。这些变量的定义与全局变量类似,使用相同类型的变量。

[rendinst_perlin_layered]     // 着色器名称
invert_heights=text optional  // 参数
mask_gamma=text optional
paint_details=text optional

micro_detail_layer=real optional
micro_detail_layer_v_scale=real optional
micro_detail_layer_uv_scale=real optional

// War Thunder 参数
blend_normals=text optional
details_tile=text optional

程序参数更新

现在可以使用位于.../tools/util/dagorShadersCfgGenerator-dev.exe的工具更新dagorShaders.cfg文件。

此工具执行以下步骤:

  1. 读取父 dagorShaders.cfg: 该工具首先加载父级 dagorShaders.cfg 文件,该文件用作更新着色器参数的基础。

  2. 读取目标 dagorShaders.cfg: 然后加载目标dagorShaders.cfg,最终参数和着色器将保存在其中。 通常,这与父级文件相同,因为没有其他着色器配置文件可供引用。

  3. 加载着色器转储: 该工具从特定于工具的着色器(tools.ps50.shdump.bin)或游戏着色器 (game.ps50.shdump.bin) 中读取着色器二进制文件列表。鉴于项目的多样性,着色器会有所不同,因此您可以指定来自不同项目的多个二进制文件,以将它们的参数合并到一个dagorShaders.cfg中。

  4. 提取着色器和参数: 该工具从着色器二进制文件中提取所有着色器及其参数。

  5. 合并参数: 它将这些提取的参数合并到父级dagorShaders.cfg中,仅通过添加新参数和删除过时的参数来维护结构。

  6. 写入最终的dagorShaders.cfg: 工具,然后将更新的配置保存到目标 dagorShaders.cfg

该工具通过命令行运行,语法如下:

dagorShadersCfgGenerator-dev.exe [parent dagorShaders.cfg] [target dagorShaders.cfg] [shader binary 1 (.ps50.shdump.bin)] [shader binary 2 (.ps50.shdump.bin)] ... [shader binary N (.ps50.shdump.bin)]

Important

  • 谨慎。由于着色器环境的频繁更改,不应完全信任该工具。每次更新后,请始终与当前版本进行 ‘diff’ 比较,并仔细查看任何差异。

  • 潜在问题。该工具可能偶尔会省略某些参数或无法找到您知道存在的着色器。