US2S3L10——顶点-片元着色器传递更多参数
US2S3L10——顶点-片元着色器传递更多参数
顶点/片元着色器传递更多参数
如果顶点/片元着色器想要传递更多参数,我们需要通过结构体进行封装,用语义修饰结构体成员变量来达到目的
注意:只有顶点/片元着色器的回调函数相关参数和返回值才需要通过语义修饰
一般的自定义函数是不需要语义的,因为我们自己调用自己的自定义函数是可以明确知道每个参数的作用的
顶点着色器获取更多数据信息
当我们在顶点着色器当中想要获取更多模型相关信息时,可以使用结构体对数据进行封装
通过对结构体中成员变量加语义的方式来定义想要获取的信息
使用结构体作为参数和返回值类型后,函数的参数和返回值就不需要再使用语义进行修饰了
我们也可以不用自己声明结构体,而使用Unity定义好的结构体,详见:结构体(UnityCG.cginc中)
假设顶点着色器需要接收来自应用阶段的更多语义的参数,如:模型空间下的顶点坐标,顶点法线,uv坐标
这时我们需要声明一个结构体,其中的成员使用对应的语义修饰,然后将其作为顶点着色器的参数
1 |
|
片元着色器获取更多数据信息
当我们在片元着色器当中想要获取更多信息时,采用的方式还是**封装结构体的方式**
注意:片元着色器中获取的数据基本上都是由顶点着色器传递过来的
所以我们封装的结构体还需要作为顶点着色器的返回值类型
假设片元着色器需要接收顶点着色器的输出的裁剪空间的坐标,还需要顶点法线和uv坐标,
这时我们也需要声明一个结构体,其中的成员使用对应的语义修饰,
然后将其作为顶点着色器的返回值,片元着色器的参数
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!