[0.97a][C][前置] Box Util (2024.10.14)
本帖最后由 ShioZakana 于 2024-10-14 11:10 编辑#无需前置或其余操作,安装即用#
#内置配置GUI#
#禁止在未经作者本人允许的情况下将本mod上传至其他任何地方#
==========================================
BOX UTIL
[*]MOD简介:
Box Util基于 OpenGL 4.2 进行开发,使用了 OpenGL 4.2~4.3 的核心特性。 以 实例化渲染 和 GPU计算 为中心,且大多数玩家的配置都能运行的前提下,实现各种更性能化与质量化的图形相关功能。
对于Modder而言,该Mod为绝大多数静态类与实例类编写了较为丰富的各种方法,并尽可能地拥有一个接口类作为父类;在拥有简单易懂的各种渲染对象设定方法的同时,还可以借助部分方法进一步自定义该对象,或直接将其重写;且拥有数个管理类,集中处理各种数据或置入对象实现渲染。
对于一般玩家而言,当前阶段的 Box Util 可为游戏提供两种性能消耗与画面质量不同的 FXAA 后处理抗锯齿,以便在启用 GraphicsLib 后,即便游戏原版的抗锯齿必须关闭的情况下,依然能获得较好的画面体验。
[*]主要功能:
主要渲染类 - org.boxutil.units.standard.entity
为Box Util的主要实现内容,也是该Mod通常来说的常用渲染对象;该路径下类皆实现了 org.boxutil.base.api.RenderDataAPI 接口类 CommomEntity - 主要实现WaveFrontOBJ格式3D模型的渲染;拥有一个 无限光 光源配置,但不包括遮挡阴影;支持材质配置 SpriteEntity - 主要实现平面纹理渲染;类似 原版SpriteAPI,支持Tiles配置;支持材质配置 CurveEntity - 主要实现曲线光束等类似效果的渲染;基于三阶贝塞尔曲线;支持材质配置
SegmentEntity - 主要实现曲线光束等类似效果的渲染;为 CurveEntity 的分支版本但设置方法与渲染方法有所不同 FlareEntity - 主要实现闪光特效的渲染;类似 MagicLib的MagicLensFlare
TextFieldEntity - 主要实现位图文本的渲染;类似 LazyLib的LazyFont,支持 斜体/下划线/删除线/反相 配置,并至多支持4种位图字体同一渲染
DistortionEntity - 主要实现屏幕扭曲效果的渲染;类似 GraphicsLib的DistortionAPI
简易渲染类 - org.boxutil.units.standard.misc
近原版的功能类,其中VAO相关对象类需要 OpenGL 3.1 支持,其余最高需要 OpenGL 2.0 支持;VAO对象类皆实现了 org.boxutil.base.api.SimpleVAOAPI 接口类 ArcObject - 在任意位置绘制 弧线/扇形/椭圆 等 TexArcObject - 在任意位置绘制带有纹理的 弧线/扇形/椭圆 等 NumberObject - 在任意位置绘制输入的 整形数/浮点数
UIBorderObject - 在任意位置绘制类原版的UI框体 TileMapSprite - 为节省显存实现的纹理类,实现了原版 SpriteAPI 方法,常用于替换默认的舰船纹理
PointObject - 绘制一个点的VAO对象类
LineObject - 绘制一个水平线段的VAO对象类 QuadObject - 绘制一个正四边形的VAO对象类
资源管理类 - org.boxutil.manager
用于管理各种资源,或由该类集中进行渲染 CampaignRenderingManager - 管理生涯模式地图中的渲染 CombatRenderingManager - 管理舰船战斗内场景中的渲染
ModelManager - 实现WaveFrontOBJ格式3D模型文件的加载与存储 ShaderCore: 保存Box Util的各种着色器程序,或是其余相关OpenGL对象等
实用工具类 - org.boxutil.util
提供相关功能的简易实现方法 CalculateUtil: 方便实现向量等数据的计算方法 CommonUtil: 常见的渲染相关方法,或未归类方法
RenderingUtil: 实现对主要渲染类的创建方法的包装 ShaderUtil: 实现着色器程序的创建方法,或其余OpenGL相关的操作方法
TransformUtil: 矩阵创建和计算的相关方法,主要用于 主要渲染类 的 位置/朝向/整体缩放 状态调整 TrigUtil: 一些三角函数计算方法,主要为基于平方关系的三角函数求值
关于实际的调用示例,可以参考Mod内 data.missions.BUtilTestMission 中代码,该文件中包含了多个主要内容的使用方法,且可以通过战役预览这些方法的效果。该测试战役在战役面板内中名为 Box Util Test 。
#测试战役内截图#]
[*]主要功能框图:
#主要功能类结构#]
[*]设定面板:
该Mod成功安装并启用后,主菜单界面左下角会出现一个小型UI框体,包含 两个小图标 ,两个图标从左至右分别对应 BoxUtil基础功能 与 OpenGL4.3 相关功能的可用情况。 默认情况下,对应小图标显示 绿色 时为可用;而显示 橙红色 则为不可用,届时相关功能将无法使用。
将光标移动至该小型UI框体处,直至框体从两个小图标变为单个大图标后,可 左键单击 打开,并进入设定面板,如下图。#设定面板截图#]#设定面板截图-英文界面#] 面板默认为 英文语言 ,若需更改为中文语言,可在底下的 Config panel language 选项中进行调整。 其中,除了全局设置的相关配置更改需要 完全重启游戏 才能生效外,其余设定通常都是保存后即有效的。 如果某个设定项显示为 橙红色 时,则说明对应功能在当前设备环境下不可用。 对于需要重新启动游戏才生效的选项,右侧显示的值为设定的值,而当前真正生效的值可以通过该选项栏的提示框获知。
[*]注意事项:
对于Box Util的绝大多数功能,必须拥有一张至少支持 OpenGL 4.2 的显卡(例如NVIDIA GTX 460,基于Fermi架构,支持OpenGL 4.2),并且游戏进程使用了该显卡运行才能正常使用;而调用GPU进行实例化渲染的相关计算则至少需要 OpenGL 4.3 的支持。
对于已安装的显卡,可以通过 GPU-Z 等类似软件进行查询,若显卡显示为支持 OpenGL 4.2 则仅支持 4.2 的核心特性,若显示为 OpenGL 4.3 则基本支持 4.2 和 4.3 的核心特性,若显示为 OpenGL 4.4 同支持4.3所述,依此类推。
对于其他查询途径,可以通过 opengl.gpuinfo.org 或 techpowerup.com/gpu-specs/ 等等查询。
如果需要更改游戏的UI缩放倍率,请尽量以 50% 为步进进行调节,如 150% / 200% 等。
对于自定义Bloom效果,当前阶段除了添加渲染实体(如 SpriteEntity )外,也可以手动绑定 ShaderCore.getRenderingBuffer() 的索引 0 上的FBO,在除开最顶层渲染层级外的层级内,将相关图形绘制至第三个颜色附件(GL_COLOR_ATTACHMENT2)实现。
实现效果时,对于批量渲染尽量配合 InstanceDataAPI 相关类创建数据;对于部分需要控制的视觉效果,可以配合 ControlDataAPI 挂载到每个渲染类上实现状态控制。
[*]更新记录:
#更新记录#]若未额外注明,将Box Util更新至高版本后通常无需新建存档此处仅显示最近3个版本的记录v1.0.8a / 2024.10.14]修复部分OpenGL支持不完整的设备运行时的部分问题
v1.0.8 / 2024.10.09]为 ControlDataAPI 内所有方法加入 RenderDataAPI 类型入参,且入参不会为null修复了某些情况下的视觉显示问题
v1.0.7 / 2024.09.07]加入另一种曲线渲染实体 SegmentEntity加入带纹理的简易扇形渲染类 TexArcObject
CalculateUtil 添加方法: float inverseLerp(float, float, float); Vector2f reflect(Vector2f, Vector2f, Vector2f); Vector3f reflect(Vector3f, Vector3f, Vector3f); boolean pointAtRight(Vector2f, Vector2f); boolean pointAtRight(Vector2f, CombatEntityAPI); boolean pointAtFront(Vector2f, Vector2f); boolean pointAtFront(Vector2f, CombatEntityAPI);
在配置界面的 其他设置 分类中添加界面语言切换选项,默认值为英语,可更改为简体中文。配置界面的 取消 键快捷键更改为 Esc加入控制台指令 ShowAAStatus 用于显示屏幕中的抗锯齿工作情况(for fun)Bloom效果上调强度,将变得更明显
原 BaseRenderData 类拆分出 BaseInstanceRenderData,原 BaseMaterialRenderData 类更名为 BaseMIRenderDataTextFieldEntity 类从实现 RenderDataAPI 接口类改为继承 BaseRenderData 类改进小部分已有方法的实现与注释改进小部分着色器代码
[*]下载直连:
0.97a [当前维护版本]:
看不懂 鱼子哥伟大! {:5_126:} 听不懂思密达{:5_124:}
不如直接讲讲普通玩家安装这玩意有什么用吧 Tourist_翔 发表于 2024-8-18 17:11
听不懂思密达
不如直接讲讲普通玩家安装这玩意有什么用吧
目前版本大概是 就算装了GraphicsLib,导致必须关闭游戏本身的抗锯齿时,也能通过该Mod的内置抗锯齿功能实现后处理抗锯齿 好耶!鱼子之力! {:5_124:} 看起来好牛逼的 看起来很厉害的新时代前置! 看不懂,但牛逼 鱼子哥,强大! 啊? 看不懂思密达{:tieba_12:} wc 牛逼啊技术大佬 不明觉厉! 抗锯齿util{:4_86:} 有个问题,我200%进游戏这个选项框大的屏幕都装不下,就显示了大概三分之二? 老魂滚动环 发表于 2024-8-19 09:15
有个问题,我200%进游戏这个选项框大的屏幕都装不下,就显示了大概三分之二? ...
在修了,手头只有1080p的屏可能得等个一阵子才能调试好 老魂滚动环 发表于 2024-8-19 09:15
有个问题,我200%进游戏这个选项框大的屏幕都装不下,就显示了大概三分之二? ...
ok,新的热修复版本已上传 {:5_134:} {:5_134:} 这东西理论上0.96能不能用啊0.O 维尔拉 发表于 2024-8-22 19:48
这东西理论上0.96能不能用啊0.O
因为相关功能需要调用游戏内随版本变化较大的部分代码,出于安全考虑,该Mod是锁定版本使用的 ShioZakana 发表于 2024-8-22 19:55
因为相关功能需要调用游戏内随版本变化较大的部分代码,出于安全考虑,该Mod是锁定版本使用的 ...
感谢解答 晕晕,有无api文档 残年流雪 发表于 2024-8-25 15:23
晕晕,有无api文档
你可以把源文件当doc用,大部分复杂方法都包含注释,具体使用例可参考源文件里的战役文件 ShioZakana 发表于 2024-8-25 15:33
你可以把源文件当doc用,大部分复杂方法都包含注释,具体使用例可参考源文件里的战役文件 ...
哦好的,我还没看源文件,有注释就方便了,谢谢回复 {:tieba_34:}{:tieba_34:}这是给34寸超大屏4K土豪专用的前置吧,,{:tieba_34:}
但是这么多功能居然只有2M,技术太牛啦{:tieba_43:}{:tieba_43:}{:tieba_43:} 核显使用这个会增强性能吗 还是导致帧数更低? 喵喵锤大魔王 发表于 2024-9-11 21:19
核显使用这个会增强性能吗 还是导致帧数更低?
当前阶段是主要面向创作者进行Mod开发的,单纯安装该Mod除了提供抗锯齿功能外并没有多少游玩影响。
对于同一种特效例如大量粒子,开发者使用该Mod进行创建时,对比原版调用存在压倒性的性能提升。
对于任何显卡而言只要设备支持则相关功能可用,否则自动禁用,也并不影响游玩 555555555555 ShioZakana 发表于 2024-9-11 21:52
当前阶段是主要面向创作者进行Mod开发的,单纯安装该Mod除了提供抗锯齿功能外并没有多少游玩影响。
对于 ...
原来是这样 大佬有替换原版渲染逻辑优化渲染的想法吗 我有办法不改动文件,只变启动脚本替换掉原本的代码 zender 发表于 2024-10-31 18:39
大佬有替换原版渲染逻辑优化渲染的想法吗
你有兴趣的话可以去做一下,我目前还不打算对原版渲染相关代码做替换或者主动去更改之类的,只是做一个类似“功能/渲染拓展”的这种mod;并且原版渲染那块写的实在是一言难尽,实体的各种渲染还东一块西一块,看的头疼,完全没什么去折腾的欲望 ShioZakana 发表于 2024-8-18 17:15
目前版本大概是 就算装了GraphicsLib,导致必须关闭游戏本身的抗锯齿时,也能通过该Mod的内置抗锯齿功能 ...
有这好事,我夸夸用{:5_134:}
页:
[1]