一、认识自定义函数节点
Unity提供的默认节点不能够覆盖我们所有的需求,所以它扩展性地提供了自定义函数节点,通过该节点,我们可以自由编写HLSL代码来满足自己的需求;其中,代码形式包含字符串模式和HLSL文本模式;
首先,我们需要像创建其它节点一样创建一个自定义函数节点,默认情况下,新创建的自定义函数节点没有任何输入和输出端口;我们可以通过齿轮icon来打开自定义端口菜单和自定义函数菜单;这两个菜单也就是自定义函数节点的两个核心部分了;
二、自定义端口菜单
端口分为输入端口和输出端口,分别位于两个不同的菜单列表中;
它提供了五种端口的操作
-
添加:
-
删除:
-
重命名端口:端口的名称,它主要用于字符串模式中,我们在表达式中直接将端口名视为变量名;
-
设置端口类型:
-
排序:排序主要用于HLSL模式中的函数参数传递,函数的参数需要和列表顺序一一对应起来,而与函数名称无关;
三、自定义函数菜单
自定义函数一共有两种模式,字符串模式和文件模式;
字符串模式
如下,在type中选择字符串模式后,会有Name和Body选项,Name定义了生成的函数名称,Body则是表达式的主体部分;
生成的代码将如下:
文件模式
文件模式和编写Cg/HLSL的shader函数类似,定义一个函数,它的参数列表中包含一系列输入和输出参数,分别和自定义函数节点中的端口对应起来,其中输出端口相应的参数需要添加out关键字;
还需要特别注意的一点:函数名要加入_float或_half后缀,如上面的Name中是MyFunction,在代码中的函数名为MyFunction_float;