Godot中CanvasItem着色器编辑器正常但运行时异常的原因
问题原因分析
1. GPU像素对齐导致UV偏移被量化
你启用了GPU像素对齐,这个设置会强制将UV坐标对齐到像素网格,使得着色器中计算的平滑UV偏移被取整。原本的扭曲效果依赖连续的UV变化,但像素对齐会把这些变化“锁定”到离散的像素位置,导致运行时的扭曲幅度大幅降低,看起来只是小幅来回移动。而编辑器预览时,该设置可能未完全生效,因此能正常显示扭曲效果。
2. TIME缩放导致动画周期过长
代码中你将TIME除以100,使得sin函数的变化周期变为约3分14秒(完整周期为2π*100秒)。运行游戏的短时间内,sin值的变化范围极小,UV偏移的幅度自然也很小。而编辑器预览时,你可能停留了足够久的时间,或者编辑器的TIME更新逻辑让你看到了完整的动画效果,因此觉得显示正常。
补充:Control节点与窗口缩放的叠加影响
TextureRect作为Control的子节点,结合窗口2倍缩放的设置,会让UV坐标的单位长度对应更多的屏幕像素。再加上GPU像素对齐的量化作用,进一步放大了平滑偏移丢失的问题,加剧了运行时的显示异常。
内容的提问来源于stack exchange,提问作者Null Salad
相关产品推荐
相关产品推荐

