[Feature Request] 材质包系统支持自定义 Shader 以实现逐 Note 特效
enhancementmight-be-breaking
## [Feature Request] 材质包系统支持自定义 Shader 以实现逐 Note 特效
### 问题描述
目前的渲染架构中,`Effect` 系统主要基于全屏后处理。虽然能实现优秀的全局滤镜,但难以实现**基于单个音符**的视觉表现,例如:
* 每一个音符独立的顶点变换(如 3D 旋转、摆动、甚至像水波纹一样的扭曲)。
* 针对特定音符材质的特殊片元效果(如流光、溶解、自定义遮罩)。
### 建议方案
建议在**材质包系统**中增加对**自定义 Shader** 的支持。
1. **配置扩展**:在材质包的 `info.yml` 或配置文件中,允许用户定义 `note_shader` 路径。
2. **渲染管线介入**:允许加载并切换到用户自定义的材质(Material),而不是强制使用默认渲染器。
3. **参数注入**:在绘制时,将 `uTime` 或音符相关的坐标信息传入顶点着色器。
### 预期应用场景
* **动态皮肤**:音符可以带有水波纹、像素化或动态呼吸灯效果,且不影响判定线和背景。
* **3D 演出**:通过 Vertex Shader 实现音符在 Z 轴的位移或旋转,增强视觉深度。
### 不影响 Gameplay
该功能仅作用于**渲染层**,与核心判定逻辑解耦:
* **逻辑与表现分离**:Shader 的变换完全发生在 GPU 渲染阶段,不改变 CPU 中音符的判定位置、时间轴或物理坐标。
* **判定公平性**:即便音符通过 Vertex Shader 产生了视觉上的扭曲或位移,其逻辑判定点依然保持在原生坐标。这确保了特效在提升表现力的同时,不会对玩家的打歌体验和判定结果产生任何实质性影响。
关闭于 2026-04-24 2 条评论