fix(rendering): support Iris shader vertex formats#76
Conversation
|
现在我已掌握完整的变更情况,以下是审查结果。 代码审查摘要结论:评论(1 个警告,3 条建议) PR #76 —
|
| 文件 | 说明 |
|---|---|
module.explosion/gradle.properties |
新增内容末尾 |
module.font/gradle.properties |
新增内容末尾 |
module.main/gradle.properties |
新增内容末尾 |
module.multiblock/gradle.properties |
新增内容末尾 |
module.registrum/gradle.properties |
新增内容末尾 |
module.rendering/.../accesstransformer.cfg |
新增 AT 条目后(旧文件已有此问题) |
module.test/.../accesstransformer.cfg |
新文件(仅 1 行内容) |
gradle.properties 和 accesstransformer.cfg 虽然是 POSIX 严格性要求较低的场景,但保持一致性总是好的。尤其是 module.test/.../accesstransformer.cfg 是新文件,理应包含末尾换行符。
4. FullyBufferedBufferSource 中 renderType → bufferBuilder 字段访问的 Null 安全
-int compiledVertices = bufferBuilder.vertices * renderType.format().getVertexSize();
+int compiledVertices = bufferBuilder.vertices * bufferBuilder.format.getVertexSize();新代码改为直接从 bufferBuilder.format 读取。这是正确的——上传时应使用 BufferBuilder 当前的顶点格式(Iris 可能已改写)。但需要确认 bufferBuilder.format 在任何路径中都不会为 null。BufferBuilder 初始化后 format 字段可能是 null 直到 begin() 被调用。不过从 bufferBuilders.get(renderType) 取出的 builder 应该已经被 begin() 过了——建议确认调用路径保证此不变式。
✅ 看起来不错
- IrisSupport 状态栈设计清晰:
Stack<IrisState>+push/pop模式正确,保存和恢复isRenderingLevel与skipExtension两个字段,保证了RebuildTask.run()对 Iris 状态的修改不会泄漏到后续帧。 RebuildTask改为public:必要的可见性提升——Mixin 目标类需要可访问。✅- 条件式 run config 重构:
module.gradle中把硬编码的 run config 提取为anvillib.needRunConfig.*属性驱动模式,是合理的架构改进。新增的clientIrisWorkaround和clientRenderDocIrisWorkaround跑配置添加了neoforge.disableGlValidation=true(Iris 兼容的常见需求),方向正确。 CachedBlockEntityRenderingPipelineMixin保持注册:旧的 Iris mixin 未被删除或破坏。- AT 条目最小化:只暴露了
BufferBuilder.format和BufferBuilder.mode两个字段,没有过度暴露 API。 - Mixin 插件的条件注册正确:
ALRIntegrationCompatMixinPlugin中RebuildTaskMixin被正确标记为isPresent("iris")条件,不会在无 Iris 时加载。 - 测试用的 AT 文件:
module.test新增 AT 暴露BlockModelRenderState.renderType,是正确的测试基础设施。
关于 scope 纯净度
PR 标题为 fix(rendering): support Iris shader vertex formats,但包含了较大的 module.gradle 重构(run config 条件化)和 7 个模块的 gradle.properties 变更。这些是安全的基础设施变更——module.gradle 的重构直接支撑了 clientIrisWorkaround 和 clientRenderDocIrisWorkaround 两个新 run config 的添加,而 gradle.properties 只是为性质变更提供属性开关。不属于 scope 污染。
总体评价: 结构清晰,改动聚焦,无严重逻辑错误。建议处理 EOF 换行符和 import 废弃问题后合并。
🌿 Roseau API Breaking Change Report
|
Reason: Security scan — [MEDIUM] Variation selector characters detected: Content contains Unicode variation selectors (VS1-256). These are commonly used in emoji sequences but may indicate steganographic encoding or obfuscation Reply |
|
以下是 PR #76 的代码审查报告。 代码审查摘要结论:评论(1 个问题,1 条建议,无阻塞性严重问题) 🔴 关键无。
|
|
现在我已经全面了解了改动范围,以下是审查意见。 代码审查摘要:PR #76 — Iris shader vertex format 兼容性结论:评论(无阻塞性问题,以下为可选的改进建议) 📋 文件概览
🟢 主要改动
|
|
Raw diff analysis is complete. Here is my review: 代码审查摘要 — PR #76结论:请求更改(2 个需关注项,2 条建议) 🔴 关键
|
🌿 Roseau API Breaking Change Report
|
停止审查PR #76 已 closed(已关闭)。根据审查流程的步骤 0:
因此我不会执行审查分析,也不会在 PR 上发布任何评论。 |
Summary
BufferBuilderGL_MAX_LABEL_LENGTHwhenGL_KHR_debugis availableTesting
.\gradlew.bat test --console=plaingit diff --check upstream/dev/26.1...HEAD