EXT_shader_texture_lod 擴充套件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

EXT_shader_texture_lod 擴充套件是 WebGL API 的一部分,它為 OpenGL ES 著色語言添加了額外的紋理函式,這些函式允許著色器編寫者顯式控制 LOD(細節級別)。

可以使用 WebGLRenderingContext.getExtension() 方法來訪問 WebGL 擴充套件。有關更多資訊,請參閱 WebGL 教程中的 使用擴充套件

注意:此擴充套件僅適用於 WebGL1 上下文。在 WebGL2 中,此擴充套件的功能預設可在 WebGL2 上下文中使用。它需要 GLSL #version 300 es

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 批准的擴充套件規範

瀏覽器相容性

另見