OpenGL extensions used in Kanzi

This table lists the OpenGL extensions that Kanzi uses.

Feature: OpenGL extensions

Requirement

Linear color workflow:

GL_EXT_sRGB

Kanzi enables this extension, if it is available.

Binary shaders:

  • GL_ARB_get_program_binary

  • GL_OES_get_program_binary

If you use binary shaders, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher. See Using binary shaders.

Debugging:

GL_KHR_debug

If you call Renderer::logOpenGLInformation and this extension is available, Kanzi uses it.

Multisampling (MSAA):

  • GL_NV_framebuffer_multisample

  • GL_ARB_framebuffer_object

  • GL_EXT_multisampled_render_to_texture

  • GL_IMG_multisampled_render_to_texture

If you set in a Composition Target Render Pass the Multisample Level property, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher. See Rendering content to composition targets and Using multisampling.

Vertex formats:

  • GL_ARB_half_float_vertex

  • GL_OES_vertex_half_float

If you use half-float vertex formats, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher. See Optimizing meshes.

Texture and render target formats:

GL_OES_rgb8_rgba8 extension

If you use RGB8 render targets, Kanzi uses this extension, if it is available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

  • GL_OES_texture_half_float

  • GL_OES_texture_half_float_linear

  • GL_OES_texture_float

  • GL_OES_texture_float_linear

  • GL_ARB_half_float_pixel

  • GL_EXT_color_buffer_half_float

  • GL_EXT_color_buffer_float

  • GL_ARB_color_buffer_float

If in a texture or render target you select any float16 or float32 format, Kanzi uses these extensions, if they are available.

Texture and render target formats:

GL_EXT_texture_norm16

If in a texture or render target you select any 16-bit signed or unsigned format, Kanzi uses this extension, if it is available.

Texture and render target formats:

  • GL_ARB_texture_storage_multisample

  • GL_ARB_texture_storage

  • GL_EXT_texture_storage

Kanzi uses these extensions, if they are available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

GL_ETC1_RGB8_OES

If you use ETC1 texture formats, the corresponding format out of these must be available. See Using the ETC algorithm.

Texture and render target formats:

  • GL_COMPRESSED_RGB8_ETC2

  • GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2

  • GL_COMPRESSED_RGBA8_ETC2_EAC

If you use ETC2 texture formats, the corresponding format out of these must be available. See Using the ETC algorithm.

Texture and render target formats:

  • GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG

  • GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG

  • GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG

  • GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG

  • GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG

  • GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG

If you use PVRTC texture formats, the corresponding format out of these must be available. See Using the PVRTC algorithm.

Texture and render target formats:

  • GL_ATC_RGB_AMD

  • GL_ATC_RGBA_EXPLICIT_ALPHA_AMD

  • GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD

If you use ATC texture formats, the corresponding format out of these must be available. See Using the ATC algorithm.

Texture and render target formats:

  • GL_COMPRESSED_RGBA_ASTC_4x4

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4

  • GL_COMPRESSED_RGBA_ASTC_5x4

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4

  • GL_COMPRESSED_RGBA_ASTC_5x5

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5

  • GL_COMPRESSED_RGBA_ASTC_6x5

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5

  • GL_COMPRESSED_RGBA_ASTC_6x6

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6

  • GL_COMPRESSED_RGBA_ASTC_8x5

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5

  • GL_COMPRESSED_RGBA_ASTC_8x6

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6

  • GL_COMPRESSED_RGBA_ASTC_8x8

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8

  • GL_COMPRESSED_RGBA_ASTC_10x5

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5

  • GL_COMPRESSED_RGBA_ASTC_10x6

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6

  • GL_COMPRESSED_RGBA_ASTC_10x8

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8

  • GL_COMPRESSED_RGBA_ASTC_10x10

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10

  • GL_COMPRESSED_RGBA_ASTC_12x10

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10

  • GL_COMPRESSED_RGBA_ASTC_12x12

  • GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12

If you use ASTC texture formats, the corresponding format out of these must be available. See Using the ASTC algorithm.

Texture and render target formats:

  • GL_ARB_depth_texture

  • GL_OES_depth_texture

If you use 16-bit depth texture format, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

  • GL_OES_depth24

  • GL_ARB_depth_texture

If you use 24-bit depth texture formats, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

  • GL_OES_depth32

  • GL_ARB_depth_texture

If you use 32-bit depth texture formats, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

  • GL_EXT_packed_depth_stencil

  • GL_OES_packed_depth_stencil

If you use depth and stencil, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

GL_OES_stencil8

If you use stencil8 texture formats, this extension must be available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

GL_EXT_texture_filter_anisotropic

If you set anisotropic filtering in any of your textures, this extension must be available.

Texture and render target formats:

GL_ARB_seamless_cube_map

Kanzi enables this extension, if it is available.

Texture and render target formats:

GL_EXT_texture_rg

If you use RG textures, this extension must be available, unless your platform supports OpenGL ES 3.0 or higher.

Texture and render target formats:

GL_EXT_draw_buffers

If you use a Composition Target Render Pass to render content to multiple targets, this extension must be available, unless your platform supports OpenGL ES 3.0 or higher. See Rendering content to multiple composition targets.

Mesh instancing

  • GL_ARB_draw_instanced

  • GL_EXT_draw_instanced

If you instantiate meshes, one of these extensions must be available, unless your platform supports OpenGL ES 3.0 or higher.

Geometry shaders

  • GL_ARB_geometry_shader

  • GL_OES_geometry_shader

If you use geometry shaders, one of these extensions must be available, unless your platform supports OpenGL ES 3.2 or higher. See Using geometry shaders.

Tessellation shaders

  • GL_ARB_tessellation_shader

  • GL_OES_tessellation_shader

If you use tessellation shaders, one of these extensions must be available, unless your platform supports OpenGL ES 3.2 or higher. See Using tessellation shaders.

Advanced color blending:

  • GL_KHR_blend_equation_advanced

  • GL_KHR_blend_equation_advanced_coherent

If you set any node or material to use an advanced color blending mode, these extensions must be available. See Advanced color blending modes.

See also

Using binary shaders

Rendering content to composition targets

Applying anti-aliasing

Optimizing meshes

Compressing textures

Textures

Using render target textures

Composition and blending