engine
engine copied to clipboard
Use Mask without modifying existing material
问题描述
当前 Mask 的实现,当设置 Renderer 的 maskInteraction 的时候,会修改 Renderer 的现有材质,对自定义 Shader 的使用有很大限制
重构目标
当一个 Renderer 需要 Mask 的时候,不论怎么设置 maskInteraction,都要保证其材质自身状态不被修改
实现思路
- 当 Renderer 设置 maskInteraction 的时候,仅记录状态,并不修改其材质
- 在渲染队列真正渲染的时候,如果需要触发 Mask,渲染当前 Renderer 前,临时修改材质状态,当渲染完后,立马还原,保证在其他地方的使用不受影响