Personal Profile

GLSL

Python Primer for the Impatient

Python programming language logo

Python is one of the scripting languages supported by GLSL Hacker. Here is a quick introduction to the essential notions and syntax of Python programming language. All following notions are general and are not specific to GLSL Hacker. Thanks to this primer, you will be able to quickly tweak and hack GLSL Hacker demos. GLSL Hacker 0.5.0 is available with a Python 2.7 plugin.

The reference manual of Python 2 can be found HERE.

This primer does not cover advanced topics like object oriented programming. It follows the same line than Lua Primer fro the Impatient: providing a quick way to read and write basic Python programs or scripts.

1 – Comments

Python supports two kinds of comments: single line comments and multi-line comments.

Single line comment: #

# this is a single line comment in Python

Multi-line comment with triple quotes: “””

"""
this is a 
multi-line
comment in Python
"""

2 – Variables

Variables in Python have a type but there is no type declaration. Common types are numbers (float, integer), strings, lists, tuples and dictionnaries. Variables defined in a function have local scope while Variables defined outside functions have global scope.

num_vertices = 0 # integer variable
width = 10.25 # float variable
mesh_name = "my_kool_mesh" # string variable

Tuples use parentheses while lists use brackets. Tuples can’t be updated, their size can’t be changed while lists can be updated, elements can be added or removed.

shader_tuple = ('Vertex', 'Fragment', 'Geometry') # tuple

program_list = ['prog01', 'prog02', 'prog03'] # list
program_list.append('prog04')
program_list.append('prog05')

Dictionnaries is a kind of hash table and are made up of pairs of key:value. The key is usually a number or a string.

node_dict = {} # dictionnary
node_dict['node01'] = 100
node_dict['node02'] = 101
node_dict['node03'] = 102

To sum up:

my_tuple = ()
my_list = []
my_dict = {}

You can convert a type to another type with float(), int(), str(), tuple() or dict():

x = 10
x_str = str(x)

To concatenate strings, just use the + operator:

space = " "
app_name = "GLSL" + space + "Hacker" 

3 – Indentation

Unlike C, PHP or Lua, Python does not have braces to delimit blocks of code like functions or tests. To delimit blocks of code, Python uses indentation and indentation is severely inspected by Python, The smallest difference in indentation leads to fatal compilation error! So be careful with indentation and use a correct text editor to handle indentation properly.

4 – Functions

Functions in Python can take multiple arguments and can return multiple results.

def myKoolFunc(a, b, c):
  # indentation!!!
  # Do something useful with a, b and c:
  sum = a+b+c
  avg = sum/3
  return sum, avg

  
x, y = myKoolFunc(1, 2, 3)

5 – Operators

Comparison: The comparison operators are the same than in C language:

  • equal: (a == b)
  • not equal: (a != b)
  • greater than: (a > b)
  • greater than or equal: (a >= b)
  • lesser than: (a < b)
  • lesser than or equal: (a <= b)

Logical:

  • and: (a and b)
  • or: (a or b)

Bitwise:

  • binary AND: (a & b)
  • binary OR: (a | b)
  • binary left shift: a << b
  • binary right shift: a >> b
  • binary XOR: (a ^ b)
  • binary complement: ~a

6 – Control Structures

Conditional tests:

if (a == x):
  # do something
elif (a == y):
  # do something
else:
  # do something

Loops

for:

for i in range(0, 10):
  # do something

for i in "GLSL Hacker":
  print(i) # print current letter

for v in range(len(vertices_list)):
  Update_Position(v)
 

while:

i=0
while (i < 10):
  # do something
  i += 1 

7 – Built-in functions

Python comes with a ton of modules and that’s one of the strength of Python:

Fans of Python use the phrase batteries included to describe the standard library, which covers everything from asynchronous processing to zip files. The language itself is a flexible powerhouse that can handle practically any problem domain. Build your own web server in three lines of code. Build flexible data-driven code using Python’s powerful and dynamic introspection capabilities and advanced language features such as meta-classes, duck typing and decorators.

There are so many modules and functions in Python standard library and I’m not going to list them here. Nonetheless, I can give you an example of the use of platform module to get the version of Python. To use a module, use the import keyword:

import platform
py_version = str(platform.python_version())

There is a demo in GLSL Hacker Code Sample Pack that shows the use of the platform module:

GLSL Hacker - Python platform module test

GLSL Hacker – Python platform module test

Like in Lua, Python has a math library:

import math
s = math.sin(radians)
c = math.cos(radians)
p = math.pow(x, y)

There’s also a random module:

import random
# possible values for y: 2, 3, 4 and 5.
y = math.randint(2, 5) 

The string module is also very useful…

Simple Video Player for Raspberry Pi

