Barotrauma 潜渊症

Barotrauma 潜渊症

42 个评价
[优化] 阴影剔除 [Optimizations] Shadow Culling [Оптимизации] отсечения по теням
2
   
奖励
收藏
已收藏
取消收藏
文件大小
发表于
更新日期
86.864 KB
12 月 10 日 上午 5:18
12 月 13 日 上午 2:16
14 项改动说明 ( 查看 )

订阅以下载
[优化] 阴影剔除 [Optimizations] Shadow Culling [Оптимизации] отсечения по теням

描述
介绍 | Introduction | Введение
渲染过程中会忽略被阴影遮挡的物品,显著减轻CPU和低配GPU负载,CPU性能开销约降低5%~15%,特别适合物品繁多的密室场景。

During rendering, items occluded by shadows are ignored, which significantly reduces the CPU and low‑end GPU workload. CPU performance overhead is lowered by approximately 5%–15%, making this especially suitable for cluttered room scenes with many objects.

В процессе рендеринга игнорируются объекты, перекрытые тенями, что значительно снижает нагрузку на процессор и маломощные видеокарты. Затраты производительности ЦП снижаются примерно на 5–15%, что особенно удобно для сцен с множеством предметов, например, в заполненных помещениях.



剔除 | Culling | Отсечение
五点采样,剔除中心、轴对齐包围盒四顶点都位于阴影中的物品,同时运用阴影预测手段来减少物体闪烁现象。

Five-point sampling is employed to cull objects whose center and all four vertices of the axis-aligned bounding box are located within shadowed areas, while shadow prediction is applied to reduce object flickering.

Используется пятиточечная выборка для отбраковки объектов, у которых центр и все четыре вершины выровненного по осям ограничивающего параллелепипеда (AABB) находятся в затенённых областях, а также применяется прогнозирование теней для уменьшения мерцания объектов.



优化细节 | Optimize details | Оптимизировать детали
  • stackalloc减轻GC压力。
  • 多核调度,同时支持8个逻辑核心
  • 引用结构体,避免创建副本。
  • 视窗内AABB相交测试获取凸包(会投射阴影的对象)。
  • 凸包预筛选,提前过滤阴影中的凸包,倍数级减少处理量。
  • 凸包阴影AABB缓存,用于与物品快速相交测试。
  • 不对视窗外的物品执行阴影剔除。
  • 有个点子灵光一闪,但我忘了。
  • stackalloc reduces GC pressure.
  • Multi-core scheduling, supporting up to 8 logical cores simultaneously.
  • Using ref structs to avoid copies.
  • Perform AABB intersection tests within the viewport to obtain convex hulls (objects that cast shadows).
  • Pre-filter convex hulls to exclude those in shadows early, reducing the processing load by multiples.
  • Caching convex hull shadow AABBs for fast intersection tests with items.
  • Shadow culling is not performed on items outside the viewport.
  • I had a spark of inspiration, but I forgot it.
  • stackalloc снижает нагрузку на сборщик мусора (GC).
  • Многопроцессорное планирование с одновременной поддержкой до 8 логических ядер.
  • Использование структур по ссылке (ref struct) для избежания копирования.
  • Тест пересечения AABB в пределах окна вида для получения выпуклых оболочек (объектов, отбрасывающих тени).
  • Предварительная фильтрация выпуклых оболочек для раннего исключения находящихся в тенях, что в разы снижает объем обработки.
  • Кэширование теневых AABB выпуклых оболочек для быстрого теста пересечения с объектами.
  • Отсечение по теням не выполняется для объектов вне окна вида.
  • Был проблеск идеи, но я о ней забыл.



控制台命令 | Console Commands | Консольные команды
  • shadowcullingtoggle 功能 开关阴影剔除
  • shadowcullingdebugonce 调试 执行一次阴影剔除
  • shadowcullingdebugdrawaabb 调试 绘制物品的AABB
  • shadowcullingdebuglog 调试 显示日志
  • shadowcullingtoggle Function Toggle shadow culling
  • shadowcullingdebugonce Debug Perform shadow culling once
  • shadowcullingdebugdrawaabb Debug Draw the AABB of items
  • shadowcullingdebuglog Debug Show logs
  • shadowcullingtoggle Функция Включение/отключение отсечения по теням
  • shadowcullingdebugonce Отладка Выполнить отсечение по теням один раз
  • shadowcullingdebugdrawaabb Отладка Отобразить AABB объектов
  • shadowcullingdebuglog Отладка Показать логи



Github[github.com]





仍在完善中 | WIP Stage | Находится в стадии разработки
当前的性能提升预计只发挥了不到30%,我将继续改良其剔除算法,希望能在12.21日前完成提升到70%。
The current performance improvement is estimated to be less than 30% utilized. I will continue to refine its culling algorithm, aiming to increase it to 70% by December 21st.
текущее повышение производительности оценивается менее чем в 30%. Я продолжу совершенствовать алгоритм отсечения, стремясь достичь 70% к 21 декабря.
14 条留言
Peter griffin 12 月 13 日 上午 7:04 
me when i see another optimisation mod :steamhappy:
Yinjie 12 月 13 日 上午 4:23 
非常好模组:steamthumbsup:
whosyourdaddy  [作者] 12 月 13 日 上午 1:35 
@WeirdRichter
Plug and Play, не нужно вводить команды. Установите Lua For Barotrauma , и мод автоматически вступит в силу при запуске.
WeirdRichter 12 月 13 日 上午 1:32 
Мод типа *plug and play*? Или надо команды вводить? Если да, то их надо вводить каждый раз загружая сохранение?
你好 12 月 12 日 下午 11:44 
3q
whosyourdaddy  [作者] 12 月 12 日 下午 11:32 
@你好 只要开启mod就有效,实在不确定的话控制台打shadowcullingdebugdrawaabb,有半透明的黄色框框出来就说明优化生效了。
whosyourdaddy  [作者] 12 月 12 日 下午 11:30 
更新汇总 | Update summary | Сводка обновлений
v1.4.0
- 阴影预测以减少物体闪烁
- Shadow prediction to reduce object flickering
- Прогнозирование теней для уменьшения мерцания объектов
v1.3.0
- 算法性能提升大概30%~60%
- The algorithm's performance has improved by approximately 30% to 60%
- Производительность алгоритма улучшилась примерно на 30% до 60%
Jade Phoenix 12 月 12 日 下午 7:19 
:Khappy:
raizadjam 12 月 12 日 上午 7:39 
👏
你好 12 月 12 日 上午 1:50 
Does this mod not work on other people's servers?