Compositing and Warp3D wish-list

AmigaOS users can make feature requests in this forum.
Locked
User avatar
Daytona675x
AmigaOS Core Developer
AmigaOS Core Developer
Posts: 34
Joined: Wed Jan 22, 2014 5:18 pm
Location: Cologne, Germany
Contact:

Compositing and Warp3D wish-list

Post by Daytona675x »

The (shortened) wish-list I came up with while developing "Ace Of Hearts", "VoxelBird" and another title that will be released in some days:

Compositing:

1.1. support for normalized texture-coordinates.
1.2. and texture-repeat.
1.3. full RGBA-per-vertex-coloring, not just Alpha through that very limited COMPTAG_SrcAlpha.
1.4. get rid of those fixed vertex-struct-types. Let us define pointer, type and strides ourselfs.
1.5. z-buffer and 3D coordinates (but keep 2D coordinates)

If those few things were implemented Compositing would be almost as, well, "powerful" as Warp3D ;)

Warp3D:

2.1. support for 2D coordinates. Often 3D coordinates are not necessary, why waste band-width. Considering the ancient roots of Warp3D I wonder why this is not inside anyway.
2.2. same as 1.4. Get rid of those limitations of InterleavedArrays. It was all good with VertexPointer etc. InterleavedArrays were a step back.
2.3. proper flat-shading. Not using W3D_GOURAUD is almost useless since vertex-color-arrays cannot be used at the same time. This is especially problematic if you want to draw a FLAT shaded indexed triangle list. You lose all the benefits of indexed drawing because you HAVE to enable W3D_GOURAUD with the consequence that vertices cannot be shared among triangles anymore, you have to create additional vertices for every triangle, otherwise the color of shared vertices would "bleed" in.
2.4. sorry, I have to put some salt in that wound: support for RadeonHD. Wonder why that's so hard to do considering that Warp3D is just a collection of rather basic and only a few functions, and also considering that Compositing can already do much of it. And as far as I know it is almost done (at least there was such a news about 1.5 years ago).

IMHO Warp3D for RadeonHD should have top-priority. Gallium and whatever, all nice, but really:
Warp3D is so basic and at the same time would bring all existing Amiga 3D software to the latest Amiga hardware.
It should be a rather easy task but would have really significant impact.
So why not finish that first before dreaming of other things?

Cheers,
Daniel
Last edited by Daytona675x on Tue May 06, 2014 6:48 am, edited 1 time in total.
Warp3D driver code-basher and bug-smasher - btw.: driver writing is nothing mysterious
User avatar
ddni
Posts: 230
Joined: Fri Dec 02, 2011 11:06 pm

Re: Compositing and Warp3D wish-list

Post by ddni »

Good question about RadeonHD Warp3D. I waited expectantly for it in 2012, but the intervening 2 years has delivered nothing.
If it is cancelled, that would be disappointing, but easier to accept than this constant waiting with no news.
User avatar
HKvalhe
Posts: 256
Joined: Mon Sep 03, 2012 9:39 am
Location: Bergen, Norway
Contact:

Re: Compositing and Warp3D wish-list

Post by HKvalhe »

ddni wrote:Good question about RadeonHD Warp3D. I waited expectantly for it in 2012, but the intervening 2 years has delivered nothing.
If it is cancelled, that would be disappointing, but easier to accept than this constant waiting with no news.
I don't think Warp3D for RadeonHD is likely. I suppose it is cancelled/shelved. It think it will be fair to say that the focus is on completing AmigaOS 4.2, with Gallium3D and OpenGL Mesa.
So don't expect any Warp3D for RadeonHD. There hasn't been any more news about it for a very long while, so we can only assume that the project is dead...

I hate to spin that bean, but has to be realistic...
Helge Kvalheim, Norway
AmigaOne 500 @ 1.15Ghz Samsung SSD 840 EVO 500GB, AmigaOS 4.1 Final, 2GB DDR2, Sapphire Radeon HD 6670 1GB GDDR5 PCI-E, ESI@Juli XTe PCIe audio
User avatar
Hans
AmigaOS Core Developer
AmigaOS Core Developer
Posts: 703
Joined: Tue Dec 21, 2010 9:25 pm
Location: New Zealand
Contact:

