渗色——消除透明度问题
对于图形美工来说,最大的挑战之一是预估在哪里使用纹理。由于Alpha通道在基本RGB颜色信息的基础上提供了一层透明度信息,当在屏幕上渲染纹理时通常会对其进行过滤和处理。这通常意味着在美工绘制纹理时即使像素由于Alpha图层显示为透明,该像素仍将具有需要处理的RGB值。当由于缩放、移动或光栅化而必须采样纹理而不是直接显示纹理时,可以通过插值将多个纹理像素的RGB值组合在一起以生成屏幕上像素的值。在应用Alpha之前,纹理图像的这些透明部分RGB值已包含在周围区域计算中,这会导致他们的“背景色”通过Alpha混合“渗入”到周围区域。
以下方程式显示了如何在多个纹理上进行纹理采样的粗略近似值,其中Ω是纹理的权重,而RGBA是一维矩阵,表示该位置处纹理RGBA值。
下一个方程式显示了Alpha混合方程式以及其他透明像素的RGB值如何计入屏幕输出。
常见的解决方案是让美工将其图像的颜色扩展到边框之外并进入透明区域。从技术上讲,这也是渗色现象,因此肯定是“扑朔迷离”的情况!这依旧有效的原因是,即使像素在执行过程中最终渗入周围区域时,Alpha通道仍被认为是透明的,但至少会渗出与基础图像相同的颜色,从而使周围区域具有适当的颜色。例如,如果你的纹理是一棵树,则大多数透明度都应具有很深的绿色值,这样叶子周围的区域在混合渲染过程中便会产生绿色的效果(给人一种运动幻觉的感觉),或者叶子周围有种模糊的“光环”。例如,如果在白天显示这棵树,你用蓝色值将其包裹,这是毫无意义的,因为树在夜间显示时,会在叶子上留下青绿色或青色的边缘。
下面斯坦福大学演讲用到的幻灯片很好的突出了这个问题。
渗色——消除透明度问题
对于图形美工来说,最大的挑战之一是预估在哪里使用纹理。由于Alpha通道在基本RGB颜色信息的基础上提供了一层透明度信息,当在屏幕上渲染纹理时通常会对其进行过滤和处理。这通常意味着在美工绘制纹理时即使像素由于Alpha图层显示为透明,该像素仍将具有需要处理的RGB值。当由于缩放、移动或光栅化而必须采样纹理而不是直接显示纹理时,可以通过插值将多个纹理像素的RGB值组合在一起以生成屏幕上像素的值。在应用Alpha之前,纹理图像的这些透明部分RGB值已包含在周围区域计算中,这会导致他们的“背景色”通过Alpha混合“渗入”到周围区域。
以下方程式显示了如何在多个纹理上进行纹理采样的粗略近似值,其中Ω是纹理的权重,而RGBA是一维矩阵,表示该位置处纹理RGBA值。
下一个方程式显示了Alpha混合方程式以及其他透明像素的RGB值如何计入屏幕输出。
常见的解决方案是让美工将其图像的颜色扩展到边框之外并进入透明区域。从技术上讲,这也是渗色现象,因此肯定是“扑朔迷离”的情况!这依旧有效的原因是,即使像素在执行过程中最终渗入周围区域时,Alpha通道仍被认为是透明的,但至少会渗出与基础图像相同的颜色,从而使周围区域具有适当的颜色。例如,如果你的纹理是一棵树,则大多数透明度都应具有很深的绿色值,这样叶子周围的区域在混合渲染过程中便会产生绿色的效果(给人一种运动幻觉的感觉),或者叶子周围有种模糊的“光环”。例如,如果在白天显示这棵树,你用蓝色值将其包裹,这是毫无意义的,因为树在夜间显示时,会在叶子上留下青绿色或青色的边缘。
下面斯坦福大学演讲用到的幻灯片很好的突出了这个问题。
举报