This would fix a number of a small issues that are unlikely to get fixed otherwise.
For R200, the hardware does implement the fixed-function OpenGL pipeline in hardware, but it has a few bugs and omissions, and these bugs and omissions can't really be worked around without either completely disabling hardware support for the vertex side of the OpenGL fixed-function pipeline, or as the heading suggests, implementing it as shaders.
For R300, there's no hardware support for the fixed-function OpenGL pipeline, and the current driver implements it as two static shaders, a "simple" one that handles just the basics, and a "complex" one that partially handles OpenGL lighting too. This implementation misses quite a few things, and the work required to make it correctly support everything would be almost the same amount of effort as implementing it generically in TinyGL, where other hardware could also benefit from it.
R600 (and potential newer hardware) support would also benefit from this, as it's basically a requirement for any hardware from R300 and up.
Completing this task would fix a bunch of smaller issues, such as:
This project is not dependent on any of the other projects.
While this feature has only been part of core OpenGL since version 3.0, it has been available as an extension before then, and it is (mostly) hardware independent and can thus be implemented for any hardware currently supported by MorphOS, even if it predates OpenGL 3.0 by quite a bit.
The gist of this feature is that it allows applications and games to draw into other things than just the display buffer, commonly a texture. This can for example be used to create bloom effects, mirrors, water reflections and many other things.
Completely supporting framebuffer objects is dependent on the shaders project being done. However, the only missing functionality from this project without shaders is functionality that can only be used through shaders in the first place.
This one probably doesn't need too much of an introduction or explanation, but in short, shaders are what (mostly) replace the fixed-function OpenGL pipeline with a programmable one. Shaders are small programs that run on the graphics card to control how input vertex data gets transformed and how final output pixel data gets calculated, split up into vertex shaders and fragment shaders respectively.
Hardware wise, only R300 and newer can fully support OpenGL 2 shaders, however R200 can partially support them too.
Fully implementing shaders to specifications is a huge task. Therefore I suggest working more towards getting the most common functionality working correctly, and then adding extra functionality later if it turns out it's needed for an interesting application or game. Note that MorphOS already has some (quite partial) support for OpenGL shaders on R300 and R400 only. This would need to be extended to fully implement the OpenGL API, to support more of the OpenGL Shading Language and handle more complex shaders, and finally also to support R200 and R500 hardware.
This project is not dependent on any of the other projects.
OpenGL programs are a precursor to OpenGL shaders, and is more like an assembly-like version of shaders. They were never used widely, but Doom 3 used them. I'm not 100% sure if the Doom 3 fork that Cowcat's MorphOS port is based on has been updated to use shaders instead, but from a very, very quick glance, it doesn't look like it. If so, implementing OpenGL programs would be a requirement to fully support Doom 3.
This project is not dependent on any of the other projects.
A TinyGL driver for the R600, R700, Evergreen and Northern Islands families of Radeon chips. Writing this driver would depend on the first target listed above, implementing the fixed-function OpenGL pipeline as shaders, to avoid doing duplicate work.
Such a driver would enable OpenGL support for many commonly available PCI Express graphics cards, which can be used in for example the Sam460, the X5000 or PCI Express Powermac G5s. This hardware also supports many more features required for OpenGL 3 and beyond.
To avoid duplicated work, this project will only be finished once the Implement the fixed-function OpenGL pipeline as shaders project is completed.
Please note: This driver will only enable 3D functionality on systems where the Radeon hardware already fully works in 2D mode. It will not enable the usage of R600, R700, Evergreen or Northern Islands based Radeon cards on systems where they do not already work for desktop use. In particular, AGP versions of these cards are known to be quite hit and miss when it comes to working in PowerMac G5 machines. Please make sure that you have (or can get) a card that's known to work with your system, no matter which system you have.
Each project will be completed at the latest 3 months after the project is fully funded.
During development, beta versions will be released to the public for testing on this website. Release versions will also be released on this website every time a single project is completed.
The general fund is for contributions where the contributor has either not specified a specific project to fund, or where the contributor has explicitly left it up to me to decide which project to allocate it to. The general fund will be used to make up for gaps in contributions assigned to a specific project.
# | Name | EUR Received | EUR Required | Funding completion |
---|---|---|---|---|
1 | Fixed-function pipeline as shaders | 1,127.00 EUR | 2,000.00 EUR | 56% |
2 | Framebuffer objects | 400.00 EUR | 500.00 EUR | 80% |
3 | Shaders | 358.00 EUR | 2,500.00 EUR | 14% |
4 | Programs | 57.00 EUR | 1,000.00 EUR | 6% |
5 | R600 driver | 490.00 EUR | 2,000.00 EUR | 25% |
General fund | 5,975.00 EUR | |||
Total | 8,407.00 EUR | 8,000.00 EUR | 105% |
Ten public beta versions have been released so far, with the latest one being released on 29 September 2024. Please make sure you read the included ReadMe file! Below are the download links.
You're of course still more than welcome to contribute, but the funding goal has been reached and no further funding is required for the completion of these projects.
If you'd like to contribute to these TinyGL improvements, you can do so via bank transfer or Paypal with the details below.
Any contribution received in currencies other than EUR will be counted towards the EUR goal based on the conversion done by the Xe Currency Converter at the time of receipt of funds.
The project that reaches its funding goal first will be worked on and completed first.
If you have any questions or queries, please contact me at tinyglpayments@molsen.co.za.
Recipient name | Mark Olsen |
Institution number | 621 |
Account number | 200110291388 |
Transit number | 16001 |
Bank Address | 99 Bank Street, Suite 1420 Ottawa ON K1P 1H4 Canada |
Recipient name | Mark Olsen |
BIC/SWIFT | TRWIBEB1XXX |
IBAN | BE64 9673 1302 7652 |
Bank Address | Avenue Louise 54, Room S52 Brussels 1050 Belgium |
Recipient name | Mark Olsen |
Sort code | 23-14-70 |
Account number | 38259221 |
BIC/SWIFT | TRWIGB2L |
IBAN | GB06 TRWI 2314 7038 2592 21 |
Bank Address | 56 Shoreditch High Street London E1 6JJ United Kingdom |
Recipient name | Mark Olsen |
Routing number | 084009519 |
Account number | 9600004524439801 |
Account type | Checking |
Bank Address | 19 W 24th Street New York NY 10010 United States |
Please include a message with your transfer which starts with the letters tgl, followed by a space and as much of your email address as you can fit. After you've made the bank transfer, please send an email to tinyglpayments@molsen.co.za with information on which project(s) you'd like to assign your contribution to.
Please also let me know if you'd like your contribution to be public, and if so, which name to display for the contribution.
Please include a note with your payment indicating if you'd like your contribution to be public, and if so, which name to display for the contribution. If you want to donate to multiple individual projects, then please also include information on how to divide the contribution. If you wish, you can include your email address as well, so this information can be amended after payment.
Name | EUR amount |
---|---|
MoerBoer | 60 |
Héctor Juan | 20 |
IKE | 186 |
Zetec-S | 29 |
roschmyr | 150 |
SkonsFr | 52 |
Primax | 100 |
Rafael/ARMO | 100 |
reenstix | 100 |
MDW | 50 |
Antoine Dubourg | 50 |
KJB | 50 |
pampers | 5,000 |
Jaime Cagigal Bordonaba | 55 |
Falcon_11 | 50 |
SLD-SNaKe | 25 |