EXT_shader_texture_lod 扩展
EXT_shader_texture_lod 扩展是 WebGL API 的一部分,它为 OpenGL ES 着色语言添加了额外的纹理函数,这些函数允许着色器编写者显式控制 LOD(细节级别)。
可以使用 WebGLRenderingContext.getExtension() 方法来访问 WebGL 扩展。有关更多信息,请参阅 WebGL 教程中的 使用扩展。
GLSL 内置函数
如果启用了此扩展,则可以在 GLSL 着色器代码中使用以下新函数
c
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 批准的扩展规范 |
浏览器兼容性
加载中…