自定义天空盒模组(HDR天幕)
一、模组概述 本 Mod 为 Survivalcraft 游戏加载等距柱状投影 HDR 贴图作为天空盒,替换原版天空渲染,并提供天体系统和流星雨效果。 二、核心渲染系统 2.1 HDR 天空盒渲染 自定义 GLSL 着色器 — 顶点着色器将球体坐标作为方向向量传递,片段着色器将方向转为等距柱状投影 UV 采样贴图 3种色调映射算法 : ACES(默认) Reinhard Uncharted 2 天空模式 (3种): 仅 HDR(mode=0)— 完全替换原版天空 混合(mode=1)— HDR + 原版共存 仅原版(mode=2)— 不渲染 HDR Harmony 补丁 — mode=0 时通过 Prefix 补丁禁用原版 DrawSkydome 、 DrawStars 、 DrawSunAndMoon 、 DrawClouds 球体几何 — 8x8 经纬分段构建天空球 天空自转 — 可调旋转速度(0 0.5 度/分钟) 贴图渐变过渡 — 切换贴图时 1 秒淡入淡出,旧贴图淡出 + 新贴图淡入叠加渲染 2.2 HDR 贴图加载 贴图来源 : 外部目录: {ExternalDataPath}/HDRTextures/ (支持 png/jpg/jpeg/bmp/hdr) 内置资源: Assets/Textures/Skybox/ (Universe1 6.jpg + dawn/day/dusk/night.jpg) Radiance HDR (.hdr) 解码 — 纯 C 实现 RGBE 解码,支持新旧 RLE 扫描行格式 自然排序 — 文件名按自然数排序(Universe1 内置默认贴图 — 4 张时段贴图: dawn.jpg / day.jpg / dusk.jpg / night.jpg 2.3 日夜自动切换 根据游戏时间自动切换 HDR 贴图: 黎明 (0.2 0.3) → dawn 贴图 白天 (0.3 0.7) → day 贴图 黄昏 (0.7 0.8) → dusk 贴图 夜晚 ( 高级贴图模式 — 开启后 4 时段独立选择;关闭后仅白天/夜晚两个选择 三、天体系统 3.1 天体贴图 8 颗行星贴图 : Mercury / Venus / Earth / Mars / Jupiter / Saturn / Uranus / Neptune(webp 格式) 辉光贴图 — 复用游戏内置 Textures/SkyGlow 或 Textures/Star 各天体独立辉光颜色 — 如地球蓝色、火星红色、木星金色等 3.2 太阳天体 贴图选择、大小倍率(0.1 30.0)、辉光开关、辉光强度(0.1 2.0)、轨道位置偏移(0 360°) 独立重置按钮 3.3 月亮天体 与太阳独立配置,参数相同 月亮角度 = 太阳角度 + π(与原版一致) 3.4 通用天体设置 显示/隐藏天体 开关 固定天体位置 — 开启时快照当前太阳角度,天体停止随时间移动 天体渲染使用 UnlitShader ,Billboard 面向摄像机 辉光使用 Additive 混合,半径为天体的 3.5 倍 四、流星雨系统(MeteorShower.cs) 4.1 核心机制 固定辐射点方向 — 所有流星从同一方向辐射(模拟真实流星雨) 仅夜晚生成 — 白天停止生成并清理 最大 200 颗同屏流星 环形缓冲区轨迹 — 每颗流星最多 500 个轨迹点,O(1) 写入,避免 GC 4.2 可调参数 参数 范围 说明 启用/禁用 开关 总开关 生成频率 0.1 5 每秒基础生成数 流星雨强度 1 5 稀疏/普通/密集/暴雨/风暴,乘以生成频率 流星速度 10 300 运动速度 流星寿命 0.5 10 秒 拖尾宽度 0.1 50 渲染宽度 头部大小 0.5 60 辉光半径 头部辉光 开关 是否显示头部辉光 辉光强度 0.1 2 头部辉光亮度 4.3 渲染 冰蓝色主色调 rgba(60,180,255) 三层渲染 : 拖尾辉光(宽、半透明)→ 拖尾核心(窄、亮)→ 头部辉光 轨迹采样 — 每 5 个点取 1 个,大幅减少渲染顶点 预分配渲染缓冲区 — 避免每帧 GC 分配 Additive 混合 — 所有渲染使用加法混合 淡入淡出 — 生命前 8% 淡入,后 50% 淡出 五、GUI 界面 5.1 入口 HDR 设置按钮 — 插入到游戏 "更多" 菜单中闪电按钮旁边,使用自定义图标(HDR OFF.png / HDR ON.png) 快捷键 — 打开/关闭设置界面 快捷键 PgUp/PgDn — 快速切换 HDR 贴图 5.2 设置对话框布局 左侧导航栏 (160px 宽)+ 右侧内容区域 (可滚动) 3个页面 : 1. 天空贴图设置 — 曝光度、伽马值、天空模式、色调映射、旋转速度、高级贴图开关、4 时段贴图选择、刷新贴图列表 2. 天体设置 — 显示开关、太阳/月亮独立配置(贴图、大小、辉光、强度、轨道偏移、重置)、固定天体位置 3. 流星雨设置 — 启用开关、生成频率、强度、速度、寿命、拖尾宽度、头部大小、头部辉光、辉光强度、重置 页面记忆 — 关闭后再打开自动定位到上次页面 导航栏样式 — 选中项绿色背景,参考原版存档选择效果 去除遮罩 — DialogsManager 自动添加的半透明遮罩设为透明 六、设置持久化 所有参数通过 SaveSettings / LoadSettings 序列化为 XML,存档时自动保存。包含 旧版兼容 逻辑: 旧版 SelectedTextureIndex → 同时设置 day/night 旧版 CelestialBodySizeMultiplier → 同时设置太阳/月亮大小 旧版 SelectedCelestialBodyIndex → 同时设置太阳/月亮贴图 旧版 CelestialBodyGlow/GlowIntensity/OrbitalOffset → 同时设置太阳/月亮 项目仓库: https://gitee.com/sc geese slightly cool/hdrsky box