0

我正在尝试创建一个系统,在该系统中,我可以使用第二个纹理作为 alpha 蒙版来导致纹理淡出。

我在第 0 阶段加载颜色纹理,在第 1 阶段加载遮罩纹理。我可以让它们正确上演,以便 alpha 值基于遮罩,并且我可以使用滑动 D3DTA_CONSTANT 让淡入淡出。问题是我试图创建一个我似乎无法摆脱可用 D3DTA 的特定行为。

基本上我想要两个值,一个叫做“step”,另一个叫做“vague”。'vague' 值将在整个效果中保持不变,'step' 参数将从 0 开始并在几帧内增加到 255。我正在尝试创建以下行为:

*掩码-alpha值低于“step”值的纹素以零alpha绘制。

*蒙版-alpha 值高于“step”+“vague”的纹素使用 255 alpha 绘制。

*蒙版-alpha值在'step'和('step' + 'vague')之间的Texels使用alpha缩放比例绘制,使得alpha'step'为零,alpha('step' + 'vague')绘制最大阿尔法。

这是一个显示函数的图表,因为很难用语言来解释:

http://imageshack.us/photo/my-images/834/desiredalphamaskfunctio.png/

我遇到的主要问题是我无法弄清楚如何配置纹理阶段,以便中间范围(在 step 和 step + vague 之间)“拉伸”其值在 0 到 255 之间。没有直接的除法或乘法,只是调制,所以我不能以明显的方式做到这一点,但我很确定有一种我还没有想到的方法。(我对 D3DTOP_MULTIPLYADD 抱有希望,但结果证明“乘法”只是另一种调制。)

有人有想法么?

提前感谢您的任何建议。

4

0 回答 0