portedboar44215 发表于 2024-2-5 20:29:27

延迟渲染从入门到精通#3 ------ 创建体积雾&利用atmospherics.json修改天空颜色

本帖最后由 portedboar44215 于 2024-2-5 20:47 编辑

一、前言
前面两期教程中,我们已经能够利用global.json和pbr材质来自定义基本的光照效果与更加丰富多样的材质,但是如果细心观察,仍会发现原版的天空以及迷雾效果十分不理想。这一期教程将为大家带来体积雾以及天空颜色的更改方法

二、需要用到的工具
1.手机/电脑
2.一个文本文档编辑器(最好带有JSON语法高亮功能,如mt管理器、vscode等)
3.压缩工具(如7z、WinRAR等)
4.电脑端打开显示文件后缀

三、基本文件结构
“👈”为此处需要用到的文件
🗃️延迟渲染示例包.mcpack
📁lighting
↳📃global.json(负责全局定向光照)
    📃atmospherics.json(负责环境光散射等)👈
📁fogs
↳📃example_fog.json👈
📁textures
↳📁blocks(方块材质包)
    …(其他)
📃biomes_client.json👈
📃manifest.json(材质清单文件)
📃pack_icon.png(材质包封面图片)


四、教程正文

---------第一部分:体积雾----------

需要使用到的文件

1.example_fog.json(名称可自定义)
2.biomes_client.json

example_fog.json编辑教程

示例
{
"format_version": "1.16.100",
"minecraft:fog_settings": {
    "description": {
      "identifier": "custom_pack:example"//迷雾id
    },
    "distance": {//迷雾渲染距离
      "air": {//何处的迷雾
      "fog_start": 0.92,//迷雾起点
      "fog_end": 1.0,//迷雾终点
      "fog_color": "#ABD2FF",//迷雾颜色
      "render_distance_type": "render"//迷雾类型
      }
    },
    "volumetric": {//体积雾相关
      "density": {
      "air": {
          "density": 0.1,//迷雾浓度
          "max_density_height": 56,//迷雾最大高度
          "zero_density_height": 70//迷雾终止高度
      }
      },
      "media_coefficients": {//介质系数
      "air": {
          "scattering": [ 0.02, 0.02, 0.02 ],//散射光谱
          "absorption": [ 0.0, 0.0, 0.0 ]//吸收光谱
      }
      }
    }
}
}

1.迷雾id
这个是自定义迷雾的标识部分,其功能类似于UUID,我们可以以"内容:内容"的格式自定义它,例如"cxk:ctrl"(注意:冒号前不可自定义为"Minecraft",否则会与自带材质包冲突!)

2.迷雾渲染距离及其附属参数
(这部分在延迟渲染中基本无作用,因此此处只讲解部分内容)
此处可以自定义空气、水中的迷雾效果,分别对应“何处的迷雾”中的air以及water
迷雾颜色
顾名思义,这个参数可以调整迷雾的颜色
目前测试支持hex颜色代码以及RGB颜色代码
例如:此处的颜色为#FFB300
https://cdnjson.com/images/2024/02/05/093558n5w8v5k6jk611ww3.png

3.体积雾相关参数
同第二点,依然可以分别自定义空气、水中的迷雾效果
迷雾浓度
此参数可以调整体积雾的浓度,此处取值范围为0~1,0为完全禁用体积雾效果,建议不要调太高
这是迷雾浓度为0.46的效果
https://cdnjson.com/images/2024/02/05/093718tx3wx5ia85899z9i.png
https://cdnjson.com/images/2024/02/05/093558n5w8v5k6jk611ww3.png
https://cdnjson.com/images/2024/02/05/093536vr6uscd0fhcsiur9.png
迷雾最大高度&迷雾终止高度
这两个参数可以自定义体积雾的高度(世界中的y坐标),单位为方块
例如:最大高度为114,终止高度为514,那么体积雾将在y坐标为114~514之间的高度内出现

这样,你就成功创建了一个迷雾配置文件。当然,这时候在游戏中打开这个资源包是无法加载迷雾的,因为我们需要将它添加至特定的生物群系中,这时,就需要用到biomes_client.json了

示例
{
"biomes": {
    "ice_plains": {//生物群系名称
      "fog_identifier": "minecraft:fog_ice_plains",//自定义迷雾id
       //可添加其他参数
    },
    "mesa_plateau": {//生物群系名称
      "fog_identifier": "minecraft:fog_mesa_plateau",//自定义迷雾id
       //可添加其他参数
    },
    //可添加其他生物群系
}
}

1.为生物群系添加自定义参数
需要将注释为“生物群系名称”处替换为需要改动的生物群系