Re: Compositing and Warp3D wish-list

Post by Hans »

Daytona675x wrote:The (shortened) wish-list I came up with while developing "Ace Of Hearts", "VoxelBird" and another title that will be released in some days:

Compositing:

1.1. support for normalized texture-coordinates.
1.2. and texture-repeat.
1.3. full RGBA-per-vertex-coloring, not just Alpha through that very limited COMPTAG_SrcAlpha.
1.4. get rid of those fixed vertex-struct-types. Let us define pointer, type and strides ourselfs.
1.5. z-buffer and 3D coordinates (but keep 2D coordinates)

If those few things were implemented Compositing would be almost as, well, "powerful" as Warp3D ;)
No, compositing won't be turned into a pseudo-3D driver. That's way beyond the scope of what it's supposed to be. Plus, the driver code is more than complex enough as-is.
Daytona675x wrote:2.1. support for 2D coordinates. Often 3D coordinates are not necessary, why waste band-width. Considering the ancient roots of Warp3D I wonder why this is not inside anyway.
2.2. same as 1.4. Get rid of those limitations of InterleavedArrays. It was all good with VertexPointer etc. InterleavedArrays were a step back.
2.3. proper flat-shading. Not using W3D_GOURAUD is almost useless since vertex-color-arrays cannot be used at the same time. This is especially problematic if you want to draw a FLAT shaded indexed triangle list. You lose all the benefits of indexed drawing because you HAVE to enable W3D_GOURAUD with the consequence that vertices cannot be shared among triangles anymore, you have to create additional vertices for every triangle, otherwise the color of shared vertices would "bleed" in.
Warp3D is old, out of date, and set to be retired. Enhancing it now would be a waste of precious time and resources.

Daytona675x wrote:2.4. sorry, I have to put some salt in that wound: support for RadeonHD. Wonder why that's so hard to do considering that Warp3D is just a collection of rather basic and only a few functions, and also considering that Compositing can already do much of it. And as far as I know it is almost done (at least there was such a news about 1.5 years ago).

IMHO Warp3D for RadeonHD should have top-priority. Gallium and whatever, all nice, but really:
Warp3D is so basic and at the same time would bring all existing Amiga 3D software to the latest Amiga hardware.
It should be a rather easy task but would have really significant impact.
So why not finish that first before dreaming of other things?
Yes, it's disappointing that the announced RadeonHD Warp3D driver still isn't finished.

That said, don't kid yourself into thinking that it's a "rather easy task." Writing hardware drivers brings added challenges over application development. Debugging techniques used by application developers can't be used, and the GPU/system locking up is often the only feedback available, making debugging extra challenging. A single problem can keep you stuck for weeks or more, even when the driver is "almost done." Other drivers in the OS have been delayed for months in an "almost done" state because of one show-stopping bug. Trust me, the latest Radeon HD cards are whole orders more complex than the old Radeon cards, and a Warp3D driver is much more complex than compositing.

Hans
http://hdrlab.org.nz/ - Amiga OS 4 projects, programming articles and more. Home of the RadeonHD driver for Amiga OS 4.x project.
User avatar
Daytona675x
AmigaOS Core Developer
AmigaOS Core Developer
Posts: 34
Joined: Wed Jan 22, 2014 5:18 pm
Location: Cologne, Germany
Contact:

Re: Compositing and Warp3D wish-list

Post by Daytona675x »

Hi,