Simple Video Player on Raspberry Pi

Simple Video Player on Raspberry Pi

Did you know that you can easily code an audio video player with the latest version 0.8.4 of GLSL Hacker ? This is possible thanks to the FFmpeg plugin that can now read audio and video frames and synchronize them. The FFmpeg plugin is available with all versions of GLSL Hacker: Windows, Linux, OS X and, of course, Raspberry Pi.

I prepared an archive file for Raspberry Pi with a ready-to-use video player named vplay. vplay is simply GLSL Hacker that has been renamed in vplay. The full source code in Lua is included in the download (in the audio_video/ folder):


In a word, vplay is a video player based on GLSL Hacker that uses FFmpeg to decode audio-video files, OpenMAX to play the decoded audio buffer and OpenGL ES to display the decoded video frames.

Playing a video with vplay is simple. Open a terminal in vplay folder and pass the absolute path to the video file:

$ vplay /video=\"video_file_absolute_path\"

A concrete example:

$ vplay /video=\"/home/pi/mykoolvideo.mp4\"

You can also force the resolution and fullscreen mode like this:

$ vplay /width=1920 /height=1080 /fullscreen /video=\"/home/pi/mykoolvideo.mp4\"

/width, /height and /fullscreen are command line parameters of GLSL Hacker and are not specific to VPlay demo.

By default, the video is played on a quad with an orthographic camera (a 2D camera). But vplay can be easily tweaked to play the video on another kind of support like a 3D box. After all, in a FRAME script, a video is just a simple 2D texture that can be mapped (like any other texture) on any 3D object. I added a command line parameter /usebox (you can add other params by parsing the command line in Lua, look for the gh_utils.get_command_line() function in the source code of the demo, line 167) to play the video using a 3D cube and a perspective camera:

$ vplay /video=\"/home/pi/mykoolvideo.mp4\" /usebox

And the result:

Simple Video Player on Raspberry Pi

Simple Video Player on Raspberry Pi

The video played on a 3D cube

And since the video is a simple 2D texture, you can play with the uv tiling factor in the pixel shader (line 31 and 388 of the xml file):

Simple Video Player on Raspberry Pi

Simple Video Player on Raspberry Pi

The video played on a quad with a texture tiling factor of 2.0

If you are interested about how vplay works, here are some code snippets that show how to use the audio-video functions of the FFmpeg plugin (Lua or Python) in GLSL Hacker:

INIT script:

-- Opening of the video file.
av1 = gh_av.decoder_open(av_filename, loop_mode)

-- video resolution. 
video_width, video_height = gh_av.video_get_resolution(av1)

-- Creation of a 2D texture with correct resolution (width x height). 
video_tex = gh_av.video_init_texture(av1, PF_U8_RGB)

-- Starting of the audio-video processing thread.
gh_av.start_audio_video_processing(av1, update_video, update_audio)

FRAME script:

-- Binding of the video texture and updating from the current video frame.
gh_texture.bind(video_tex, 0)
gh_av.video_update_texture(av1, video_tex)

-- Now the texture can be mapped on any mesh.

TERMINATE script:

-- Stopping of the audio-video processing thread.
gh_av.stop_audio_video_processing(av1)

-- Closing of the video file.
gh_av.decoder_close(av1)

The full source code is in the archive, so do not hesitate to hack it!

Impressive Pixel Shader of a Snail (GLSL)

Impressive Pixel Shader of a Snail (GLSL)

Impressive Pixel Shader of a Snail (GLSL)

The wizard behind Shadertoy has struk once again with this beautiful demo showing an animated snail. This demo has been ported to GeeXLab by our news hunter Stefan.

The demo is available in the code samples pack in the host_api/GLSL_ShaderToy/ folder (snail_gl2.xml). The demo is also available in the X-MAS 15 pack HERE. To test the demo, just run GeeXLab (you can download the latest version from THIS PAGE) and load (or drag and drop) the demo (snail_gl2.xml) into GeeXLab (GeeXLab 0.9.2.0 is recommended).

This demo has been ported to GeeXLab by our news hunter Stefan

This demo has been ported to GeeXLab by our news hunter Stefan

I quickly benchmarked few GPUs with this demo. The default settings are 800×480 pixels in windowed mode. The anti-aliasing can be set directly in the pixel shader and is equal to 1 by default (line 30 in the snail_gl2.xml file). A value of 4 improves the visual quality but destroys the framerate ? (try for yourself). I benchmarked with AA=1.

Testbed: Core i5 6600K, ASUS Z170 Pro Gaming, 8GB DDR4 Corsair Vengeance, Win10 64-bit, all hardware with stock clock speeds.

The demo runs fine without artifacts on an Intel HD Graphics 530!

