在BlinkScript节点的Kernel Parameters标签页添加各类属性控件

这是较为基本的BlinkScript脚本语言,用于在Kernel Parameters标签页添加所需的属性控件。以下笔者对脚本语言进行了详细解说,如有错误请指正。


kernel KnobsKernel : ImageComputationKernel<eComponentWise>
//将代码命名为KnobsKernel,并指定Kernel的类型为ImageComputationKernel<eComponentWise>,即,该类型将作用于图像的全部组成部分(RGB和Alpha通道),目前,BlinkScripts只能针对于图像的RGBA通道,如果需要将BlinkScripts运用于图像的其他通道则需要使用Shuffle节点进行转换。Kernel Granularity(粒度:表现一个事物或活动特征的相对大小/规模和细节层次等)含有eComponentWise和ePixelWise两种形式,eComponentWise是指Kernel在每次执行过程中对图像的某一部分进行运算;ePixelWise是指Kernel在每次执行过程中对图像的一个像素进行运算。//

{
  Image<eRead> src;
  Image<eWrite> dst;
//使用“src”定义输入端,使用“dst”定义输出端//

param:
  float single_float;
  float2 xy;
  float3 xyz;
  float4 acolor;
  float multi_float[5];
  float3x3 array3x3;
  float4x4 array4x4;
  int single_int;
  int multi_int[4];
  bool default_true_knob;
  bool default_false_knob;
//定义param可见变量。Kernel的可见变量可以含有param和local两种可见级别。param可见变量类似于C++中的public变量,可以在Kermel外部进行访问;local可见变量类似于C++中的private变量,仅可在Kernel内部进行访问//
//bool是布尔值变量,它有两个值,一个是真,一个为假。在这里bool变量用于建立选框控件。//

local:
  void define() {
    defineParam(single_float, "SingleFloat", 4.0f); 
    defineParam(xy, "XY"); 
    defineParam(xyz, "XYZ"); 
    defineParam(acolor, "AColor"); 
    defineParam(multi_float, "MultiFloat"); 
    defineParam(array3x3, "Array3x3"); 
    defineParam(array4x4, "Array4x4"); 
    defineParam(single_int, "SingleInt", 4); 
    defineParam(multi_int, "MultiInt"); 
    defineParam(default_true_knob, "DefaultTrue", true); 
    defineParam(default_false_knob, "DefaultFalse", false); 
  }
//定义Kernel Parameters标签页添加各类属性控件,大写字母开头的名称即为控件名//

  void init() {
  }
  void process() { //void process()语句是指在迭代空间进行重复运算//
    dst() = src();//拷贝src输入端到dst输出端//
  }
};

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页