2.添加自定义迷雾
在“自定义迷雾id”处填写已经创建的自定义迷雾id,不同的生物群系可以对应不同的迷雾

如果不想编辑单独为这么多群系逐个添加迷雾,还可以添加一个生物群系名称为“default”的群系。这样,其他未添加的群系都会显示default中的迷雾


---------第二部分:修改天空颜色----------
大家也许会认为原版天空颜色过于生硬,那么,我们可以利用atmospherics.json修改天空颜色

示例
{
"horizon_blend_stops":{
    "min": {
      "0.0": 0.0,
      "0.1962499916553497": 0.008,
      "0.25": 0.0,
      "0.34": 0.11,
      "0.6": 0.027,
      "0.6750000119209290": 0.01332983374595642,
      "0.7487499713897705": 0.0,
      "0.8174999952316284": 0.0
    },
    "start": {
      "0.0": 0.25,
      "0.1962499916553497": 0.4179066121578217,
      "0.25": 0.213,
      "0.34": 0.401,
      "0.6": 0.23,
      "0.6750000119209290": 0.2143078744411469,
      "0.7487499713897705": 0.1990064233541489,
      "0.8174999952316284": 0.6179999709129333
    },
    "mie_start": {
      "0.0": 0.5,
      "0.1962499916553497": 1.172000050544739,
      "0.25": 0.5,
      "0.34": 0.5009999871253967,
      "0.6": 0.167,
      "0.6750000119209290": 0.15,
      "0.7487499713897705": 0.55,
      "0.8174999952316284": 0.79
    },
    "max": {
      "0.0": 0.25,
      "0.1962499916553497": 0.137,
      "0.25": 0.0,
      "0.34": 0.467,
      "0.6": 0.2,
      "0.6750000119209290": 0.1919008344411850,
      "0.7487499713897705": 0.214,
      "0.8174999952316284": 0.0
    }
},
"rayleigh_strength": {
    "0.0": 1.026124954,
    "0.25": 0.1624998152,
    "0.3": 0.1624998152,
    "0.3037499785423279": 0.1624998152,
    "0.3249999880790710": 0.1624998152,
    "0.6": 0.5,
    "0.7074999809265137": 0.1982535422,
    "0.75": 0.125
},
"sun_mie_strength": {
    "0.0": 1.0,
    "0.25": 3.0,
    "0.3": 3.0,
    "0.3037499785423279": 2.878501892089844,
    "0.3249999880790710": 1.0,
    "0.6": 1.0,
    "0.7074999809265137": 1.0,
    "0.75": 1.0
},
"moon_mie_strength": {
    "0.0": 0.0,
    "0.25": 0.0,
    "0.3": 0.0,
    "0.3037499785423279": 0.114,
    "0.3249999880790710": 1.0,
    "0.6": 1.0,
    "0.7074999809265137": 0.0,
    "0.75": 0.0
},
"sun_glare_shape": {
    "0.0": 15.89900016784668,
    "0.25": 15.89900016784668,
    "0.3": 15.89900016784668,
    "0.3037499785423279": 15.84438705444336,
    "0.3249999880790710": 15.0,
    "0.6": 4.0,
    "0.7074999809265137": 4.0,
    "0.75": 4.0
},
"sky_zenith_color": { //天空顶部颜色
    "0.0": ,
    "0.25": ,
    "0.5": ,
    "0.75":
},
"sky_horizon_color": { //地平线颜色
    "0.0": ,
    "0.171875": ,
    "0.25": ,
    "0.305": ,
    "0.35": ,
    "0.4174999892711639": ,
    "0.47": ,
    "0.6030000448226929": ,
    "0.6474999785423279": ,
    "0.75": ,
    "0.84":
}
}
此处只需使用到“天空顶部颜色”以及“地平线颜色”
关于天空顶部和地平线的区别,很难解释清楚,图片应该更直观一点
https://cdnjson.com/images/2024/02/05/horizon_blend_stops.jpg
以下为地平线
以上为天空顶部
中间为过渡区

修改方法
冒号左边为在Minecraft中的时间
演示图
https://cdnjson.com/images/2024/02/05/key_frame_times_of_day.png
冒号右边则是对应时间的颜色,同样支持hex和RGB颜色代码

至此,我们已经完成了延迟渲染基础的自定义教程,利用以上三篇教程的内容已经可以做出效果相当不错的延迟渲染资源包。祝愿大家都能借助此教程做出属于自己的作品!

注:文中部分图片及示例文件来自Microsoft Learn
页: [1]
查看完整版本: 延迟渲染从入门到精通#3 ------ 创建体积雾&利用atmospherics.json修改天空颜色