zoukankan      html  css  js  c++  java
  • 使用Pixel Bender Toolkit制作特效——给过滤器增加参数(Part 3)

    用户级别

    初级

    必需产品

    范例文件

    其他要求

    Pixel Bender Toolkit

    在本文中,你将会学到如何给内核添加参数,这样能够在过滤器运行的时候动态地调整渲染效果。你也会学到如何使用Pixel Bender的vector类型让数学计算更加方便快捷。

    这是本系列的第三部分,本系列是讲述如何使用Pixel Bender Toolkit在位图上渲染视觉效果的教程。在前一节中,你学会了如何操控预览窗口中图像的红绿蓝通道。本节中你会学到如何通过另外一种更加强有力的方法来控制特效:参数法。给过滤器添加元数据和参数之后,你可以通过一个接口来控制过滤器渲染出的效果。

    设置文件

    如果你一直遵循本系列教程,那么你可以在之前的文件上进行修改。否则的话,下载提供的样例文件,在Pixel Bender IDE中打开Exercise3FilterA.pbk。

    在上一节中,你编写的vintage tone过滤器应该是类似于这样:

    <languageVersion : 1.0;> kernel Part3Filter < namespace : "com.adobe.devnet.pixelbender"; vendor : "Kevin's Filter Factory"; version : 1; description : "Playing around with pixels"; > { input image4 src; output pixel4 dst; void evaluatePixel() { dst = sampleNearest(src,outCoord()); dst.r += 0.5; dst.b -= 0.4; dst.g -= 0.1; } }

    添加浮点参数

    既然你已经载入代码(可能是你在第二部分创建的或者是样例文件中的),你现在可以修改代码,加入参数了。

    按照如下步骤,将参数加入到过滤器中:

    1. 找到如下代码:
    output pixel4 dst;
    1. 在这行之后加入如下代码:
    parameter float amount;
    1. 点击Run按钮,运行过滤器,在右边的面板上会出现一个滑动条(见图1)。
    2. 滑动游标来测试。
    编辑代码之后,在右边面板上显示出滑动条
    图1.编辑代码之后,在右边面板上显示出滑动条

    注意图像并没有发生改变。虽然右边出现了滑动条,但是游标值还没有任何处理。你可以在下一节中学会如何使用这个值。

    将参数合并到过滤器

    现在你已经加入了一个滑动条,下面你将学会如何使用滑动条来调整效果。按照如下步骤:

    1. 找到如下代码:
    dst.r += 0.5;
    1. 将代码改成如下形式:
    dst.r += (0.5 * amount);
    1. 点击Run按钮,运行过滤器。
    2. 这时,预览窗口的图像会发生改变。移动游标,看看游标值是如何影响图像的。
    3. Try modulating the other channels by changing the amount parameter. Make the following changes to make the evaluatePixel function look like this:
    dst = sampleNearest(src,outCoord()); dst.r += (0.5*amount); dst.b -= (0.4*amount); dst.g -= (0.1*amount);
    1. 点击Run按钮,运行过滤器。

    随着你移动右边面板上的滑动条,预览窗口的图像会非常明显地随之而变。因为所有的三个色彩通道都被同时修改,当游标移到最左边的时候,图像没有发生改变。当游标移到最右边时,过滤器渲染的效果最大化。

    设置参数元数据

    在本节中,你会学到如何给你添加的过滤器参数设置元数据。代码的完整版本在样例文件Excel3FilterE.pbk中。按照如下步骤:

    1. 找到这行代码:
    parameter float amount;
    1. 添加如下代码,修改浮点参数的声明:
    parameter float amount < minValue: -1.0; maxValue: 1.0; defaultValue: 0.0; >;
    1. 点击Run按钮,运行过滤器。

      滑动条游标的默认位置现在是在中间了。如果移动游标到左侧,你可以看到过滤器的效果被削弱了。而移动到右侧的时候,过滤器渲染的效果最大化。

      注意: 添加元数据不是必须的;没有元数据也是可以的。但是,如果你不设置元数据,每个应用程序会使用它自己的缺省的最大,最小和默认值。因此,最好还是设置参数的元数据来控制参数以及获得一致的结果。

    2. 选择File > Export Kernel Filter for Flash Player存储过滤器。
    3. 在对话框中,将名字命名为Exercise3Filter.pbj,然后保存在桌面上的pixel_bender文件夹。

    使用vector简化数学运算

    本节中,你会学习到如何在过滤器中使用vector。在Pixel Bender Toolkit中添加vector是一件非常容易的事情:

    1. 找到如下代码:
    dst.r += (0.5*amount); dst.b -= (0.4*amount); dst.g -= (0.1*amount);
    1. 将上述三行代码用如下代码替换:
    dst += float4(0.5*amount, -0.4*amount, -0.1*amount, 0.0);
    1. 点击Run按钮,运行过滤器。修改过的过滤器渲染的效果和之前一样。

    除了分别修改dst的三个值之外,你可以创建一个新的vector,然后将其和dst相加。新vector最后的0.0是因为做算术运算的时候,vector的元素个数是必须相等的。你也注意到了,这里输入的是0.0而不是0。Pixel Bender不会自动进行类型转换,你必须使用正确的类型,否则的话会报错。

    简化数学运算

    在这一节中,你会学到如何使得等式中的数学运算更加简洁和可控。按照如下步骤:

    1. 在代码窗口中找到这一行代码:
    dst += float4(0.5*amount, -0.4*amount, -0.1*amount, 0.0);
    1. 将代码修改成:
    dst += float4(0.5, -0.4, -0.1, 0.0) * amount;
    1. 点击Run按钮,运行过滤器。
    2. 当预览图片的时候,修改过的过滤器渲染的效果和之前一样。
    3. 保存过滤器。

    注意: 将vector和一个数n相乘等于将这个vector乘以一个每个元素都为n的vector。

    下一步阅读方向

    在熟悉了Pixel Bender接口之后,继续学习本系列的第四部分,在那里你会学到如何编写代码在图像中进行多像素取样。

  • 相关阅读:
    vim代码对齐
    在liunx中,快速查找到以前使用过的命令行
    linux文件权限与目录设置
    ASP常用代码
    存储过程
    WebService
    SNS
    浪曦博客系统
    SQL事件探查器与索引优化向导
    光盘AJAX
  • 原文地址:https://www.cnblogs.com/chenhongyu/p/3313823.html
Copyright © 2011-2022 走看看