• 快速浏览Silverlight3 Beta:当HLSL遇上Silverlight


          HLSL 高级着色器语言(High Level Shader Language,简称HLSL),由微软拥
    有及开发的一种语言,只能供微软的Direct3D使用。 HLSL是微软抗衡GLSL的产品,
    时不能与OpenGL标准兼容。他跟Nvidia的Cg非常相似。

         看了上面的几行话,可能大家还不是很清楚这个东西与当前的Silverlight的关系。
    其实在园子里的兄弟发过这篇文章,介绍“silverlight 3滤镜效果”。

         而其在源码中所使用的.ps文件(注:这里不是powershell呀),应该就是使用这种语
    言编译出来的,源文件貌似使用fx作为扩展名,而这种语言的入门教程可以从这里下载:)
     

         我是在看 mtaulty的BLOG时看到相关滤镜的演示效果的,呵呵:)

       

         源码下载地址:http://mtaulty.com/downloads/Silverlight3/source/Mix09.zip

         一开始我还天真的认为silverlight真的支持只有WPF才有的那类“水波纹”效果。因为
    演示效果确实很“震撼”。

         直到开始写一个相应的“水波纹”示例时,才发现在相应的RippleEffect.cs文件中有这
    样一行,即:

    static RippleEffectSample()
    {
         pixelShader 
    = new PixelShader();
         pixelShader.UriSource 
    = new Uri("RippleEffect;component/Shaders/Ripple.fx", UriKind.Relative);
    }

         而打开Ripple.fx文件之后是“二进制代码”,看来这种滤镜效果是一种变通的实现方式了,
    与我一开始想的以C#方式实现的滤镜代码看来是南辕北辙,呵呵。不过好在实现的效果还是很
    不错的,基本上运行很流畅,算得上是一个缩了水的“水波纹”吧:)


         另外就是其所实现的ShaderEffect接口(位于System.Windows.Media.Effects),
    因为任何一种图形效果都是从这个抽象类继承实现的。

         看来以后在视觉效果上silverlight可能会集成更多的.ps文件(只要在项目中引用它即可,
    fx文件则可在编译后被排除在外)。集成ps的好处一是引用方便,二是减小xap包的体积。而滤
    镜开发这方面的工作目前来看还是交给微软的开发人员了,呵呵:)

         参照Mix09.zip所写的“水波纹”效果:

     


         好了,今天的内容就先到这里了。

         参照Mix09.zip所写的“水波纹”源码.

         注:相关PS的Build Action 以"Resource"方式。图片以“Content”方式编译。

     

        原文链接:http://www.cnblogs.com/daizhj/archive/2009/04/01/1427189.html

        作者: daizhj, 代震军

        Tags: silverlight,3 beta,HLSL,滤镜,水波纹,ripple
        
        网址:
    http://daizhj.cnblogs.com/  


       

     

  • 相关阅读:
    洛谷 P1508 Likecloud-吃、吃、吃
    Codevs 1158 尼克的任务
    2017.10.6 国庆清北 D6T2 同余方程组
    2017.10.6 国庆清北 D6T1 排序
    2017.10.3 国庆清北 D3T3 解迷游戏
    2017.10.3 国庆清北 D3T2 公交车
    2017.10.3 国庆清北 D3T1 括号序列
    2017.10.4 国庆清北 D4T1 财富
    2017.10.7 国庆清北 D7T2 第k大区间
    2017.10.7 国庆清北 D7T1 计数
  • 原文地址:https://www.cnblogs.com/daizhj/p/1427189.html
Copyright © 2020-2023  润新知