本帖最后由 ShioZakana 于 2024-12-12 21:26 编辑
#无需前置或其余操作,安装即用#
#内置配置GUI#
#禁止在未经作者本人允许的情况下将本mod上传至其他任何地方#
==========================================
BOX UTIL
Mod_Icon
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对象等
CalculateUtil: 方便实现向量等数据的计算方法 CommonUtil: 常见的渲染相关方法,或未归类方法
RenderingUtil: 实现对主要渲染类的创建方法的包装 ShaderUtil: 实现着色器程序的创建方法,或其余OpenGL相关的操作方法
TransformUtil: 矩阵创建和计算的相关方法,主要用于 主要渲染类 的 位置/朝向/整体缩放 状态调整 TrigUtil: 一些三角函数计算方法,主要为基于平方关系的三角函数求值
关于实际的调用示例,可以参考Mod内 data.missions.BUtilTestMission 中代码,该文件中包含了多个主要内容的使用方法,且可以通过战役预览这些方法的效果。该测试战役在战役面板内中名为 Box Util Test 。
Test_Mission
|
该Mod成功安装并启用后,主菜单界面左下角会出现一个小型UI框体,包含 两个小图标 ,两个图标从左至右分别对应 BoxUtil基础功能 与 OpenGL4.3 相关功能的可用情况。 默认情况下,对应小图标显示 绿色 时为可用;而显示 橙红色 则为不可用,届时相关功能将无法使用。
将光标移动至该小型UI框体处,直至框体从两个小图标变为单个大图标后,可 左键单击 打开,并进入设定面板,如下图。
Config_Panel_ZHCN
|
Config_Panel_ENUS
|
面板默认为 英文语言 ,若需更改为中文语言,可在底下的 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个版本的记录 修复部分OpenGL支持不完整的设备运行时的部分问题
|
为 ControlDataAPI 内所有方法加入 RenderDataAPI 类型入参,且入参不会为null 修复了某些情况下的视觉显示问题 |
加入另一种曲线渲染实体 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 类更名为 BaseMIRenderData TextFieldEntity 类从实现 RenderDataAPI 接口类改为继承 BaseRenderData 类 改进小部分已有方法的实现与注释 改进小部分着色器代码 |
|
|