Radeon R9 290X (Crimson 15.12) 89 FPS (avg)
GeForce GTX 960 (R361.43) 45 FPS (avg)
HD Graphics 530 (v4326) 10 FPS (avg)

A time lapse of the creation process of this demo with Shadertoy is available here:


NVIDIA R364.47 WHQL Graphics Drivers with Vulkan Support

NVIDIA R364.47 WHQL Graphics Drivers with Vulkan Support-NVIDIA GeForce GTX logo

NVIDIA R364.47 WHQL Graphics Drivers with Vulkan Support-NVIDIA GeForce GTX logo

NVIDIA has published a new set of Windows certified graphics drivers that bring various optimizations for for Tom Clancy’s The Division, Hitman, Need for Speed, Ashes of the Singularity, and Rise of the Tomb Raider.

R364.47 is also the first WHQL driver with Vulkan support.

More information about R364.47 can be found HERE.

UPDATE (2016.03.08)

R364.47 WHQL cause crashes on some systems with multiple monitors and have been replaced by R364.51 BETA. More information available HERE.

R364.51 Desktop Downloads

R364.51 Notebook Downloads

Geeks3D GPU Caps Viewer-NVIDIA R364.47 + GeForce GTX 960 + GPU Caps Viewer

Geeks3D GPU Caps Viewer-NVIDIA R364.47 + GeForce GTX 960 + GPU Caps Viewer

R364.47 is an OpenGL 4.5, OpenCL 1.2 and Vulkan 1.0.4 driver and exposes 381 OpenGL extensions including two new ones:

  • GL_NV_draw_vulkan_image
  • WGL_NV_bridged_display

The complete list of all OpenGL extensions exposed for a GeForce GTX 960 on Win10 64-bit

