MorphOS Developer
Posts: 510 from 2003/4/11
Hi everyone!
I had wanted to have a TinyGL update out several weeks ago already, but unfortunately that didn't happen. When I made my previous post, I was working on framebuffer object support (project #2), but then I distracted myself from that by starting work on the OpenGL ARB program support (project #4), which is now very close to being complete. During the course of working on that, I also ended up working on other things which are not technically covered by the bounty, but which are still very useful towards being able to run more modern OpenGL applications.
As a quick overview, here's how far I'd estimate that I am with the projects that
are part of the bounty:
Project 1 - 10% - Implement the fixed-function OpenGL pipeline as shaders
Project 2 - 50% - Framebuffer objects
Project 3 - 10% - Shaders
Project 4 - 80% - ARB Programs
Project 5 - 5% - R600 driver
I had hoped that I could finally release an update this weekend with OpenGL ARB program support included, but it currently doesn't seem likely that I'll have enough time to get it to a releasable state in time, so hopefully shortly after the weekend.
I also wrote two small example programs to show off the OpenGL ARB Program support, which I'll include the source code to in the SDK update I'm planning on releasing together with the TinyGL update. One of these programs includes (very nice, if I may say so) graphics made by ASiegel, so thank you a lot for that!
For framebuffer objects, the status is that the TinyGL side of it is or more or less done, minus fixing whatever problems might pop up once it gets tested properly. What's missing is the driver side support that's required for it to work.
I've also tried to make a more detailed changelog for the upcoming public beta release, which is unfortunately not complete, but should have the most important changes outlined. This changelog will probably grow a little bit before the planned release next week, but here's the current version of it:
Code:
tinygl.library:
- Library version is now 53.0.
- Cleaned up the OpenGL extensions advertised by TinyGL:
o GL_EXT_texture_compression_s3tc was advertised with the
wrong name, EXT_texture_compression_s3tc
o The following non-existing extensions are no longer
advertised:
* GL_ARB_color_table
* GL_ARB_compiled_vertex_array
* GL_ARB_draw_range_elements
* GL_EXT_color_table
o The following extensions do exist, but are not supported,
and thus no longer advertised:
* GL_EXT_draw_range_elements
o New driver-independent (or supported by all current
drivers) extensions advertised:
* GL_ARB_imaging
* GL_ARB_texture_border_clamp
* GL_ARB_texture_env_dot3
* GL_ARB_texture_mirrored_repeat
* GL_ARB_texture_non_power_of_two
* GL_ARB_transpose_matrix
* GL_ARB_window_pos
* GL_EXT_abgr
* GL_EXT_blend_color
* GL_EXT_blend_equation_separate
* GL_EXT_blend_func_separate
* GL_EXT_blend_minmax
* GL_EXT_blend_subtract
* GL_EXT_multi_draw_arrays
* GL_EXT_texture_env_dot3
* GL_SGI_color_table
* New driver-dependent extensions advertised. Availability
depends on the driver in use:
* GL_ARB_fragment_program
* GL_ARB_texture_cube_map
* GL_ARB_vertex_program
* GL_EXT_texture_cube_map
- Every OpenGL 2.1 function now exists in the tinygl.library
base. Note that this doesn't mean that TinyGL supports all
of OpenGL 2.1's functionality yet, just that the functions
exists.
- Added support for cube mapping. (extensions:
GL_ARB_texture_cube_map, GL_EXT_texture_cube_map)
- Added support for OpenGL ARB programs. (extensions:
GL_ARB_fragment_program, GL_ARB_vertex_program)
- Many OpenGL functions that previously only had some variants
of otherwise supported functions available now support all
variants. These are functions whose names typically end with
a single digit (1, 2, 3 or 4) followed by 1 or two characters
to indicate argument type (b, d, f, i, s, ub, ui, us) and
then optionally a v, for example glColor3ub().
These functions are:
o glColor#?()
o glEvalCoord#?()
o glMultiTexCoord#?()
o glNormal#?()
o glRasterPos#?()
o glTexCoord#?()
o glVertex#?()
o glWindowPos#?()
- Updated glGetDoublev, glGetFloatv and glGetIntegerv to fix
bugs in numerous already supported tags, and added many
previously unsupported tags.
- Added support for the following state getter functions:
o glGetBooleanv()
o glGetLightiv()
o glGetMaterialiv()
o glGetTexGendv()
o glGetTexGenfv()
o glGetTexGeniv()
o glGetTexLevelParameterfv()
- Added support for the following state setter functions:
o glFogiv()
o glLightiv()
o glLightModeliv()
o glMaterialiv()
o glPointParameterf()
o glPointParameterfv()
o glPointParameteri()
o glPointParameteriv()
o glTexGeniv()
o glTexGendv()
- Added support for the following glGetLight#?() tags:
o GL_CONSTANT_ATTENUATION
o GL_LINEAR_ATTENUATION
o GL_QUADRATIC_ATTENUATION
o GL_SPECULAR
o GL_SPOT_CUTOFF
o GL_SPOT_DIRECTION
o GL_SPOT_EXPONENT
- Added support for glMultiDrawArrays() and
glMultiDrawElements().
- Added support for glFinish().
- glGetError() is now implemented and will - for some
functions - return standards compliant error codes.
- Added glRectsv().
- Fixed some of the default states in freshly created TinyGL
contexts to match what is required by OpenGL:
o Secondary colour
o Raster colour
o Raster secondary colour
o Texture coordinates for texture units > 0
- glGetTexLevelParameter#?() now supports queries of the
GL_TEXTURE_1D target.
R200:
- Added support for cube maps.
R200, R300, R400 and R500:
- Texture combiner support has been fixed to be be standards
compliant:
o Added/fixed the support for the GL_ADD, GL_ADD_SIGNED,
GL_DOT3_RGB, GL_DOT3_RGBA, GL_INTERPOLATE and GL_SUBTRACT
texture combiner functions.
o Added support for texture combiner output scaling.
o Any and every combination of GL_SRC_COLOR,
GL_ONE_MINUS_SRC_COLOR, GL_ALPHA and
GL_ONE_MINUS_SRC_ALPHA operands now work.
R300/R400:
- Added support for OpenGL ARB programs.
R500:
- Fixed a bug that would cause wrong rendering if an
application had gaps in its enabled texture units,
for example if only texture units 0 and 2 were enabled.
OpenGL test suite:
- Added texture combiner tests to my OpenGL test suite. All
drivers and hardware combinations now pass all tests.
SDK:
- Please note that any software compiled with the updated SDK
will require tinygl.library version 53.0 or higher, and thus
either MorphOS 3.18 or MorphOS 3.17 + this separate TinyGL
update. If you manually open tinygl.library, you must
update your code to request version 53!
- TinyGL's automatic libopen function now requires at least
version 53 of tinygl.library.
- TinyGL's link library now comes in both regular and baserel
flavours.
- A function to obtain OpenGL function pointers at runtime,
tglGetProcAddress(), has been added to the link library.
This function supports every single OpenGL function that's
present in TinyGL.
- Includes have been updated to fully support OpenGL 2.1, plus
the following extensions:
o GL_ARB_color_buffer_float
o GL_ARB_depth_texture
o GL_ARB_draw_buffers
o GL_ARB_fragment_program
o GL_ARB_fragment_program_shadow
o GL_ARB_fragment_shader
o GL_ARB_framebuffer_object
o GL_ARB_half_float_pixel
o GL_ARB_imaging
o GL_ARB_matrix_palette
o GL_ARB_multisample
o GL_ARB_multitexture
o GL_ARB_occlusion_query
o GL_ARB_pixel_buffer_object
o GL_ARB_point_parameters
o GL_ARB_point_sprite
o GL_ARB_shader_objects
o GL_ARB_shading_language_100
o GL_ARB_shadow
o GL_ARB_shadow_ambient
o GL_ARB_texture_border_clamp
o GL_ARB_texture_compression
o GL_ARB_texture_cube_map
o GL_ARB_texture_env_add
o GL_ARB_texture_env_combine
o GL_ARB_texture_env_crossbar
o GL_ARB_texture_env_dot3
o GL_ARB_texture_float
o GL_ARB_texture_mirrored_repeat
o GL_ARB_texture_non_power_of_two
o GL_ARB_texture_rectangle
o GL_ARB_transpose_matrix
o GL_ARB_vertex_blend
o GL_ARB_vertex_buffer_object
o GL_ARB_vertex_program
o GL_ARB_vertex_shader
o GL_ARB_window_pos
o GL_ATI_separate_stencil
o GL_EXT_abgr
o GL_EXT_bgra
o GL_EXT_blend_color
o GL_EXT_blend_equation_separate
o GL_EXT_blend_func_separate
o GL_EXT_blend_logic_op
o GL_EXT_blend_minmax
o GL_EXT_blend_subtract
o GL_EXT_color_subtable
o GL_EXT_color_table
o GL_EXT_compiled_vertex_array
o GL_EXT_convolution
o GL_EXT_draw_range_elements
o GL_EXT_fog_coord
o GL_EXT_histogram
o GL_EXT_multi_draw_arrays
o GL_EXT_packed_pixels
o GL_EXT_paletted_texture
o GL_EXT_point_parameters
o GL_EXT_rescale_normal
o GL_EXT_secondary_color
o GL_EXT_separate_specular_color
o GL_EXT_shadow_funcs
o GL_EXT_shared_texture_palette
o GL_EXT_stencil_two_side
o GL_EXT_stencil_wrap
o GL_EXT_texture3D
o GL_EXT_texture_compression_s3tc
o GL_EXT_texture_cube_map
o GL_EXT_texture_env_add
o GL_EXT_texture_env_combine
o GL_EXT_texture_env_dot3
o GL_EXT_texture_filter_anisotropic
o GL_EXT_texture_lod
o GL_EXT_texture_lod_bias
o GL_EXT_texture_sRGB
o GL_HP_convolution_border_modes
o GL_NV_blend_square
o GL_NV_texgen_reflection
o GL_S3_s3tc
o GL_SGIS_generate_mipmap
o GL_SGIS_multitexture
o GL_SGIS_texture_edge_clamp
o GL_SGIS_texture_lod
o GL_SGI_color_matrix
o GL_SGI_color_table
o GL_SUN_multi_draw_arrays
[ Edited by bigfoot 28.07.2022 - 18:24 ]I rarely log in to MorphZone which means that I often miss private messages sent on here. If you wish to contact me, please email me at [username]@asgaard.morphos-team.net, where [username] is my username here on MorphZone.