ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Minecraft水下世界焕然一新:Revelation水体折射、焦散与波浪渲染原理及调参技巧

Minecraft水下世界焕然一新:Revelation水体折射、焦散与波浪渲染原理及调参技巧 Minecraft水下世界焕然一新Revelation水体折射、焦散与波浪渲染原理及调参技巧【免费下载链接】RevelationAn explorative shaderpack for Minecraft: Java Edition项目地址: https://gitcode.com/gh_mirrors/re/RevelationRevelation 是 Minecraft 基岩/Java 版的一款探索性着色器包shaderpack它以物理化的水体渲染著称真实的水体折射、动态焦散光斑、多层波浪与水下体积雾让 Minecraft 的水下世界焕然一新。本文面向新手用通俗语言讲清这套水渲染的三大核心原理——波浪生成、折射与焦散——并给出实用的调参技巧帮助你快速调整出理想的水体效果。 水看起来为什么不一样三大渲染环节Revelation 的水体渲染可以拆成三个环节每个环节都有对应的开关与参数波浪生成水面不是平的法线朝向逐像素动态计算决定了高光与折射方向水体折射透过水面看水底物体会因折射率而“偏移”和扭曲水体焦散阳光穿过波动的表面在海底形成流动的光斑。对应设置项在 shaders/lang/zh_CN.lang 中已有中文界面水体视差、水体焦散、水波高度、水波速度、水体折射率、水雾密度等。 波浪原理从噪声到物理海洋Revelation 提供两套波浪方案由构建时的PHYSICS_OCEAN开关切换见 shaders/program/gbuffers/Water.frag。方案一多层噪声波浪。核心文件是 shaders/lib/water/WaterWave.glsl。它把 4 层不同频率的噪声按“黄金角”旋转叠加FBM 思想CalculateWaterHeight采样噪声得到水面高度CalculateWaterNormal在高度图上取相邻点差分推出法线水面波纹的“起伏感”就来自这里WATER_WAVE_HEIGHT控制整体波高WATER_WAVE_SPEED控制时间流速低频噪声还会让不同区域的浪高起伏变化避免“机械感”。方案二物理海洋PhysicsOceans。shaders/lib/water/PhysicsOceans.glsl 采用迭代式波浪函数频率与速度逐层倍增PHYSICS_FREQUENCY_MULT、PHYSICS_SPEED_MULT并用拖拽项让波峰互相“推挤”更接近真实海浪的尖锐峰谷。它还会用 3D 噪声生成泡沫physics_foamAmount/physics_foamOpacity用涟漪凹凸贴图physics_ripples混合进最终法线让近处水面细节更足。视差补偿Parallax是点睛之笔WATER_PARALLAX开启后会沿视线对水面做多次步进采样数由WATER_PARALLAX_SAMPLES控制让斜看水面时波纹产生“立体位移”水波仿佛有真实的厚度。 折射原理水下的世界为什么会弯折射由 shaders/lib/lighting/shadow/Caustic.glsl 中的WaterRefractionOffset实现思路非常直观水面顶点/片元阶段先算出波浪法线并写入水数据缓冲见 shaders/program/gbuffers/Water.frag其中还会记录水面到水底的距离作为“水深”光照阶段对水底表面采样时用光学公式refract沿法线偏折视线偏折角度由WATER_IOR水体折射率决定——默认 1.3越接近真实水的 1.33 效果越逼真偏移量乘以水深水越深扭曲越明显于是水底的方块纹理、草和水草都会随波浪轻轻“游动”。当你站在水下时shaders/lib/water/WaterFog.glsl 的RaymarchWaterFog会沿视线做体积步进逐段检查阴影图中的水遮罩与深度计算光线在水中的吸收 散射Fournier–Forand 相位函数描述浑浊感的朝向分布再按指数衰减得到透射率。这就是水下“越深越蓝绿、逆光有乳白雾感”的来源参数是六个吸收/散射系数RGB 各一组加上WATER_FOG_DENSITY总密度。✨ 焦散原理海底流动的光斑WATER_CAUSTICS开启后焦散计算在 shaders/lib/lighting/shadow/Caustic.glsl对水底每个像素先算出它对应的“水面折射偏移”把采样点映射回水面用相邻阴影贴图纹素插值出折射场的雅可比矩阵其行列式决定了光线的聚焦/发散行列式趋近 0 的地方光被压缩就形成了亮线——这正是现实中焦散“细丝状”光纹的关键映射误差指数衰减保证焦散边界平滑最后再乘以水深衰减exp(-extinction × depth)让深处的光斑自然变暗。效果就是阳光下海底那些游动的亮纹且随波浪实时演化。 调参技巧常用参数速查表所有参数集中在 shaders/settings.glsl“Transparent”水参数段落修改后重新加载着色器即可生效。参数默认作用与调法WATER_WAVE_HEIGHT1.0波高。调大→海浪更汹涌调小→接近镜面。想要“平静湖水”可设 0.2–0.4WATER_WAVE_SPEED1.0波浪流动速度调大更有动感WATER_IOR1.3折射率。设 1.33 更贴近真实海水调大会让水底偏移更夸张有“超现实”风格WATER_FOG_DENSITY1.0水下雾总密度。调大→水下迅速变浑调到 0 则水底通透见底WATER_ABSORPTION_R/G/B0.25/0.08/0.05水体吸收的 RGB。红吸收最强是海水发蓝绿的物理原因。想让水偏翠绿提高红吸收想要清澈池塘三项一起调低WATER_SCATTERING_R/G/B0.05/0.11/0.15水体散射的 RGB决定水下“乳白感”和浑浊度。整体调高→泥水/雪山水感WATER_PARALLAX_SAMPLES12视差步进次数。调大→斜看水面更立体但开销上升性能吃紧可降到 6–8WATER_PARALLAX/WATER_CAUSTICS开两个独立开关低配机器可单独关闭焦散省性能调参建议路线先定风格清澈→低吸收低密度深海→高吸收高密度再用WATER_WAVE_HEIGHT定浪型最后微调WATER_IOR和视差采样数找手感。此外还有两处联动体验物理海洋参数physics_foamAmount泡沫量、physics_foamOpacity泡沫不透明度、波浪细节迭代数13–48见 shaders/lib/water/PhysicsOceans.glsl雨洼反射下雨时地面会生成临时水洼并叠加涟漪法线shaders/lib/surface/RainPuddle.glslRAIN_PUDDLE_SCALE/RAIN_PUDDLE_SMOOTHNESS控制水洼密度与边缘雨天水面观感全靠它。 相关文件导航文件说明shaders/lib/water/WaterWave.glsl多层噪声波浪高度/法线计算shaders/lib/water/PhysicsOceans.glsl物理波浪、泡沫与涟漪shaders/lib/water/WaterFog.glsl水下体积雾射线步进shaders/lib/lighting/shadow/Caustic.glsl折射偏移与焦散雅可比计算shaders/program/gbuffers/Water.frag水面法线与水数据写入shaders/program/DH/Water.frag深度混合远景水面通道shaders/settings.glsl全部水体参数与可选值shaders/config.glsl渲染管线缓冲表水数据存于 colortex12Revelation 的程序化渲染大量依赖查找表与噪声纹理下图是项目内纹理资源的两个示例掌握了波浪、折射、焦散三者的关系你就能把 Revelation 的水体从“平静湖水”一路调到“风暴深海”——这正是这套 Minecraft 水体渲染最有趣的地方。【免费下载链接】RevelationAn explorative shaderpack for Minecraft: Java Edition项目地址: https://gitcode.com/gh_mirrors/re/Revelation创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表