- OpenGL vendor: NVIDIA Corporation
- OpenGL renderer: GeForce GTX 960/PCIe/SSE2
- OpenGL Version: 4.5.0 NVIDIA 364.47
- GLSL (OpenGL Shading Language) Version: 4.50 NVIDIA
  • GL_AMD_multi_draw_indirect
  • GL_AMD_seamless_cubemap_per_texture
  • GL_AMD_vertex_shader_viewport_index
  • GL_AMD_vertex_shader_layer
  • GL_ARB_arrays_of_arrays (OpenGL 4.3)
  • GL_ARB_base_instance (OpenGL 4.2)
  • GL_ARB_bindless_texture (OpenGL 4.4)
  • GL_ARB_blend_func_extended (OpenGL 3.3)
  • GL_ARB_buffer_storage (OpenGL 4.4)
  • GL_ARB_clear_buffer_object (OpenGL 4.3)
  • GL_ARB_clear_texture (OpenGL 4.4)
  • GL_ARB_clip_control (OpenGL 4.5)
  • GL_ARB_color_buffer_float (OpenGL 3.0)
  • GL_ARB_compatibility (OpenGL 3.2)
  • GL_ARB_compressed_texture_pixel_storage (OpenGL 4.2)
  • GL_ARB_conservative_depth (OpenGL 4.2)
  • GL_ARB_compute_shader (OpenGL 4.3)
  • GL_ARB_compute_variable_group_size (OpenGL 4.3)
  • GL_ARB_conditional_render_inverted (OpenGL 4.5)
  • GL_ARB_copy_buffer (OpenGL 3.1)
  • GL_ARB_copy_image (OpenGL 4.3)
  • GL_ARB_cull_distance (OpenGL 4.5)
  • GL_ARB_debug_output (OpenGL 3.0)
  • GL_ARB_depth_buffer_float (OpenGL 3.0)
  • GL_ARB_depth_clamp (OpenGL 3.2)
  • GL_ARB_depth_texture (OpenGL 1.4)
  • GL_ARB_derivative_control (OpenGL 4.5)
  • GL_ARB_direct_state_access (OpenGL 4.5)
  • GL_ARB_draw_buffers (OpenGL 2.0)
  • GL_ARB_draw_buffers_blend (OpenGL 4.0)
  • GL_ARB_draw_indirect (OpenGL 4.0)
  • GL_ARB_draw_elements_base_vertex (OpenGL 3.2)
  • GL_ARB_draw_instanced (OpenGL 3.1)
  • GL_ARB_enhanced_layouts (OpenGL 4.4)
  • GL_ARB_ES2_compatibility (OpenGL 4.1)
  • GL_ARB_ES3_compatibility (OpenGL 4.3)
  • GL_ARB_ES3_1_compatibility (OpenGL 4.5)
  • GL_ARB_ES3_2_compatibility (OpenGL 4.5)
  • GL_ARB_explicit_attrib_location (OpenGL 3.3)
  • GL_ARB_explicit_uniform_location (OpenGL 4.3)
  • GL_ARB_fragment_coord_conventions (OpenGL 3.2)
  • GL_ARB_fragment_layer_viewport (OpenGL 4.3)
  • GL_ARB_fragment_program (OpenGL 1.3)
  • GL_ARB_fragment_program_shadow (OpenGL 1.3)
  • GL_ARB_fragment_shader (OpenGL 2.0)
  • GL_ARB_fragment_shader_interlock (OpenGL 4.5)
  • GL_ARB_framebuffer_no_attachments (OpenGL 4.3)
  • GL_ARB_framebuffer_object (OpenGL 3.0)
  • GL_ARB_framebuffer_sRGB (OpenGL 3.0)
  • GL_ARB_geometry_shader4 (OpenGL 3.2)
  • GL_ARB_get_program_binary (OpenGL 4.1)
  • GL_ARB_get_texture_sub_image (OpenGL 4.5)
  • GL_ARB_gpu_shader5 (OpenGL 4.0)
  • GL_ARB_gpu_shader_fp64 (OpenGL 4.0)
  • GL_ARB_gpu_shader_int64 (OpenGL 4.5)
  • GL_ARB_half_float_pixel (OpenGL 3.0)
  • GL_ARB_half_float_vertex (OpenGL 2.1)
  • GL_ARB_imaging
  • GL_ARB_indirect_parameters (OpenGL 4.3)
  • GL_ARB_instanced_arrays (OpenGL 3.3)
  • GL_ARB_internalformat_query (OpenGL 4.2)
  • GL_ARB_internalformat_query2 (OpenGL 4.3)
  • GL_ARB_invalidate_subdata (OpenGL 4.3)
  • GL_ARB_map_buffer_alignment (OpenGL 4.2)
  • GL_ARB_map_buffer_range (OpenGL 2.1)
  • GL_ARB_multi_bind (OpenGL 4.4)
  • GL_ARB_multi_draw_indirect (OpenGL 4.3)
  • GL_ARB_multisample (OpenGL 1.3)
  • GL_ARB_multitexture (OpenGL 1.3)
  • GL_ARB_occlusion_query (OpenGL 1.5)
  • GL_ARB_occlusion_query2 (OpenGL 3.3)
  • GL_ARB_parallel_shader_compile (OpenGL 4.5)
  • GL_ARB_pipeline_statistics_query (OpenGL 4.5)
  • GL_ARB_pixel_buffer_object (OpenGL 2.1)
  • GL_ARB_point_parameters (OpenGL 1.4)
  • GL_ARB_point_sprite (OpenGL 2.0)
  • GL_ARB_post_depth_coverage (OpenGL 4.5)
  • GL_ARB_program_interface_query (OpenGL 4.3)
  • GL_ARB_provoking_vertex (OpenGL 3.2)
  • GL_ARB_query_buffer_object (OpenGL 4.4)
  • GL_ARB_robust_buffer_access_behavior (OpenGL 4.3)
  • GL_ARB_robustness (OpenGL 4.1)
  • GL_ARB_sample_locations (OpenGL 4.5)
  • GL_ARB_sample_shading (OpenGL 4.0)
  • GL_ARB_sampler_objects (OpenGL 3.3)
  • GL_ARB_seamless_cube_map (OpenGL 3.2)
  • GL_ARB_seamless_cubemap_per_texture (OpenGL 4.3)
  • GL_ARB_separate_shader_objects (OpenGL 4.1)
  • GL_ARB_shader_atomic_counter_ops (OpenGL 4.5)
  • GL_ARB_shader_atomic_counters (OpenGL 4.2)
  • GL_ARB_shader_ballot (OpenGL 4.5)
  • GL_ARB_shader_bit_encoding (OpenGL 3.3)
  • GL_ARB_shader_clock (OpenGL 4.5)
  • GL_ARB_shader_draw_parameters (OpenGL 4.3)
  • GL_ARB_shader_group_vote (OpenGL 4.3)
  • GL_ARB_shader_image_load_store (OpenGL 4.2)
  • GL_ARB_shader_image_size (OpenGL 4.3)
  • GL_ARB_shader_objects (OpenGL 2.0)
  • GL_ARB_shader_precision (OpenGL 4.1)
  • GL_ARB_shader_storage_buffer_object (OpenGL 4.3)
  • GL_ARB_shader_subroutine (OpenGL 4.0)
  • GL_ARB_shader_texture_image_samples (OpenGL 4.5)
  • GL_ARB_shader_texture_lod (OpenGL 2.0)
  • GL_ARB_shading_language_100 (OpenGL 2.0)
  • GL_ARB_shader_viewport_layer_array (OpenGL 4.5)
  • GL_ARB_shading_language_420pack (OpenGL 4.2)
  • GL_ARB_shading_language_include (OpenGL 3.2)
  • GL_ARB_shading_language_packing (OpenGL 4.1)
  • GL_ARB_shadow (OpenGL 1.4)
  • GL_ARB_sparse_buffer (OpenGL 4.5)
  • GL_ARB_sparse_texture (OpenGL 4.3)
  • GL_ARB_sparse_texture2 (OpenGL 4.5)
  • GL_ARB_sparse_texture_clamp (OpenGL 4.5)
  • GL_ARB_stencil_texturing (OpenGL 4.3)
  • GL_ARB_sync (OpenGL 3.2)
  • GL_ARB_tessellation_shader (OpenGL 4.0)
  • GL_ARB_texture_barrier (OpenGL 4.5)
  • GL_ARB_texture_border_clamp (OpenGL 1.3)
  • GL_ARB_texture_buffer_object (OpenGL 3.1)
  • GL_ARB_texture_buffer_object_rgb32 (OpenGL 4.0)
  • GL_ARB_texture_buffer_range (OpenGL 4.3)
  • GL_ARB_texture_compression (OpenGL 1.3)
  • GL_ARB_texture_compression_bptc (OpenGL 4.2)
  • GL_ARB_texture_compression_rgtc (OpenGL 3.0)
  • GL_ARB_texture_cube_map (OpenGL 1.3)
  • GL_ARB_texture_cube_map_array (OpenGL 4.0)
  • GL_ARB_texture_env_add (OpenGL 1.3)
  • GL_ARB_texture_env_combine (OpenGL 1.3)
  • GL_ARB_texture_env_crossbar (OpenGL 1.4)
  • GL_ARB_texture_env_dot3 (OpenGL 1.3)
  • GL_ARB_texture_filter_minmax (OpenGL 4.5)
  • GL_ARB_texture_float (OpenGL 3.0)
  • GL_ARB_texture_gather (OpenGL 4.0)
  • GL_ARB_texture_mirror_clamp_to_edge (OpenGL 4.4)
  • GL_ARB_texture_mirrored_repeat (OpenGL 1.4)
  • GL_ARB_texture_multisample (OpenGL 3.2)
  • GL_ARB_texture_non_power_of_two
  • GL_ARB_texture_query_levels (OpenGL 4.3)
  • GL_ARB_texture_query_lod (OpenGL 4.0)
  • GL_ARB_texture_rectangle (OpenGL 3.1)
  • GL_ARB_texture_rg (OpenGL 3.0)
  • GL_ARB_texture_rgb10_a2ui (OpenGL 3.3)
  • GL_ARB_texture_stencil8 (OpenGL 4.4)
  • GL_ARB_texture_storage (OpenGL 4.2)
  • GL_ARB_texture_storage_multisample (OpenGL 4.3)
  • GL_ARB_texture_swizzle (OpenGL 3.3)
  • GL_ARB_texture_view (OpenGL 4.3)
  • GL_ARB_timer_query (OpenGL 3.3)
  • GL_ARB_transform_feedback2 (OpenGL 4.0)
  • GL_ARB_transform_feedback3 (OpenGL 4.0)
  • GL_ARB_transform_feedback_instanced (OpenGL 4.2)
  • GL_ARB_transform_feedback_overflow_query (OpenGL 4.5)
  • GL_ARB_transpose_matrix (OpenGL 1.3)
  • GL_ARB_uniform_buffer_object (OpenGL 3.1)
  • GL_ARB_vertex_array_bgra (OpenGL 3.2)
  • GL_ARB_vertex_array_object (OpenGL 2.1)
  • GL_ARB_vertex_attrib_64bit (OpenGL 4.1)
  • GL_ARB_vertex_attrib_binding (OpenGL 4.3)
  • GL_ARB_vertex_buffer_object (OpenGL 1.5)
  • GL_ARB_vertex_program (Requires OpenGL 1.3)
  • GL_ARB_vertex_shader (OpenGL 2.0)
  • GL_ARB_vertex_type_10f_11f_11f_rev (OpenGL 4.4)
  • GL_ARB_vertex_type_2_10_10_10_rev (OpenGL 3.3)
  • GL_ARB_viewport_array (OpenGL 4.1)
  • GL_ARB_window_pos (OpenGL 1.4)
  • GL_ATI_draw_buffers (Requires OpenGL 1.3)
  • GL_ATI_texture_float (Requires OpenGL 1.3)
  • GL_ATI_texture_mirror_once (Requires OpenGL 1.2.1)
  • GL_S3_s3tc
  • GL_EXT_texture_env_add
  • GL_EXT_abgr
  • GL_EXT_bgra (OpenGL 1.2)
  • GL_EXT_bindable_uniform (OpenGL 2.0)
  • GL_EXT_blend_color (OpenGL 1.4 OpenGL 1.4)
  • GL_EXT_blend_equation_separate
  • GL_EXT_blend_func_separate (Requires OpenGL 1.2 / Core Feature of OpenGL 1.4)
  • GL_EXT_blend_minmax (Requires OpenGL 1.2)
  • GL_EXT_blend_subtract (Requires OpenGL 1.2)
  • GL_EXT_compiled_vertex_array (Requires OpenGL 1.1)
  • GL_EXT_Cg_shader
  • GL_EXT_depth_bounds_test
  • GL_EXT_direct_state_access
  • GL_EXT_draw_buffers2 (OpenGL 3.0)
  • GL_EXT_draw_instanced (Requires OpenGL 2.0)
  • GL_EXT_draw_range_elements (Requires OpenGL 1.2 / Core Feature of OpenGL 1.4)
  • GL_EXT_fog_coord (Requires OpenGL 1.2 / Core Feature of OpenGL 1.4)
  • GL_EXT_framebuffer_blit (OpenGL 3.0)
  • GL_EXT_framebuffer_multisample (OpenGL 3.0)
  • GL_EXTX_framebuffer_mixed_formats
  • GL_EXT_framebuffer_multisample_blit_scaled
  • GL_EXT_framebuffer_object (Requires OpenGL 3.0)
  • GL_EXT_framebuffer_sRGB (OpenGL 3.0)
  • GL_EXT_geometry_shader4 (Requires OpenGL 2.0)
  • GL_EXT_gpu_program_parameters (Requires OpenGL 2.0)
  • GL_EXT_gpu_shader4 (OpenGL 3.0)
  • GL_EXT_multi_draw_arrays (OpenGL 1.2 / Core Feature of OpenGL 1.4)
  • GL_EXT_packed_depth_stencil (OpenGL 3.0)
  • GL_EXT_packed_float (OpenGL 3.0)
  • GL_EXT_packed_pixels (Requires OpenGL 1.2)
  • GL_EXT_pixel_buffer_object
  • GL_EXT_point_parameters
  • GL_EXT_polygon_offset_clamp
  • GL_EXT_post_depth_coverage
  • GL_EXT_provoking_vertex
  • GL_EXT_raster_multisample
  • GL_EXT_rescale_normal (Requires OpenGL 1.2)
  • GL_EXT_secondary_color (Requires OpenGL 1.2 / Core Feature of OpenGL 1.4)
  • GL_EXT_separate_shader_objects
  • GL_EXT_separate_specular_color (Requires OpenGL 1.2)
  • GL_EXT_shader_image_load_formatted
  • GL_EXT_shader_image_load_store
  • GL_EXT_shader_integer_mix
  • GL_EXT_shadow_funcs (Requires OpenGL 1.3 / Core Feature of OpenGL 1.5)
  • GL_EXT_sparse_texture2
  • GL_EXT_stencil_two_side
  • GL_EXT_stencil_wrap (Requires OpenGL 1.4)
  • GL_EXT_texture3D (Requires OpenGL 1.2)
  • GL_EXT_texture_array (OpenGL 3.0)
  • GL_EXT_texture_buffer_object (Requires OpenGL 2.0)
  • GL_EXT_texture_compression_dxt1
  • GL_EXT_texture_compression_latc
  • GL_EXT_texture_compression_rgtc (OpenGL 3.0)
  • GL_EXT_texture_compression_s3tc (Requires OpenGL 1.2.1)
  • GL_EXT_texture_cube_map (See GL_ARB_texture_cube_map)
  • GL_EXT_texture_edge_clamp
  • GL_EXT_texture_env_combine
  • GL_EXT_texture_env_dot3
  • GL_EXT_texture_filter_anisotropic (Requires OpenGL 1.2)
  • GL_EXT_texture_filter_minmax
  • GL_EXT_texture_integer (OpenGL 3.0)
  • GL_EXT_texture_lod
  • GL_EXT_texture_lod_bias (Requires OpenGL 1.2 / Core Feature of OpenGL 1.4)
  • GL_EXT_texture_mirror_clamp (Requires OpenGL 1.4)
  • GL_EXT_texture_object (Requires OpenGL 1.1)
  • GL_EXT_texture_shared_exponent (OpenGL 3.0)
  • GL_EXT_texture_sRGB
  • GL_EXT_texture_sRGB_decode
  • GL_EXT_texture_storage
  • GL_EXT_texture_swizzle (OpenGL 2.1)
  • GL_EXT_timer_query (Requires OpenGL 1.5)
  • GL_EXT_transform_feedback2
  • GL_EXT_vertex_array (Requires OpenGL 1.1)
  • GL_EXT_vertex_array_bgra
  • GL_EXT_vertex_attrib_64bit
  • GL_EXT_import_sync_object
  • GL_IBM_rasterpos_clip
  • GL_IBM_texture_mirrored_repeat
  • GL_KHR_context_flush_control (OpenGL 4.5)
  • GL_KHR_debug (OpenGL 4.3)
  • GL_KHR_no_error
  • GL_KHR_robust_buffer_access_behavior
  • GL_KHR_robustness (OpenGL 4.5)
  • GL_KTX_buffer_region
  • GL_NV_bindless_multi_draw_indirect
  • GL_NV_bindless_multi_draw_indirect_count
  • GL_NV_bindless_texture (OpenGL 4.0)
  • GL_NV_blend_equation_advanced
  • GL_NV_blend_equation_advanced_coherent
  • GL_NV_blend_square (Requires OpenGL 1.2.1 / Core Feature of OpenGL 1.4)
  • GL_NV_command_list
  • GL_NV_compute_program5
  • GL_NV_conditional_render (OpenGL 3.0)
  • GL_NV_conservative_raster
  • GL_NV_conservative_raster_dilate
  • GL_NV_copy_depth_to_color
  • GL_NV_copy_image
  • GL_NV_depth_buffer_float (OpenGL 3.0)
  • GL_NV_depth_clamp
  • GL_NV_draw_texture
  • GL_NV_draw_vulkan_image
  • GL_NV_ES1_1_compatibility
  • GL_NV_ES3_1_compatibility
  • GL_NV_explicit_multisample
  • GL_NV_fence
  • GL_NV_fill_rectangle
  • GL_NV_float_buffer
  • GL_NV_fog_distance
  • GL_NV_fragment_coverage_to_color
  • GL_NV_fragment_program
  • GL_NV_fragment_program_option
  • GL_NV_fragment_program2
  • GL_NV_fragment_shader_interlock
  • GL_NV_framebuffer_mixed_samples
  • GL_NV_framebuffer_multisample_coverage
  • GL_NV_geometry_shader4
  • GL_NV_geometry_shader_passthrough
  • GL_NV_gpu_program4
  • GL_NV_internalformat_sample_query
  • GL_NV_gpu_program4_1
  • GL_NV_gpu_program5
  • GL_NV_gpu_program5_mem_extended
  • GL_NV_gpu_program_fp64
  • GL_NV_gpu_shader5
  • GL_NV_half_float (OpenGL 3.0)
  • GL_NV_light_max_exponent
  • GL_NV_multisample_coverage
  • GL_NV_multisample_filter_hint
  • GL_NV_occlusion_query (Requires OpenGL 1.3)
  • GL_NV_packed_depth_stencil
  • GL_NV_parameter_buffer_object
  • GL_NV_parameter_buffer_object2
  • GL_NV_path_rendering
  • GL_NV_path_rendering_shared_edge
  • GL_NV_pixel_data_range
  • GL_NV_point_sprite
  • GL_NV_primitive_restart (OpenGL 3.1)
  • GL_NV_register_combiners
  • GL_NV_register_combiners2
  • GL_NV_sample_locations
  • GL_NV_sample_mask_override_coverage
  • GL_NV_shader_atomic_counters
  • GL_NV_shader_atomic_float
  • GL_NV_shader_atomic_fp16_vector
  • GL_NV_shader_atomic_int64
  • GL_NV_shader_buffer_load
  • GL_NV_shader_storage_buffer_object
  • GL_NV_texgen_reflection (Requires OpenGL 1.3)
  • GL_NV_texture_barrier
  • GL_NV_texture_compression_vtc
  • GL_NV_texture_env_combine4
  • GL_NV_texture_multisample
  • GL_NV_texture_rectangle
  • GL_NV_texture_shader
  • GL_NV_texture_shader2
  • GL_NV_texture_shader3
  • GL_NV_transform_feedback
  • GL_NV_transform_feedback2
  • GL_NV_uniform_buffer_unified_memory
  • GL_NV_vertex_array_range
  • GL_NV_vertex_array_range2
  • GL_NV_vertex_attrib_integer_64bit
  • GL_NV_vertex_buffer_unified_memory
  • GL_NV_vertex_program
  • GL_NV_vertex_program1_1
  • GL_NV_vertex_program2
  • GL_NV_vertex_program2_option
  • GL_NV_vertex_program3
  • GL_NV_viewport_array2
  • GL_NVX_conditional_render
  • GL_NVX_gpu_memory_info
  • GL_NVX_nvenc_interop
  • GL_NV_shader_thread_group
  • GL_NV_shader_thread_shuffle
  • GL_KHR_blend_equation_advanced (OpenGL 4.5)
  • GL_KHR_blend_equation_advanced_coherent
  • GL_SGIS_generate_mipmap (Requires OpenGL 1.4)
  • GL_SGIS_texture_lod (Requires OpenGL 1.2)
  • GL_SGIX_depth_texture
  • GL_SGIX_shadow
  • GL_SUN_slice_accum
  • GL_WIN_swap_hint
  • WGL_EXT_swap_control (Requires OpenGL 1.2)
  • WGL_ARB_buffer_region
  • WGL_ARB_create_context (OpenGL 3.0)
  • WGL_ARB_create_context_profile
  • WGL_ARB_create_context_robustness (OpenGL 4.1)
  • WGL_ARB_context_flush_control (OpenGL 4.5)
  • WGL_ARB_extensions_string
  • WGL_ARB_make_current_read
  • WGL_ARB_multisample
  • WGL_ARB_pbuffer
  • WGL_ARB_pixel_format
  • WGL_ARB_pixel_format_float
  • WGL_ARB_render_texture (Requires OpenGL 1.1)
  • WGL_ATI_pixel_format_float (Requires OpenGL 1.3)
  • WGL_EXT_create_context_es_profile
  • WGL_EXT_create_context_es2_profile
  • WGL_EXT_extensions_string
  • WGL_EXT_framebuffer_sRGB (OpenGL 2.0)
  • WGL_EXT_pixel_format_packed_float (OpenGL 2.0)
  • WGL_EXT_swap_control_tear
  • WGL_NVX_DX_interop
  • WGL_NV_DX_interop
  • WGL_NV_DX_interop2
  • WGL_NV_bridged_display
  • WGL_NV_copy_image
  • WGL_NV_delay_before_swap
  • WGL_NV_float_buffer
  • WGL_NV_multisample_coverage
  • WGL_NV_render_depth_texture
  • WGL_NV_render_texture_rectangle

