我已经构建了一个Flex应用程序,它可以组合图像资源,颜色层,模糊等来生成图像(此应用程序生成了www.absolutdrinks.com中99%的饮料图像)。应用程序使用的效果之一是Flash应用置换贴图滤镜的功能,其中图像的x和y偏移由2D图像定义(红色通道中的sy x偏移和蓝色通道中的y偏移)。这用于获得放在饮料液体中的装饰物的膨胀。
我现在正在寻找一种方法来执行此图像生成服务器端(可能还在Silverlight应用程序中)。我可以看到重现Image生成应用程序的所有功能的方法,除了置换贴图过滤器。有没有办法通过Windows.Media命名空间中的控件执行此操作?如果没有:还有其他方法吗?
答案 0 :(得分:2)
您可以使用带有法线贴图的像素着色器来完成此操作。
Bump mapping in Silverlight 3 [更新:我已将此链接替换为指向archive.org版本。遗憾的是,archive.org没有存储源代码zip。]
Microsoft's documentation on pixel shaders可用。不幸的是,他们的示例链接似乎已经死了。
答案 1 :(得分:2)
不幸的是,在Silverlight和WPF中都没有DisplacementMap过滤器。你可以采用两种方式。
创建自定义像素着色器效果,并在其中实现置换算法。 Silverligth 3.0+和WPF都支持像素着色器。
使用WriteableBitmap访问像素,然后再实施算法。