23.5Shader结构体


23.5 Shader结构体 到现在为止,不论是环境光,还是Diffuse、Specular光照模型,他们所需的灯光颜色、灯光强度,在Shader中都是独立存在的变量。 指定它们的值,也是在Update中一个一个设置。 这就有2个问题: Uniform变量是有限定个数的。 多个单独的Uniform看起来很乱,一点都不面向对象。 对于这种多个变量,同属于一个功能的,要把它们组织成对象,这样看起来就整洁漂亮。 OpenGL Shader语言GLSL是类C的语言,也支持Struct。 Shader中使用Struct 将环境光、灯光分别归纳为Struct。 使用方式也和C语言一样,用 来访问成员变量,例如: 。 将片段Shader改造如下: 设置Struct 将环境光、普通Light的参数,分别整合...

23.5 Shader结构体 到现在为止,不论是环境光,还是Diffuse、Specular光照模型,他们所需的灯光颜色、灯光强度,在Shader中都是独立存在的变量。 指定它们的值,也是在Update中一个一个设置。 这就有2个问题: Uniform变量是有限定个数的。 多个单独的Uniform看起来很乱,一点都不面向对象。 对于这种多个变量,同属于一个功能的,要把它们组织成对象,这样看起来就整洁漂亮。 OpenGL Shader语言GLSL是类C的语言,也支持Struct。 Shader中使用Struct 将环境光、灯光分别归纳为Struct。 使用方式也和C语言一样,用 来访问成员变量,例如: 。 将片段Shader改造如下: 设置Struct 将环境光、普通Light的参数,分别整合到 两个类中,在 Update 中,对Struct进行设置。 2.1 设置环境光 环境是全局的,所以并没有将它设计为 。 这里遍历所有 MeshRenderer,设置环境光参数。 注意设置Struct成员变量,和Shader中访问,都是需要用 : 2.2 设置灯光 场景中可以有多个灯,所以灯是设计为...

发布者: 作者: 转发
评论区 (0)
U