Reimplement negative shape cullface 重新实现负形剔除 - #4333
Conversation
QiuShui1012
commented
Aug 2, 2026
- 修改了约束仓角落的超限纹理,使其与其它超限方块同步
- 同步了中子辐照器的美术资源
Reason: script execution via -e/-c flag Reply |
Reason: script execution via -e/-c flag Reply |
代码审查摘要 — PR #4333操作: synchronize 核心变更: 重写负形剔除机制 —— 弃用旧的「模型 cullface 烘焙期剔除 + 自定义 🔴 关键(需确认后合并)
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 约束仓角落超限纹理与其它超限方块同步 | ✅ | confined_neutronium_ingot.json、confined_time_anvilon.json、confinement_chamber.json 等角落元素 #0→#1(transcendium_block_outline) |
| 中子辐照器美术资源同步 | ✅ | neutron_irradiator.json(#4→negative_matter_block_outline)、anvilon_irradiator_* 4 模型 + 8 个新 PNG |
| 重新实现负形剔除 | ✅ | NegativeShapeModelEventListener.java + BlockMixin 重写 + BlockStateBaseMixin + Sodium mixin + negative_matter_block.json 移除 6 处 cullface |
🧪 测试建议(手动渲染验证)
| 场景 | 验证点 | 优先级 |
|---|---|---|
| 两个同型负形方块相邻(如负物质块×2) | 共享面 rim 完整消失、无 z-fighting | 🔴 |
| 同族异型相邻(如约束仓×约束铁砧,布局不同) | 部分覆盖处 quad 切片正确、UV 无拉伸 | 🔴 |
| 堆叠两个 InfiniteCollector | 内部水平面是否被误渲染(BlockStateBaseMixin 短路问题) |
🟡 |
| 负形方块贴不透明方块,Sodium 开/关对比 | 两路径渲染一致性、无多余 overdraw | 🟡 |
| F3+T 资源重载后 | 剔除是否仍生效(EDGE_RECTANGLES 重建) | 🟡 |
| Iris+Sodium 组合启动 | mixin 应用无崩溃 | 🟡 |
结论: COMMENT — 架构设计清晰、声称全部落实,未发现可证实的关键缺陷;但「getQuads(null) 语义依赖」「skipRendering 无条件短路绕过原版剔除」「Sodium 与原版路径不一致」三点建议作者确认/补充说明后合入。
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/baked-model-wrapper-quad-filter-review.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
Reason: script execution via -e/-c flag Reply |
Reason: script execution via -e/-c flag Reply |
Reason: script execution via -e/-c flag Reply |
Reason: script execution via -e/-c flag Reply |
|
所有关键验证完成。汇总分析结果,输出审查意见: 代码审查摘要 — PR #4333操作: 变更机制解读负形剔除从旧的「VoxelShape 布尔运算 + OCCLUSION_CACHE ThreadLocal」方案重构为基于模型的边缘矩形系统:
已交叉验证:所有接入方块的模型确实使用 0.025/15.975 内缩约定(含 🔴 关键未发现必须阻塞合并的问题。
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 重新实现负形剔除 | ✅ | NegativeShapeModelEventListener(新)、BlockMixin 重写、BlockStateBaseMixin(新)、SodiumBlockOcclusionCacheMixin(新) |
| 约束仓角落超限纹理与其它超限方块同步 | ✅ | confinement_chamber.json、confined_time_anvilon.json(子模型继承)、3 方块接入 ITranscendiumBlock |
| 中子辐照器美术资源同步 | ✅ | anvilon_irradiator_{energy,mass,space,time}.json + 11 张新 PNG、neutron_irradiator.json 纹理 #4 指向 negative_matter_block_outline |
结论: COMMENT — 实现方案清晰、几何逻辑正确、纹理与注册链验证全部通过,未发现阻塞性问题。建议合入前重点验证 EDGE_RECTANGLES 的并发安全(低风险)。
🧪 测试建议
| 被测目标 | 推荐场景 | 优先级 |
|---|---|---|
| 方块物品模型(confinement_chamber / negative_matter_block / neutron_irradiator) | 物品栏/手持/掉落物形态检查外缘面是否完整 | 🔴 |
| 相邻同族方块剔除 | 2×2×2 堆叠约束仓、中子辐照器并排,检查共享面剔除与部分覆盖切片 | 🔴 |
| 与不透明方块相邻 | 负形方块紧贴普通方块,确认无 z-fighting/闪烁 | 🟡 |
| Sodium 0.9.1 环境 | 安装 Sodium 后重载资源包 + 断点重建,确认 shouldDrawSide 注入生效、无 mixin 崩溃 |
🟡 |
| 资源重载 | F3+T 连续重载数次,确认无并发异常(EDGE_RECTANGLES) | 🟢 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/baked-model-wrapper-quad-filter-review.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |