Sodium Core Shader Support

Sodium Core Shader Support - Sodium Core 着色器支持

使资源包能够替换 Sodium 的着色器,类似于资源包可以替换原版的核心着色器。
fabric / neoforge 作者 linusdev 支持版本 1.20.4 - 26.1
下载量
547,835
关注数
279
数据来源
Modrinth
模组详细介绍

Sodium Core Shader Support

Modrinth Downloads
CurseForge Downloads
License
Environment Client
Discord

允许资源包替换 sodium 的着色器,类似于资源包可以替换原版的 core shaders。

如果你喜欢我的模组,可以考虑请我喝杯咖啡来支持开发:

ko-fi

用户文档

Sodium Core Shader Support 允许资源包用它们自己的着色器替换 sodium 的 core shaders。这并不意味着

这个模组能让所有原版资源包都在 sodium 上工作。只有那些明确说明

兼容 sodium core shader support 的资源包才能正常工作。

如果你正在使用受支持的资源包,你只需像启用其他资源包一样启用它即可。

资源包不兼容

在重新加载资源后,Sodium 可能会在右上角显示消息 The following resource packs are incompatible with Sodium

并列出你当前启用的 core

shaders。即使该资源包支持 sodium core shaders,这条消息也总是会出现,因此可以忽略。

资源包列表

这是一个可以在 sodium 上运行的小型资源包列表。如果你自己创建了资源包,欢迎

在我的 github 上提交 issue 来把它加入这个列表!

着色器开发者文档

需要理解的一点是,你的原版着色器不能直接复制到 sodium 着色器中。Sodium 为方块和云有自己的一套着色器:

- assets/sodium/shaders/
   | - clouds.fsh
   | - clouds.vsh
   | - blocks/
        | - block_layer_opaque.fsh
        | - block_layer_opaque.vsh
   | - include/
        | - fog.glsl 
        | - chunk_material.glsl
        | - chunk_matrices.glsl
        | - chunk_vertex.glsl

除非你想修改 sodium 的云,否则通常 blocklayeropaque 是最重要的部分。

除非你清楚自己在做什么,否则你不应该去修改 chunkmaterial.glslchunkmatrices.glslchunk_vertex.glsl

获取 sodium 着色器源代码

要获取某个特定 sodium 版本的着色器源代码,请下载该版本的 .jar 文件,

并像解压 .zip 压缩包一样解压它。在解压后的归档中,你会找到一个 assets 文件夹,

其中包含上面提到的目录结构。

blocklayeropaque

blocklayeropaque 用于所有方块和方块实体。它在原版 minecraft 中对应的是 terrain.fsh

terrain.vsh(在较旧版本的 minecraft 中,对应的是 rendertypesolidrendertypecutoutrendertypecutoutmipped 等)。

此外,sodium core shader support 还会在 sodium 着色器 blocklayeropaque.fsh

blocklayeropaque.vsh 中为一些地形类型添加几个 define:

  • RENDERPASSSOLID:实心方块
  • RENDERPASSCUTOUT:如树叶、草、玻璃等方块
  • RENDERPASSTRANSLUCENT:具有真实透明度的方块,例如水、蜂蜜、史莱姆等

此外,define SODIUMCORESHADER_SUPPORT 会出现在所有着色器中(mc >= 1.21.2 且版本 >= 1.3.8)。

这些 define 可以像这样使用:

#ifdef RENDER_PASS_SOLID
    // 对实心物体的特殊着色
#endif

GameTime Uniform

从 Sodium Core Shader Support 1.4.0 版本开始,uGameTime uniform 会出现在 blocklayer_opaque.fsh

blocklayeropaque.vsh 中。它的用法与原版的 GameTime uniform 相同。请用以下方式将其添加到你的着色器中:

uniform float u_GameTime;

如何指定支持哪些 sodium 版本

sodium 开发者可能会在不另行通知的情况下更改其内部着色器和与着色器相关的代码。因此,

明确说明你的资源包兼容哪些 sodium 和 minecraft 版本非常重要。这可以通过一个特殊的

versions.json 文件来完成。它应位于你的资源包中的新目录 assets/sodiumcoreshadersupport 下,

文件名为 versions.json。文件内容可以像这样:

{
  "supported-versions": {
    "1.21": [ "0.5.11+mc1.21" ],
    "1.21.1": [ "0.5.11+mc1.21" ]
  }
}

在上面的示例中,资源包声明它兼容 minecraft 1.211.21.1 上的 sodium 0.5.11

下面是一个抽象说明:

更具体地说,versions.json 必须包含一个键为 supported-versions 的对象。

supported-versions 的值必须是一个映射,它将不同的 minecraft 版本映射到一个允许的 sodium 版本数组。

SodiumCoreShaderSupport 模组会检查已安装的 sodium 版本是否包含在当前已安装 minecraft 版本对应的数组中。

  • 如果 minecraft 和/或 sodium 版本不在 supported-versions 中,资源包仍可启用,但会显示警告消息。
  • 如果用户没有安装 sodium,资源包可以启用。
  • 如果不存在 versions.json,资源包仍可启用,但会显示警告消息。
  • 如果 versions.json 格式错误,资源包仍可启用,但会显示警告消息。

导入

Sodium 着色器必须放在 assets/sodium/shaders 目录中。但你可以使用 #import 指令

assets/minecraft/shaders 导入文件。以下代码会包含

文件 assets/minecraft/shaders/include/test.glsl

#import 

利用这个技巧,你可以创建自定义的 glsl 文件,然后在你的着色器中 #import 它们(无论是 core shaders 还是 sodium shaders)。

这些文件应该包含你的主要着色器“逻辑”。一个示例 shaderpack,

它利用这个技巧同时兼容原版和 sodium,可以在这里找到。

基本信息
模组名称Sodium Core Shader Support
作者linusdev
下载量547,835
关注数279
支持版本1.20.4 - 26.1
加载器fabric / neoforge
客户端required
服务端unsupported