首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Actionscript 3+ AGAL用于淡入透明平面的边缘

Actionscript 3+ AGAL用于淡入透明平面的边缘
EN

Stack Overflow用户
提问于 2013-05-17 10:55:10
回答 1查看 874关注 0票数 0

我在由2个三角形组成的简单Stage3D平面上显示2D内容。内容在BitmapData上绘制,并在重绘时作为纹理上传。我还有一个让整个容器透明的AGAL程序。

我想要做的是使用GPU来给容器的边缘“淡入透明”的效果,以便与另一个容器很好地融合。也使用程序常量来控制淡入淡出的边缘。

当前使用此着色器代码:

顶点汇编器:

代码语言:javascript
复制
"m44 op, va0, vc0 \n" + 
"mov v0, va0 \n" + // tell fragment shader about XYZ
"mov v1, va1 \n" + // tell fragment shader about UV
"mov v2, va2\n";   // tell fragment shader about RGBA

片段汇编器:

代码语言:javascript
复制
"tex ft0, v1, fs0 <2d,clamp,linear> \n" + 
"mul ft0.a, ft0.a, fc0.x\n" + // manage alpha value that is set as program constant
"mov oc, ft0 \n"; // move this value to the output color

如有任何帮助或提示,我们将非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-06 09:28:02

透明度是非常简单的,特别是在您提供的简单示例中。在这种情况下,您要做的是使用UV坐标创建alpha遮罩。由于UV从0到1变化,一种简单方法是,在片段程序中:

代码语言:javascript
复制
//assume [0.5, 2.0, 1.0, 10.0] is in fragment constant 0
sub ft1.xy, va1.xy, fc0.xx  //subtract 0.5 from UV, and store in temporary register 1
mul ft1.xy, ft1.xy, fc0.yy  //multiply UV by 2.0, UV now scaled from -1-to-0-to-1
abs ft1.xy, ft1.xy  //UV now scaled from 1-to-0-to-1
sub ft1.xy, fc0.zz, ft1.xy  //UV now scaled from 0-to-1-to-0
pow ft1.xy, ft1.xy, fc0.ww  //UV has been turned into alpha, with fade controlled by fc0.w
mul ft1.a, ft1.x, ft1.y  //combine U and V alpha into a single alpha value
mul ft0.a, ft0.a, ft1.a  //combine UV-based alpha with existing alpha

另外,别忘了在你的context3d上启用透明度,如下所示:

代码语言:javascript
复制
if(transparent)
    context3d.setBlendFactors(Context3DBlendFactor.SOURCE_ALPHA, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA);
else
    context3d.setBlendFactors(Context3DBlendFactor.ONE, Context3DBlendFactor.ZERO);

否则,您的透明像素将无法正确混合。

最后一个警告。如果计划将透明位图重叠到场景中的任何其他对象上,则绝对必须从摄影机以逆z顺序渲染场景中的对象。透明度是通过在缓冲区中已经渲染的像素之上渲染像素来处理的。如果首先渲染一个接近的透明对象,然后尝试在其后面渲染一个对象,则z缓冲区检查将阻止绘制更远的对象,并且您将无法获得所需的透明外观。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16600691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档