webgl内置函数--矢量函数与纹理查询函数

966 阅读2分钟

现在我们一起来看一下矢量函数都有那些

第一个矢量函数:bvec2 lessThan(vec2 x, vec2 y)
此函数会逐分量的比较x<y是否成立,并且将返回值存储在布尔类型的bvec2中
第二个矢量函数:bvec2 lessThanEqual(vec2 x, vec2 y)
此函数会逐分量的比较x<=y是否成立,返回值于第一个矢量函数相同

第三个矢量函数:bvec2 greaterThan(vec2 x, vec2 y)
此函数会逐分量的比较x>y是否成立

第四个矢量函数:bvec2 greateThanEqual(vec2 x, vec2 y)
此函数会逐分量的比较x>=y是否成立

第五个矢量函数:bvec2 equal(vec2 x, vec2 y)
此函数会逐分量的比较x==y是否成立

第六个矢量函数:bvec2 notEqual(vec2 x, vec2 y)
此函数会逐分量的比较x!=y是否成立

第七个矢量函数:bool any(bvec2 x)
此函数会判断x矢量的任意分量为true,如果是的话就返回true

第八个矢量函数:bool all(bvec2 x)
此函数会判断x矢量的所有分量都为true,如果是的话就返回true

第九个矢量函数:bvec2 not(bvec2 x)
此函数会将x矢量逐分量的逻辑补运算

最后一种内置函数就是纹理查询函数了
我会把这种函数的全部应用列举出来方便你查看

vec4 texture2D(sampler2D sampler, vec2 coord)
vec4 texture2D(sampler2D sampler, vec2 coord, float bias)

vec4 texture2DProj(sampler2D sampler, vec3 coord)
vec4 texture2DProj(sampler2D sampler, vec3 coord, float bias)

vec4 texture2DProj(sampler2D sampler, vec4 coord)
vec4 texture2DProj(sampler2D sampler, vec4 coord, float bias)

vec4 texture2DLod(sampler2D sampler, vec2 coord, float lod)
vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod)
vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod)

上面的这集中纹理函数会使用纹理坐标coord,从当前绑定到sampler的二维纹理中读取对应的纹素。对于投影版本(带有Proj的),纹理坐标将从coord的最后一个分量中解析出来,而vec4类型的coord的第3个分量将被忽略。参数bias只可在片元着色器中使用,它表示在sample是MIPMAP纹理时,加在当前lod上的值。

vec4 textureCube(samplerCube sampler, vec3 coord)
vec4 textureCube(samplerCube sampler, vec3 coord, float bias)
vec4 textureCubeLod(samplerCube sampler, vec3 coord, float lod)
这三个函数会使用纹理坐标coord,从绑定到sampler的立方体纹理中读取响应纹素。coord的方向可用来指定立方体纹理的表面。

好了以上就是webgl中的所有内置函数了,可能这些函数这样表达出来感觉没有什么太大的意义,没事重头戏在后面呢,以后我会将一些有意思的webgl实践知识分享出来的。