WebGL2学习(2): GLSL ES 3.0

更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加VX:digital_twin123

WebGL 2.0 给 GLSL 带来了重大变化。WebGL 1.0 中使用的 GLSL 版本是 GLSL ES 1.0。 WebGL 2.0 中仍然可用。但是,通过编写描述符来启用它,可以使用 WebGL 2.0 中的 GLSL ES 3.0。由于GLSL本身的版本已经升级,所以会采用完全不同的编写方式。

这次,我们重点关注因 GLSL ES 3.0 而发生变化的部分。

启用 GLSL ES 3.0

即使使用 WebGL 2.0,我们仍然可以使用以前版本的着色器。也就是说,除非显式启用,否则着色器将使用 GLSL ES 1.0 的旧版本。

为了启用3.0,我们需要编写一个版本指令,并且此版本指令必须是 GLSL ES 3.0 着色器代码的第一行。

#version 300 es

精度修饰符

自 GLSL ES 1.0 起,顶点着色器就保证了 highp 的默认精度。然而,对于片段着色器,mediump 只能保证最低精度。

GLSL ES 3.0 默认支持高精度,使得在片段着色器中处理高精度浮点数比以前更容易。

attribute 和 varying

在 GLSL ES 3.0 中,attribute 和 varying 被彻底废除,如果这样写将会是个语法错误,要转为使用 in 和 out 代替。

以前,顶点属性是使用带有 attribute 修饰符的变量输入的,但现在改成使用带有 in 修饰符的变量,这可以理解为是从外部进入着色器的数据。

同样,对于具有 varing 修饰符的变量,当从顶点着色器输出到片段着色器时使用 out,而当接收作为片段着色器的输入时使用 in

但是,带有uniform修饰符的变量将像以前一样写入。

gl_FragColor 和 gl_FragData 弃用

gl_FragColor 和 gl_FragData 也不能在 GLSL ES 3.0 中使用,这个gl_FragData 之前用于同时输出到多个称为MRT的缓冲区,并且可以像数组一样接收多个输出值。

layout修饰符

在 GLSL ES 3.0 中,attribute 等已经消失,取而代之的是 in,但同时,现在可以在 GLSL 内输入显式指定位置布局。

自 WebGL 1.0 起就存在一些 API 方法,例如 gl.getAttribLocation,但现在我们可以指定 GLSL 中出现的任何位置编号。

#version 300 es
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 normal;
layout (location = 2) in vec4 color;

texture的变化

内置函数和纹理格式的类型增添了很多种。特别要注意的是,texture2D函数已经停止使用了。

以前,2D 和立方体贴图系统的纹理参考函数是分开的。 GLSL ES 3.0 将这些结合在一起。现在,无论是2D纹理还是立方体纹理,都可以使用通用函数 texture 来引用。此功能可以根据给定的采样器类型自动更改参考方法。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞GIS图形的sky.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值