What’s New in OpenGL 4.5 and OpenGL Shading Language 4.5

The OpenGL 4.5 and OpenGL Shading Language 4.50 Specifications were released on August 11, 2014.

New features of OpenGL 4.5 include:

  • Direct State Access (DSA)
    object accessors enable state to be queried and modified without binding objects to contexts, for increased application and middleware efficiency and flexibility;
  • Flush Control
    applications can control flushing of pending commands before context switching – enabling high-performance multithreaded applications;
  • Robustness
    providing a secure platform for applications such as WebGL browsers, including preventing a GPU reset affecting any other running applications;
  • OpenGL ES 3.1 API and shader compatibility
    to enable the easy development and execution of the latest OpenGL ES applications on desktop systems;
  • DX11 emulation features
    for easier porting of applications between OpenGL and Direct3D.

New extensions to OpenGL 4.5 include:

  • GL_ARB_clip_control
  • GL_ARB_cull_distance
  • GL_ARB_ES3_1_compatibility
  • GL_ARB_conditional_render_inverted
  • GL_KHR_context_flush_control
  • GL_ARB_derivative_control
  • GL_ARB_direct_state_access
  • GL_ARB_get_texture_sub_image
  • GL_KHR_robustness
  • GL_ARB_shader_texture_image_samples
  • GL_ARB_texture_barrier

