Graphics 尝试使用IDirect3D9#SetTextRestate找出特定的alpha掩码应用程序

Graphics 尝试使用IDirect3D9#SetTextRestate找出特定的alpha掩码应用程序,graphics,directx-9,alpha-transparency,Graphics,Directx 9,Alpha Transparency,我正在尝试创建一个系统,在这个系统中,我可以使用第二个纹理作为alpha遮罩在纹理上造成淡出 我在第0阶段加载颜色纹理,在第1阶段加载遮罩纹理。我可以让他们正确的阶段,使阿尔法值是基于面具,我可以得到淡入淡出使用滑动D3DTA_常数。问题是,我试图创建一个特定的行为,而我似乎无法从可用的D3DTA中获得 基本上我想有两个值,一个叫做“步骤”,另一个叫做“模糊”。“vague”值将在整个效果中保持不变,“step”参数将从0开始,并在几帧内增加到255。我正在尝试创建以下行为: *遮罩alpha值

我正在尝试创建一个系统,在这个系统中,我可以使用第二个纹理作为alpha遮罩在纹理上造成淡出

我在第0阶段加载颜色纹理,在第1阶段加载遮罩纹理。我可以让他们正确的阶段,使阿尔法值是基于面具,我可以得到淡入淡出使用滑动D3DTA_常数。问题是,我试图创建一个特定的行为,而我似乎无法从可用的D3DTA中获得

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

*遮罩alpha值低于“阶跃”值的texel以零alpha绘制

*遮罩alpha值高于“step”+“vague”的纹理以255 alpha绘制

*遮罩alpha值在“阶跃”和(“阶跃”+“模糊”)之间的texel使用alpha缩放绘制,以便alpha“阶跃”为零alpha,alpha(“阶跃”+“模糊”)使用最大alpha绘制

这是一张显示函数的图表,因为很难用文字来解释:

我遇到的主要问题是,我不知道如何配置纹理阶段,使中间范围(步长和步长之间+模糊)在0和255之间“拉伸”其值。没有直接的除法或乘法,只有调制,所以我不能用显而易见的方法来做,但我很确定有一种方法我还没有想到。(我对D3DTOP_MULTIPLYADD抱有一些希望,但“multiply”结果只是另一种调制方式。)

有人有什么想法吗


提前感谢您的建议。

您使用纹理阶段的原因是什么?上个世纪就这样了。你们试过像素着色器吗?有人在M$论坛上给我发了一些HLSL链接。我现在正在查。泰铢:)