ShioZakana 发表于 2024-8-18 16:55:36

[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 [当前维护版本]:






龟龟坐锅观天 发表于 2024-8-18 16:59:37

看不懂

596818092 发表于 2024-8-18 17:00:23

鱼子哥伟大!

cjy4312 发表于 2024-8-18 17:04:48

{:5_126:}

Tourist_翔 发表于 2024-8-18 17:11:27

听不懂思密达{:5_124:}
不如直接讲讲普通玩家安装这玩意有什么用吧

ShioZakana 发表于 2024-8-18 17:15:31

Tourist_翔 发表于 2024-8-18 17:11
听不懂思密达
不如直接讲讲普通玩家安装这玩意有什么用吧

目前版本大概是 就算装了GraphicsLib,导致必须关闭游戏本身的抗锯齿时,也能通过该Mod的内置抗锯齿功能实现后处理抗锯齿

迪泠 发表于 2024-8-18 17:34:40

好耶!鱼子之力!

天照御神 发表于 2024-8-18 18:09:34

{:5_124:} 看起来好牛逼的

相位自走洗衣机 发表于 2024-8-18 18:11:26

看起来很厉害的新时代前置!

临风雨 发表于 2024-8-18 18:22:58

看不懂,但牛逼

酸奶狐狸条 发表于 2024-8-18 18:33:07

鱼子哥,强大!

yutu- 发表于 2024-8-18 19:02:17

啊?

ECHO 发表于 2024-8-18 19:43:07

看不懂思密达{:tieba_12:}

搞毛线 发表于 2024-8-18 20:20:33

wc 牛逼啊技术大佬

阿库喵 发表于 2024-8-19 01:05:46

不明觉厉!

Octavus 发表于 2024-8-19 08:35:54

抗锯齿util{:4_86:}

老魂滚动环 发表于 2024-8-19 09:15:58

有个问题,我200%进游戏这个选项框大的屏幕都装不下,就显示了大概三分之二?

ShioZakana 发表于 2024-8-19 14:49:33

老魂滚动环 发表于 2024-8-19 09:15
有个问题,我200%进游戏这个选项框大的屏幕都装不下,就显示了大概三分之二? ...

在修了,手头只有1080p的屏可能得等个一阵子才能调试好

ShioZakana 发表于 2024-8-19 16:36:42

老魂滚动环 发表于 2024-8-19 09:15
有个问题,我200%进游戏这个选项框大的屏幕都装不下,就显示了大概三分之二? ...

ok,新的热修复版本已上传

波涛 发表于 2024-8-21 08:40:16

{:5_134:}

无烟 发表于 2024-8-22 16:43:47

{:5_134:}

维尔拉 发表于 2024-8-22 19:48:11

这东西理论上0.96能不能用啊0.O

ShioZakana 发表于 2024-8-22 19:55:58

维尔拉 发表于 2024-8-22 19:48
这东西理论上0.96能不能用啊0.O

因为相关功能需要调用游戏内随版本变化较大的部分代码,出于安全考虑,该Mod是锁定版本使用的

维尔拉 发表于 2024-8-22 21:30:18

ShioZakana 发表于 2024-8-22 19:55
因为相关功能需要调用游戏内随版本变化较大的部分代码,出于安全考虑,该Mod是锁定版本使用的 ...

感谢解答

残年流雪 发表于 2024-8-25 15:23:01

晕晕,有无api文档

ShioZakana 发表于 2024-8-25 15:33:31

残年流雪 发表于 2024-8-25 15:23
晕晕,有无api文档

你可以把源文件当doc用,大部分复杂方法都包含注释,具体使用例可参考源文件里的战役文件

残年流雪 发表于 2024-8-25 15:44:35

ShioZakana 发表于 2024-8-25 15:33
你可以把源文件当doc用,大部分复杂方法都包含注释,具体使用例可参考源文件里的战役文件 ...

哦好的,我还没看源文件,有注释就方便了,谢谢回复

極光 发表于 2024-9-6 11:09:43

{:tieba_34:}{:tieba_34:}这是给34寸超大屏4K土豪专用的前置吧,,{:tieba_34:}

但是这么多功能居然只有2M,技术太牛啦{:tieba_43:}{:tieba_43:}{:tieba_43:}

喵喵锤大魔王 发表于 2024-9-11 21:19:35

核显使用这个会增强性能吗 还是导致帧数更低?

ShioZakana 发表于 2024-9-11 21:52:47

喵喵锤大魔王 发表于 2024-9-11 21:19
核显使用这个会增强性能吗 还是导致帧数更低?

当前阶段是主要面向创作者进行Mod开发的,单纯安装该Mod除了提供抗锯齿功能外并没有多少游玩影响。
对于同一种特效例如大量粒子,开发者使用该Mod进行创建时,对比原版调用存在压倒性的性能提升。
对于任何显卡而言只要设备支持则相关功能可用,否则自动禁用,也并不影响游玩

电子爬行生物 发表于 2024-9-12 10:42:08

555555555555

喵喵锤大魔王 发表于 2024-10-4 04:03:39

ShioZakana 发表于 2024-9-11 21:52
当前阶段是主要面向创作者进行Mod开发的,单纯安装该Mod除了提供抗锯齿功能外并没有多少游玩影响。
对于 ...

原来是这样

zender 发表于 2024-10-31 18:39:28

大佬有替换原版渲染逻辑优化渲染的想法吗

zender 发表于 2024-10-31 18:40:58

我有办法不改动文件,只变启动脚本替换掉原本的代码

ShioZakana 发表于 2024-10-31 20:46:55

zender 发表于 2024-10-31 18:39
大佬有替换原版渲染逻辑优化渲染的想法吗

你有兴趣的话可以去做一下,我目前还不打算对原版渲染相关代码做替换或者主动去更改之类的,只是做一个类似“功能/渲染拓展”的这种mod;并且原版渲染那块写的实在是一言难尽,实体的各种渲染还东一块西一块,看的头疼,完全没什么去折腾的欲望

叶影MASCARA 发表于 2024-10-31 20:59:58

ShioZakana 发表于 2024-8-18 17:15
目前版本大概是 就算装了GraphicsLib,导致必须关闭游戏本身的抗锯齿时,也能通过该Mod的内置抗锯齿功能 ...

有这好事,我夸夸用{:5_134:}
页: [1]
查看完整版本: [0.97a][C][前置] Box Util (2024.10.14)