API & GLSL specifications



Popular Pages
Popular posts
Interested
About me

My name is Sayed Ahmadreza Razian and I am a graduate of the master degree in Artificial intelligence .
Click here to CV Resume page

Related topics such as image processing, machine vision, virtual reality, machine learning, data mining, and monitoring systems are my research interests, and I intend to pursue a PhD in one of these fields.

جهت نمایش صفحه معرفی و رزومه کلیک کنید

My Scientific expertise
  • Image processing
  • Machine vision
  • Machine learning
  • Pattern recognition
  • Data mining - Big Data
  • CUDA Programming
  • Game and Virtual reality

Download Nokte as Free


Coming Soon....

Greatest hits

You are what you believe yourself to be.

Paulo Coelho

One day you will wake up and there won’t be any more time to do the things you’ve always wanted. Do it now.

Paulo Coelho

Imagination is more important than knowledge.

Albert Einstein

Anyone who has never made a mistake has never tried anything new.

Albert Einstein

It’s the possibility of having a dream come true that makes life interesting.

Paulo Coelho

Gravitation is not responsible for people falling in love.

Albert Einstein

The fear of death is the most unjustified of all fears, for there’s no risk of accident for someone who’s dead.

Albert Einstein

Waiting hurts. Forgetting hurts. But not knowing which decision to take can sometimes be the most painful.

Paulo Coelho


Site by images
Statistics
  • 6,280
  • 19,113
  • 62,645
  • 18,333
Recent News Posts