EXT_shader_texture_lod 扩展
EXT_shader_texture_lod
扩展是 WebGL API 的一部分,它向 OpenGL ES 着色语言添加了额外的纹理函数,使着色器编写者能够显式控制 LOD(细节层次)。
可以使用 WebGLRenderingContext.getExtension()
方法获得 WebGL 扩展。有关更多信息,请参阅 使用扩展(位于 WebGL 教程 中)。
GLSL 内置函数
如果启用了此扩展,则可以在 GLSL 着色器代码中使用以下新函数
cpp
vec4 texture2DLodEXT(sampler2D sampler, vec2 coord, float lod)
vec4 texture2DProjLodEXT(sampler2D sampler, vec3 coord, float lod)
vec4 texture2DProjLodEXT(sampler2D sampler, vec4 coord, float lod)
vec4 textureCubeLodEXT(samplerCube sampler, vec3 coord, float lod)
vec4 texture2DGradEXT(sampler2D sampler, vec2 P, vec2 dPdx, vec2 dPdy)
vec4 texture2DProjGradEXT(sampler2D sampler, vec3 P, vec2 dPdx, vec2 dPdy)
vec4 texture2DProjGradEXT(sampler2D sampler, vec4 P, vec2 dPdx, vec2 dPdy)
vec4 textureCubeGradEXT(samplerCube sampler, vec3 P, vec3 dPdx, vec3 dPdy)
示例
启用扩展
js
gl.getExtension("EXT_shader_texture_lod");
避免纹理坐标环绕时出现伪影的着色器代码
html
<script type="x-shader/x-fragment">
#extension GL_EXT_shader_texture_lod : enable
#extension GL_OES_standard_derivatives : enable
uniform sampler2D myTexture;
varying vec2 texcoord;
void main(){
gl_FragColor = texture2DGradEXT(myTexture, mod(texcoord, vec2(0.1, 0.5)),
dFdx(texcoord), dFdy(texcoord));
}
</script>
规范
规范 |
---|
WebGL EXT_shader_texture_lod Khronos 批准扩展规范 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。