处理器函数(Processor functions)
依据着色器类型,不同的处理器函数可能会被选择性地重定义(overridden)。对于3D着色器和2D着色器其顶点函数,片元函数或者光函数可能会被重定义。而对于粒子着色器只有顶点函数可以被重定义。
顶点处理器函数(Vertex processor)(译者注:文中简称顶点函数)
在3D着色器和2D着色器中,每一个顶点都会调用一次顶点函数;而在粒子着色器中则是每一个粒子都会调用一次顶点函数。
顶点函数用于修正逐顶点信息(per-vertex information),这些逐顶点信息将被传递到片元函数中(下文介绍)。并且顶点函数也会被用来创建varying变量(译者注:GLSL三种变量类型uniform,attribute和varying),以传递到片元函数中(见其它文档)。
在默认情况下,Godot会拾取顶点信息并进行变换(transform)以供绘制。如果这不是你所期望的,你可以使用渲染模式(译者注:上文提到的),然后自己来变换这些数据; 参见 Spatial shader doc 中提供的范例。
片元处理器函数(Fragment processor)(译者注:文中简称片元函数)
片元函数被用于设置每个像素(Pixel)的材质参数,这部分代码会运行于物体的每一个可见像素或者图元(primitive)绘制。片元函数仅仅对于3D着色器和2D着色器才有效。
片元函数的标准的用法是设置用于光照计算的材质属性。例如,你设置粗糙度(ROUGHNESS),镶边(RIM)或者()
光处理器函数(Light processor)(译者注:文中简称光函数)
光函数也是逐像素计算(runs per pixel)的,并且它还要计算每一个影响到对象的光源(如果对象没有受到光的影响,它将不进行计算),光函数在片元处理器的内部被调用,常用于处理片元函数内部设定的材质属性。
光函数在2D和3D中作用是不同的;想要了解它们之间的差异,请阅读文档 CanvasItem Shaders 和 Spatial Shaders
网友评论