diff --git a/spec/gen_spec.py b/spec/gen_spec.py index 697801b..ea6e07d 100755 --- a/spec/gen_spec.py +++ b/spec/gen_spec.py @@ -109,6 +109,11 @@ def process_docs_gl_file(path): variable['description'] = description variable['versions'] = version_support[0] variables.append(variable) + if 'gl_Position' in path: + variable = { 'name': 'gl_Position', 'type': 'vec4' } + variable['description'] = description + variable['versions'] = version_support[0] + variables.append(variable) else: for i, node in enumerate(soup.find_all(attrs={'class':'funcprototype-table'})): prototype = parse_prototype(node.getText()) @@ -116,7 +121,6 @@ def process_docs_gl_file(path): prototype['versions'] = version_support[min(i, len(version_support) - 1)] functions.append(prototype) - def paragraph_to_markdown(paragraph): if paragraph.math is not None and paragraph.math.mtable is not None: return '```\n' + expand_math(paragraph.math.mtable).replace('δ ', 'δ') + '\n```\n' diff --git a/spec/spec.json b/spec/spec.json index ae0667e..1bc722d 100644 --- a/spec/spec.json +++ b/spec/spec.json @@ -3426,6 +3426,30 @@ 450 ] }, + { + "name": "gl_Position", + "type": "vec4", + "description": [ + "In the vertex, tessellation evaluation and geometry languages, a single global instance of the `gl_PerVertex` named block is available and its `gl_Position` member is an output that receives the homogeneous vertex position. It may be written at any time during shader execution. The value written to `gl_Position` will be used by primitive assembly, clipping, culling and other fixed functionality operations, if present, that operate on primitives after vertex processing has occurred.", + "In the tessellation control language, the `gl_PerVertex` named block is used to construct an array, `gl_out[]`, whose `gl_Position` members hold the homogeneous control point position, which become available as inputs to the subsequent tessellation evaluation shader.", + "The value of `gl_Position` (or the `gl_Position` member of the `gl_out[]` array, in the case of the tessellation control shader) is undefined after the vertex, tessellation control, and tessellation evaluation shading stages if the corresponding shader executable does not write to gl_Position. It is also undefined after the geometry processing stage if the geometry shader executable calls EmitVertex without having written `gl_Position` since the last call to EmitVertex (or hasn't written it at all).", + "In the tessellation control, tessellation evaluation and geometry languages, the `gl_PerVertex` named block is used to construct an array, `gl_in[]` of per-vertex or per-control point inputs whose content represents the corresponding outputs written by the previous stage." + ], + "versions": [ + 110, + 120, + 130, + 140, + 150, + 330, + 400, + 410, + 420, + 430, + 440, + 450 + ] + }, { "modifiers": "in", "type": "int", @@ -3532,7 +3556,7 @@ "name": "gl_RayFlagsCullBackFacingTrianglesEXT", "default_value": "16U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3541,7 +3565,7 @@ "name": "gl_RayFlagsCullBackFacingTrianglesEXT", "default_value": "16U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3559,7 +3583,7 @@ "name": "gl_RayFlagsCullFrontFacingTrianglesEXT", "default_value": "32U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3568,7 +3592,7 @@ "name": "gl_RayFlagsCullFrontFacingTrianglesEXT", "default_value": "32U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3586,7 +3610,7 @@ "name": "gl_RayFlagsCullNoOpaqueEXT", "default_value": "128U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3595,7 +3619,7 @@ "name": "gl_RayFlagsCullNoOpaqueEXT", "default_value": "128U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3613,7 +3637,7 @@ "name": "gl_RayFlagsCullOpaqueEXT", "default_value": "64U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3622,7 +3646,7 @@ "name": "gl_RayFlagsCullOpaqueEXT", "default_value": "64U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3649,7 +3673,7 @@ "name": "gl_RayFlagsNoOpaqueEXT", "default_value": "2U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3658,7 +3682,7 @@ "name": "gl_RayFlagsNoOpaqueEXT", "default_value": "2U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3675,8 +3699,11 @@ "type": "uint", "name": "gl_RayFlagsNoneEXT", "default_value": "0U", + "description": [ + "const uint `gl_RayFlagsNoneEXT` = 0U;\nconst uint `gl_RayFlagsOpaqueEXT` = 1U;\nconst uint `gl_RayFlagsNoOpaqueEXT` = 2U;\nconst uint `gl_RayFlagsTerminateOnFirstHitEXT` = 4U;\nconst uint `gl_RayFlagsSkipClosestHitShaderEXT` = 8U;\nconst uint `gl_RayFlagsCullBackFacingTrianglesEXT` = 16U;\nconst uint `gl_RayFlagsCullFrontFacingTrianglesEXT` = 32U;\nconst uint `gl_RayFlagsCullOpaqueEXT` = 64U;\nconst uint `gl_RayFlagsCullNoOpaqueEXT` = 128U;" + ], "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3684,11 +3711,8 @@ "type": "uint", "name": "gl_RayFlagsNoneEXT", "default_value": "0U", - "description": [ - "const uint `gl_RayFlagsNoneEXT` = 0U;\nconst uint `gl_RayFlagsOpaqueEXT` = 1U;\nconst uint `gl_RayFlagsNoOpaqueEXT` = 2U;\nconst uint `gl_RayFlagsTerminateOnFirstHitEXT` = 4U;\nconst uint `gl_RayFlagsSkipClosestHitShaderEXT` = 8U;\nconst uint `gl_RayFlagsCullBackFacingTrianglesEXT` = 16U;\nconst uint `gl_RayFlagsCullFrontFacingTrianglesEXT` = 32U;\nconst uint `gl_RayFlagsCullOpaqueEXT` = 64U;\nconst uint `gl_RayFlagsCullNoOpaqueEXT` = 128U;" - ], "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3708,8 +3732,11 @@ "type": "uint", "name": "gl_RayFlagsOpaqueEXT", "default_value": "1U", + "description": [ + "`gl_RayFlagsNoneEXT` -> NoneKHR ray flag\n`gl_RayFlagsOpaqueEXT` -> OpaqueKHR ray flag\n`gl_RayFlagsNoOpaqueEXT` -> NoOpaqueKHR ray flag\n`gl_RayFlagsTerminateOnFirstHitEXT` -> TerminateOnFirstHitKHR ray flag\n`gl_RayFlagsSkipClosestHitShaderEXT` -> SkipClosestHitShaderKHR ray flag\n`gl_RayFlagsCullBackFacingTrianglesEXT` -> CullBackFacingTrianglesKHR ray flag\n`gl_RayFlagsCullFrontFacingTrianglesEXT` -> CullFrontFacingTrianglesKHR ray flag\n`gl_RayFlagsCullOpaqueEXT` -> CullOpaqueKHR ray flag\n`gl_RayFlagsCullNoOpaqueEXT` -> CullNoOpaqueKHR ray flag" + ], "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3717,11 +3744,8 @@ "type": "uint", "name": "gl_RayFlagsOpaqueEXT", "default_value": "1U", - "description": [ - "`gl_RayFlagsNoneEXT` -> NoneKHR ray flag\n`gl_RayFlagsOpaqueEXT` -> OpaqueKHR ray flag\n`gl_RayFlagsNoOpaqueEXT` -> NoOpaqueKHR ray flag\n`gl_RayFlagsTerminateOnFirstHitEXT` -> TerminateOnFirstHitKHR ray flag\n`gl_RayFlagsSkipClosestHitShaderEXT` -> SkipClosestHitShaderKHR ray flag\n`gl_RayFlagsCullBackFacingTrianglesEXT` -> CullBackFacingTrianglesKHR ray flag\n`gl_RayFlagsCullFrontFacingTrianglesEXT` -> CullFrontFacingTrianglesKHR ray flag\n`gl_RayFlagsCullOpaqueEXT` -> CullOpaqueKHR ray flag\n`gl_RayFlagsCullNoOpaqueEXT` -> CullNoOpaqueKHR ray flag" - ], "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3751,7 +3775,7 @@ "name": "gl_RayFlagsSkipClosestHitShaderEXT", "default_value": "8U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3760,7 +3784,7 @@ "name": "gl_RayFlagsSkipClosestHitShaderEXT", "default_value": "8U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -3787,7 +3811,7 @@ "name": "gl_RayFlagsTerminateOnFirstHitEXT", "default_value": "4U", "extensions": [ - "GL_EXT_ray_query" + "GL_EXT_ray_tracing" ] }, { @@ -3796,7 +3820,7 @@ "name": "gl_RayFlagsTerminateOnFirstHitEXT", "default_value": "4U", "extensions": [ - "GL_EXT_ray_tracing" + "GL_EXT_ray_query" ] }, { @@ -5200,6 +5224,24 @@ 450 ] }, + { + "return_type": "uint64_t", + "name": "atomicAdd", + "parameters": [ + { + "modifiers": "inout", + "type": "uint64_t", + "name": "mem" + }, + { + "type": "uint64_t", + "name": "data" + } + ], + "extensions": [ + "GL_EXT_shader_atomic_int64" + ] + }, { "return_type": "float", "name": "atomicAdd", @@ -5236,24 +5278,6 @@ "GL_EXT_shader_atomic_float2" ] }, - { - "return_type": "uint64_t", - "name": "atomicAdd", - "parameters": [ - { - "modifiers": "inout", - "type": "uint64_t", - "name": "mem" - }, - { - "type": "uint64_t", - "name": "data" - } - ], - "extensions": [ - "GL_EXT_shader_atomic_int64" - ] - }, { "return_type": "int", "name": "atomicAnd", @@ -5503,6 +5527,24 @@ 450 ] }, + { + "return_type": "uint64_t", + "name": "atomicExchange", + "parameters": [ + { + "modifiers": "inout", + "type": "uint64_t", + "name": "mem" + }, + { + "type": "uint64_t", + "name": "data" + } + ], + "extensions": [ + "GL_EXT_shader_atomic_int64" + ] + }, { "return_type": "float", "name": "atomicExchange", @@ -5539,24 +5581,6 @@ "GL_EXT_shader_atomic_float2" ] }, - { - "return_type": "uint64_t", - "name": "atomicExchange", - "parameters": [ - { - "modifiers": "inout", - "type": "uint64_t", - "name": "mem" - }, - { - "type": "uint64_t", - "name": "data" - } - ], - "extensions": [ - "GL_EXT_shader_atomic_int64" - ] - }, { "return_type": "float", "name": "atomicLoad", @@ -5657,24 +5681,6 @@ 450 ] }, - { - "return_type": "float", - "name": "atomicMax", - "parameters": [ - { - "modifiers": "inout", - "type": "float", - "name": "mem" - }, - { - "type": "float", - "name": "data" - } - ], - "extensions": [ - "GL_EXT_shader_atomic_float2" - ] - }, { "return_type": "uint64_t", "name": "atomicMax", @@ -5693,6 +5699,24 @@ "GL_EXT_shader_atomic_int64" ] }, + { + "return_type": "float", + "name": "atomicMax", + "parameters": [ + { + "modifiers": "inout", + "type": "float", + "name": "mem" + }, + { + "type": "float", + "name": "data" + } + ], + "extensions": [ + "GL_EXT_shader_atomic_float2" + ] + }, { "return_type": "int", "name": "atomicMin", @@ -5741,24 +5765,6 @@ 450 ] }, - { - "return_type": "float", - "name": "atomicMin", - "parameters": [ - { - "modifiers": "inout", - "type": "float", - "name": "mem" - }, - { - "type": "float", - "name": "data" - } - ], - "extensions": [ - "GL_EXT_shader_atomic_float2" - ] - }, { "return_type": "uint64_t", "name": "atomicMin", @@ -5777,6 +5783,24 @@ "GL_EXT_shader_atomic_int64" ] }, + { + "return_type": "float", + "name": "atomicMin", + "parameters": [ + { + "modifiers": "inout", + "type": "float", + "name": "mem" + }, + { + "type": "float", + "name": "data" + } + ], + "extensions": [ + "GL_EXT_shader_atomic_float2" + ] + }, { "return_type": "int", "name": "atomicOr", @@ -8143,6 +8167,14 @@ 450 ] }, + { + "return_type": "void", + "name": "groupMemoryBarrier", + "parameters": [], + "extensions": [ + "GL_KHR_memory_scope_semantics" + ] + }, { "return_type": "void", "name": "groupMemoryBarrier", @@ -8157,14 +8189,6 @@ "GL_EXT_mesh_shader" ] }, - { - "return_type": "void", - "name": "groupMemoryBarrier", - "parameters": [], - "extensions": [ - "GL_KHR_memory_scope_semantics" - ] - }, { "return_type": "void", "name": "groupMemoryBarrier", @@ -16337,7 +16361,7 @@ "name": "memoryBarrierShared", "parameters": [], "extensions": [ - "GL_EXT_mesh_shader" + "GL_KHR_memory_scope_semantics" ] }, { @@ -16345,7 +16369,7 @@ "name": "memoryBarrierShared", "parameters": [], "extensions": [ - "GL_KHR_memory_scope_semantics" + "GL_EXT_mesh_shader" ] }, {