• MorphOS Developer
    bigfoot
    Posts: 508 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.
  • »28.07.22 - 16:18
    Profile Visit Website