thanks for your response.
No, compositing won't be turned into a pseudo-3D driver. That's way beyond the scope of what it's supposed to be.
That only covers point 1.5.
1.1, 1.2, (especially) 1.3 and 1.4. are very useful real-world features for a 2D rendering lib.
Besides that: since there's already support for w/perspective correction I don't think adding more 3D features is totally out of topic. After all you "abuse" it as a pseudo-3D-driver (library, not driver) / Warp3D replacement in your own boing-ball demo ;)
Plus, the driver code is more than complex enough as-is.
1.1. to 1.4. should not be killers from an "adding complexity" point of view.
1.1.: near to zero complexity. The compositing-engine knows the size of the bitmap, add a parameter to switch to normalized coords, voila.
1.2.: shouldn't be too hard. The old gfx-drivers can do it through Warp3D. The new RadeonHD, if it is as complete as claimed, too.
1.3.: I bet the GPU already gets full RGBA vertex colors internally - only that it's always white + alpha.
1.4.: c'mon :)
Warp3D is old, out of date, and set to be retired.
Well, it's the only thing we got :(
And somehow it looks like it will stay that way.
Calling it deprecated but not providing a proper solution / replacement makes it not-so-deprecated again.
Therefore it should still be a target for improvements / fixes. Especiall considering that Warp3D by itself was claimed to be "almost done" for RadeonHD, that's not the statement I'd expect for a dead deprecated uncontinued lib.
Yes, it's disappointing that the announced RadeonHD Warp3D driver still isn't finished.
Disappointing? I'd say "embarrassing" :)
But yet again: since you say "still" that implies that it's being worked on?! So definitely not as "retired" as you said above?!
That said, don't kid yourself into thinking that it's a "rather easy task." Writing hardware drivers brings added challenges over application development.
I know. That's why I said "rather". With that word I wanted to relativate it.
It is a relatively easy task compared to other stuff, especially considering that

- the RadeonHD driver is apparently supporting all that's needed.
- compositing obviously already contains lots of code that can be used.
- it was claimed to be "almost done" 1.5 years ago.

Of course there is more in there than what compositing does. But nothing that would justify such an incredible long delay, RadeonHD-GPU complexity toing and froing.
As being said: if you'd add features 1.1 to 1.5 to compositing you'd already have the most important Warp3D features (and for 1.1. and 1.4. the GPU-complexity argument doesn't count).

Anyway, you shouldn't over-mystify driver development (plus I thought the driver is done and we're talking about the Warp3D library). Yes, it's probably harder than writing the avg-Joe-app, but it's no huhu-super-hard thingy neither (supposing the hardware is documented well). Yes, it's harder to debug, that's the biggest difficulty compared to application programming. At the end it's just bread and butter like everything else. And actually, on some OS with no real debugger and not too decent docs app-writing is not that much easier ;)

But, as being said, we aren't talking about driver-dev but library-dev. A Warp3D compatible library, which would sit on top of the RadeonHD-driver and as such does not communicate with the hardware directly at all (which renders all arguments regarding "hardware coding is tough" obsolete anyway), should be in no way more difficult to code than writing a normal application, asuming the driver is complete and documented well (which we can asume, I suppose).
A single problem can keep you stuck for weeks or more, even when the driver is "almost done."
Yes, emphasis on "weeks". Not years :)

What I don't get is, why the work on this "almost done" thing is not finished. Instead other construction-sites are openend up. That reminds me on times when I was younger: started lots of projects - and didn't finish them because interests shifted to other things as soon as there was no real technical challenge anymore but only ugly routine work remained :)
Focus!

Anyway, speaking of "waste of precious time and resources": the biggest waste of time and resources happens when you spend lots of time on a project and cancel it when you hit the first not-trivial problem. Apparently this is what happened to Warp3D for RadeonHD. Or is it due to incompetence (forgive me, no offence, but that question simply arises)? Or overwork? We can only guess. But certainly we're not talking about unsolvable rocket-science when it comes to Warp3D for RadeonHD.

But well, after all this topic was meant as a wish-list.
I'd be happy already if those additional useful 2D features for compositing would be considered.
Warp3D? Actually I gave up already :)

Cheers,
Daniel
Warp3D driver code-basher and bug-smasher - btw.: driver writing is nothing mysterious
User avatar
ssolie
Beta Tester
Beta Tester
Posts: 1010
Joined: Mon Dec 20, 2010 8:51 pm
Location: Canada
Contact:

Re: Compositing and Warp3D wish-list

Post by ssolie »

I don't see any reason to continue this discussion considering Warp3D is going away. Locking.
ExecSG Team Lead
Locked