- Introduced `test_edge_depth.py` to validate the functionality of edge depth extension, ensuring core alpha preservation, proper depth handling, and edge padding behavior. - Created `test_empty_image_edits.py` to verify the behavior of image edits in Blender, focusing on shared edits, preservation of image properties, and handling of failed operations. - Developed `test_material_view_adaptation.py` to test material adaptation preferences, ensuring color space and alpha settings are correctly applied and preserved across various scenarios.
109 lines
5.2 KiB
Markdown
109 lines
5.2 KiB
Markdown
## ADDED Requirements
|
||
|
||
### Requirement: Preferences expose material view adaptation
|
||
|
||
AnyImage SHALL 在 Preferences 的 Shading 分组提供 `Adapt to Scene View Transform` 布尔选项,默认关闭。扩展设置及读取入口 SHALL 位于 `preferences.py`,并通过 `addon_preferences()` 读取。
|
||
|
||
#### Scenario: Preferences use the default
|
||
|
||
- **WHEN** 用户尚未设置该选项或读取不到扩展偏好
|
||
- **THEN** 材质颜色贴图 SHALL 使用关闭适配的行为
|
||
|
||
### Requirement: Material color space determines alpha presentation
|
||
|
||
开启适配时,AnyImage SHALL 按当前场景 View Transform 选择既有映射中的 inverse 颜色空间,并使用 STRAIGHT。关闭适配时 SHALL 使用 sRGB + PREMUL。实际回退为 sRGB 时 SHALL 使用 PREMUL,并保持 Preferences 中的适配开关原值。
|
||
|
||
#### Scenario: A supported view is adapted
|
||
|
||
- **WHEN** 适配开启,当前场景为 AgX,且 `AgX Base sRGB` 可用
|
||
- **THEN** 材质 Color Image SHALL 使用 `AgX Base sRGB` + STRAIGHT
|
||
|
||
#### Scenario: Other mapped views are adapted
|
||
|
||
- **WHEN** 适配开启,场景使用 ACES 1.3、ACES 2.0、Filmic 或 Khronos PBR Neutral,且对应空间可用
|
||
- **THEN** Color Image SHALL 分别使用 `ACES 1.3 sRGB`、`ACES 2.0 sRGB`、`Filmic sRGB` 或 `Khronos PBR Neutral sRGB`
|
||
- **AND** Alpha 模式 SHALL 为 STRAIGHT
|
||
|
||
#### Scenario: Adaptation is disabled
|
||
|
||
- **WHEN** 适配关闭,创建任意受支持入口的材质
|
||
- **THEN** Color Image SHALL 使用 sRGB + PREMUL
|
||
|
||
#### Scenario: The scene resolves to sRGB
|
||
|
||
- **WHEN** 适配开启,但场景为 Standard、视图未匹配、场景不可用或 inverse 空间不被支持
|
||
- **THEN** Color Image SHALL 使用 sRGB + PREMUL
|
||
|
||
#### Scenario: The fallback color space is unavailable
|
||
|
||
- **WHEN** 所需颜色空间及 sRGB 均无法应用
|
||
- **THEN** 配置 SHALL 明确报错并保留贴图之前的有效配置
|
||
- **AND** Preferences 中的适配开关 SHALL 保持原值
|
||
|
||
### Requirement: Material entry points apply the same policy
|
||
|
||
AnyImage SHALL 在 Plane、Depth Plane、Cutout 和剪贴板 Mesh 材质创建时统一配置 Color Image。最终模式 SHALL 在后续绑定及交付步骤中保留。Depth 与 Normal SHALL 保留各自的数据解释约定。
|
||
|
||
#### Scenario: A material is created from an edited color result
|
||
|
||
- **WHEN** 一个 PREMUL 编辑结果进入开启适配的 inverse 材质
|
||
- **THEN** 最终材质 Color Image SHALL 为 STRAIGHT
|
||
- **AND** 材质交付后 SHALL 保留该模式
|
||
|
||
#### Scenario: Shadeless material is created
|
||
|
||
- **WHEN** 用户通过支持 Shadeless 的入口创建材质
|
||
- **THEN** Color Image SHALL 应用相同颜色空间与 Alpha 配对策略
|
||
|
||
### Requirement: Configuration preserves business pixels and source ownership
|
||
|
||
材质 Color 配置 SHALL 保留原有业务 RGB、Alpha 和完全透明区域 RGB,并在 Pack、保存重载和再次编辑后保持可读取。配置 SHALL 作用于材质专用 Color Image 或独立 Color 副本。
|
||
|
||
#### Scenario: The source image has other users
|
||
|
||
- **WHEN** 源 Image 同时被其他对象引用
|
||
- **THEN** 配置 SHALL 作用于独立 Color 结果
|
||
- **AND** 原 Image 的颜色空间、Alpha 模式和业务像素 SHALL 保持原值
|
||
|
||
#### Scenario: A color result is packed and reopened
|
||
|
||
- **WHEN** byte、float、generated、dirty 或 packed 来源的 Color 完成配置并保存重载
|
||
- **THEN** 业务 RGB/Alpha SHALL 在既有编码精度内保留
|
||
- **AND** 结果 SHALL 保持所选颜色空间和 Alpha 模式
|
||
|
||
### Requirement: Preferences exclusively control material adaptation
|
||
|
||
Preferences SHALL 是适配开关的唯一控制来源。新建材质 SHALL 读取当前偏好;已创建的材质颜色贴图 SHALL 保留原配置。创建操作和颜色空间解析 SHALL 保持偏好值。
|
||
|
||
#### Scenario: The preference changes
|
||
|
||
- **WHEN** 用户在 Preferences 开启或关闭适配
|
||
- **THEN** AnyImage 已创建的材质颜色贴图 SHALL 保持原颜色空间、Alpha 模式和像素
|
||
- **AND** 后续新建材质 SHALL 使用新的偏好设置
|
||
|
||
#### Scenario: A new material shares its source with an existing material
|
||
|
||
- **WHEN** 切换偏好后,使用已被现有材质引用的源 Image 创建新材质
|
||
- **THEN** 新材质 SHALL 使用独立 Color Image 并应用当前偏好
|
||
- **AND** 已有材质的贴图及其配置 SHALL 保持原值
|
||
|
||
#### Scenario: A material is created or an inverse space is unavailable
|
||
|
||
- **WHEN** 创建材质或颜色空间解析发生回退
|
||
- **THEN** Preferences 中的适配开关 SHALL 保持操作前的值
|
||
|
||
### Requirement: Adaptation affects only material color textures
|
||
|
||
本选项 SHALL 仅配置 AnyImage 材质的 Color 贴图。Empty、普通图片编辑结果、Depth、Normal 和非目标材质 SHALL 保持原有行为与数据。
|
||
|
||
#### Scenario: A material color image is shared with an Empty
|
||
|
||
- **WHEN** 新建材质的源 Color Image 同时被 Empty 引用
|
||
- **THEN** 系统 SHALL 为材质 Color 创建独立副本并重新绑定目标节点
|
||
- **AND** Empty 引用的原 Image 的颜色空间、Alpha 模式与业务像素 SHALL 保持原值
|
||
|
||
#### Scenario: Ordinary image editing runs with adaptation enabled
|
||
|
||
- **WHEN** 开启适配后执行 Mask、Frame、Rectify 或图片编辑 Job
|
||
- **THEN** 编辑结果 SHALL 沿用各自已有颜色空间与 Alpha 规则
|