Hello everyone,
1. i'm searching for information or/and documentation about balloon3d its implemention details 2. and the problems it was designed to solve. 3. what details of hardware acceleration does it abstract, 4. and why does croquet does need an extra opengl ffi interface 5. (why ffi isn't that the slowest way to go compared to a plugin ?)
any hints and every information is welcome faithfully dominic letz
On May 27, 2007, at 22:59 , Dominic Letz wrote:
Hello everyone,
- i'm searching for information or/and documentation about
balloon3d its implemention details
Not much there beyond the code and examples.
- and the problems it was designed to solve.
As I understand it, providing a cross-platform 3D graphics framework for Squeak. It has a decent software-only renderer but was designed to allow use of hardware acceleration using both OpenGL and Direct3D.
- what details of hardware acceleration does it abstract,
Not sure what you mean - everything?
- and why does croquet does need an extra opengl ffi interface
It gives full access to all OpenGL functionality from Smalltalk without having to deal with C code, allowing rapid experimentation. Croquet's renderer is very much different from Balloon3D, it just uses the B3DAccelerator plugin to create a window (rather than having to deal with GLX/WGL/AGL).
- (why ffi isn't that the slowest way to go compared to a plugin ?)
It's deemed fast enough and much simpler than a plugin.
I wouldn't be surprised if Croquet's ffi-based rendering using VBOs turned out to be faster than Balloon3D rendering.
OTOH, the abstraction that B3D provides is still valuable - I for one wouldn't mind if someone would bring it up to date and add features, in particular because it works on both GL and D3D.
- Bert -
Bert Freudenberg wrote:
OTOH, the abstraction that B3D provides is still valuable - I for one wouldn't mind if someone would bring it up to date and add features, in particular because it works on both GL and D3D.
- Bert -
I second that.
Not only for the abstraction layer it provides but also because it would be good to have something more versatile than Croquet, too. Croquet is a really interesting projects (and probably it is the future), but it is designed around the virtual reality paradigm, which is overkill sometimes.
What would be needed to make Balloon3D up to date?
c.
On May 28, 2007, at 16:02 , Cesare Marilungo wrote:
Bert Freudenberg wrote:
OTOH, the abstraction that B3D provides is still valuable - I for one wouldn't mind if someone would bring it up to date and add features, in particular because it works on both GL and D3D.
- Bert -
I second that.
Not only for the abstraction layer it provides but also because it would be good to have something more versatile than Croquet, too. Croquet is a really interesting projects (and probably it is the future), but it is designed around the virtual reality paradigm, which is overkill sometimes.
What would be needed to make Balloon3D up to date?
Well, first one would have to check if it still works in 3.9 and 3.10, and adapt it if needed - should not be too hard.
After that it's optimizing (like using newer APIs than DX7) and adding features that someone may need - currently B3D only supports single-textured Gouraud-shaded triangle meshes with Phong lighting and fog, and I think stenciling. This is enough for many eductional and scientific tasks, but for game-engine quality you would have to add at least multi-texturing and texture combining (to allow dot3 bump mapping for example), allowing rendering quality as was standard in about 2004. Vertex shader support would be next on my wish list, which is a bit harder as there is no cross-API standard (except for Cg ... maybe a Cg plugin would be an option). And finally pixel shaders, which require relatively modern graphics boards (whereas vertex shaders can be emulated in the driver).
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Even the software renderer would be interesting if someone would try giving it a bit of assembly-love to make it efficient enough on the OLPC (which has no 3D hardware support at all).
As for higher-level optimizations, I believe B3D does only simple frustum culling if at all. Efficient picking and collision detection would be nice, etc.
And at an even higher level, Wonderland is still interesting but has not seen much improvement since its initial release.
- Bert -
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
On May 28, 2007, at 17:22 , Brad Fuller wrote:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
Because OpenGL support on Windows is consistently inferior to Direct3D support on consumer-level hardware. I prefer OpenGL over D3D any day, but reality is that as long as you want to ship to a non- technical audience on Windows you absolutely need to support D3D.
- Bert -
And if you are making a game, the directX 10 or 15 or 2000, what ever comes with Vista is the most advanced graphics API you can have on a desktop as far as I know. Some people may let that go by just because it isn't "freedom 0" or whatever. But probably not people want to make money selling 3D games. :)
From: Bert Freudenberg bert@freudenbergs.de Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Balloon 3D Date: Mon, 28 May 2007 17:49:19 +0200
On May 28, 2007, at 17:22 , Brad Fuller wrote:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
Because OpenGL support on Windows is consistently inferior to Direct3D support on consumer-level hardware. I prefer OpenGL over D3D any day, but reality is that as long as you want to ship to a non- technical audience on Windows you absolutely need to support D3D.
- Bert -
_________________________________________________________________ Make every IM count. Download Messenger and join the im Initiative now. Its free. http://im.live.com/messenger/im/home/?source=TAGHM_MAY07
J J wrote:
And if you are making a game, the directX 10 or 15 or 2000, what ever comes with Vista is the most advanced graphics API you can have on a desktop as far as I know. Some people may let that go by just because it isn't "freedom 0" or whatever. But probably not people want to make money selling 3D games. :)
Ah... but now you are stepping into a different vortex ;-) than providing a platform-agnostic development platform. Professional game development comes in many flavors, of course, but the tools used are pretty much universal. Squeak has a long way to go to even providing the tools to create casual games in any serious way. I'm not saying it can't be done, or that it hasn't been done or that I wouldn't _love_ to see it. It's just not on the game developer's radar.
Bert's comment: "Because OpenGL support on Windows is consistently inferior to Direct3D support on consumer-level hardware." brings up the question "how much inferior?" So much that it's a no-brainer? Or will OpenGL get there. (I don't know the answer - I didn't know that there was any difference between the different platform implementations.)
HOWEVER, if updated D3D could attract game developers to Squeak, that is well worth considering.
brad
On May 28, 2007, at 11:08 AM, Brad Fuller wrote:
Bert's comment: "Because OpenGL support on Windows is consistently inferior to Direct3D support on consumer-level hardware." brings up the question "how much inferior?" So much that it's a no-brainer? Or will OpenGL get there. (I don't know the answer - I didn't know that there was any difference between the different platform implementations.)
It's not that OpenGL is inferior to Direct3D per se (in fact, it not uncommon for the most advanced GPU features to be exposed via OpenGL extensions before they are supported by Direct3D). The problem is that Direct X comes installed by default on every Windows machine, whereas Microsoft's default OpenGL implementation is a joke; for proper OpenGL support, you need to download the latest drivers from from the vendors site (for laptops, you sometimes have to get unofficial drivers from enthusiast sites). While this is not a big hurdle for hardcore gamers, it is for the casual computer user.
Josh
HOWEVER, if updated D3D could attract game developers to Squeak, that is well worth considering.
brad
Well, seems MS marketing was successful on you. The opposite is true - with OpenGL you can access the full range of hardware features that a specific vendor puts in their cards, not only the ones that MS deems worthy of supporting. Using OpenGL you can program with DX10- like features even in XP (for example, NVIDIA's demos usually use OpenGL).
- Bert -
On May 28, 2007, at 19:36 , J J wrote:
And if you are making a game, the directX 10 or 15 or 2000, what ever comes with Vista is the most advanced graphics API you can have on a desktop as far as I know. Some people may let that go by just because it isn't "freedom 0" or whatever. But probably not people want to make money selling 3D games. :)
From: Bert Freudenberg bert@freudenbergs.de Reply-To: The general-purpose Squeak developers list<squeak- dev@lists.squeakfoundation.org> To: The general-purpose Squeak developers list<squeak- dev@lists.squeakfoundation.org> Subject: Re: Balloon 3D Date: Mon, 28 May 2007 17:49:19 +0200
On May 28, 2007, at 17:22 , Brad Fuller wrote:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
Because OpenGL support on Windows is consistently inferior to Direct3D support on consumer-level hardware. I prefer OpenGL over D3D any day, but reality is that as long as you want to ship to a non- technical audience on Windows you absolutely need to support D3D.
- Bert -
From: Bert Freudenberg bert@freudenbergs.de Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org Subject: Re: Balloon 3D Date: Mon, 28 May 2007 20:45:28 +0200
Well, seems MS marketing was successful on you. The opposite is true - with OpenGL you can access the full range of hardware features that a specific vendor puts in their cards, not only the ones that MS deems worthy of supporting. Using OpenGL you can program with DX10- like features even in XP (for example, NVIDIA's demos usually use OpenGL).
- Bert -
For some definition of "successful" (i.e. I haven't bought Vista nor even installed it on a PC that could have had a free upgrade). I am just repeating what I read in some tech magazine which I thought would be neutral. I would, of course, love for it to be wrong. For the most part Vista looks to me like what Mac had at least 5 years ago, at a fraction of the speed.
But the article they had on the DX10 (or whatever it is) showed quite a difference.
_________________________________________________________________ PC Magazines 2007 editors choice for best Web mailaward-winning Windows Live Hotmail. http://imagine-windowslive.com/hotmail/?locale=en-us&ocid=TXT_TAGHM_migr...
On 28/05/07, Bert Freudenberg bert@freudenbergs.de wrote:
Well, seems MS marketing was successful on you. The opposite is true
- with OpenGL you can access the full range of hardware features that
a specific vendor puts in their cards, not only the ones that MS deems worthy of supporting. Using OpenGL you can program with DX10- like features even in XP (for example, NVIDIA's demos usually use OpenGL).
You are totally right on this point. Saying that OpenGL is inferior to DirectX it's a marketing move and nothing more. About 10 years ago i tried to implement something in 3D using directX. it was a horror for me as for newbie. Then i tried to do same using OpenGL and had working example app in few days. And since then OpenGL will be always superior for me. Its simple. It works. And works as required, regardless platform where you using it. What else you need?
Well,
i think another point is that at least with Windows Vista, Microsoft is not shipping OpenGL with their drivers anymore [only software emulation]. This means that every user who wants to use OpenGL has to download and install a OpenGL supporting driver from his GPU manufacturers home page.
So one could argue supporting only OpenGL would not be real platform independent since Windows users won't be able to use it without updating their system.
Am 28.05.2007, 17:49 Uhr, schrieb Bert Freudenberg bert@freudenbergs.de:
On May 28, 2007, at 17:22 , Brad Fuller wrote:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
Because OpenGL support on Windows is consistently inferior to Direct3D support on consumer-level hardware. I prefer OpenGL over D3D any day, but reality is that as long as you want to ship to a non-technical audience on Windows you absolutely need to support D3D.
- Bert -
From: "dominic.letz@berlin.de" dominic.letz@berlin.de Reply-To: The general-purpose Squeak developers listsqueak-dev@lists.squeakfoundation.org To: "The general-purpose Squeak developers list"squeak-dev@lists.squeakfoundation.org Subject: Re: Balloon 3D Date: Tue, 29 May 2007 09:31:58 +0200
Well,
i think another point is that at least with Windows Vista, Microsoft is not shipping OpenGL with their drivers anymore [only software emulation]. This means that every user who wants to use OpenGL has to download and install a OpenGL supporting driver from his GPU manufacturers home page.
That really sucks because at least Acer has an agreement with NVIDIA that NVIDIA must make their driver *not work* (!!!!) with the Video card on Acer laptops. I really don't understand the logic behind this at all. All I see from it is not being able to get the advantages of updated drivers when they are made, as well as newer games not playing because they don't recognize the NVIDIA driver. Incredibly annoying to put it gently.
_________________________________________________________________ PC Magazines 2007 editors choice for best Web mailaward-winning Windows Live Hotmail. http://imagine-windowslive.com/hotmail/?locale=en-us&ocid=TXT_TAGHM_migr...
Am Monday 28 May 2007 schrieb Brad Fuller:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
Dropping Direct3D support is worth thinking about.
What I would like to have is a comparison between Ballon3D and Croquet. About the features, the programing model, pros and cons.
Martin
Brad Fuller a écrit :
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
If i reverse your argument, what about having both - OpenGL rendering via FFI (the croquet way) - Direct3D rendering via FFI
Then, you put the logic in the VI instead of the VM (or plugin).
Still, you try to have a common behaviour (public interface/method dictionary).
But you don't have to limit the plugin to the intersection of capabilities. You rather program the union (emulate parts which are not native in underlying library, which is much easier in plain smalltalk).
This would have advantages for rapid prototyping/development. There is a great discussion taking place in vwnc list just about things like this (Graphics) and another on comp.lang.Smalltalk (about Sport/File & Socket IO via FFI).
Nicolas
Brad Fuller wrote:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
Right.
There's no need to support Direct3D unless you want to give access to Direct3D specific functionalities, which doesn't make much sense if you're going to abstract the low level layer.
OpenGL is crossplaform and supported on all 3D accelerated cards.
Regarding the OLPC, there's Mesa3D (http://www.mesa3d.org/).
c.
On May 28, 2007, at 19:35 , Cesare Marilungo wrote:
Regarding the OLPC, there's Mesa3D (http://www.mesa3d.org/).
I'd bet that Balloon3D's software renderer is at least as fast as Mesa's. Both are currently too slow for the OLPC (which runs at 1200x900x16 on a performance-challenged 400 Mhz CPU). That's why Mesa is not shipped on the OLPC system.
- Bert -
On May 28, 2007, at 10:53 AM, Bert Freudenberg wrote:
I'd bet that Balloon3D's software renderer is at least as fast as Mesa's. Both are currently too slow for the OLPC (which runs at 1200x900x16 on a performance-challenged 400 Mhz CPU). That's why Mesa is not shipped on the OLPC system.
I just happened to have played with Alice and the Bunny in Squeak 3.4 on a Pentium 166 laptop running Windows 98 SE *yesterday*. In that little postage-stamp sized window of the "Play With Me" demo, performance was surprisingly snappy. I got about five frames per operation (bunny turn: left, etc.). Almost seemed faster than Morphic on the poor thing...
Cheers, Tim
Bert Freudenberg wrote:
On May 28, 2007, at 19:35 , Cesare Marilungo wrote:
Regarding the OLPC, there's Mesa3D (http://www.mesa3d.org/).
I'd bet that Balloon3D's software renderer is at least as fast as Mesa's. Both are currently too slow for the OLPC (which runs at 1200x900x16 on a performance-challenged 400 Mhz CPU). That's why Mesa is not shipped on the OLPC system.
Unless the Mesa software renderer has seen *significant* work in the last years I would expect the B3D software renderer to beat the hell out of it. I wrote it because back in the days (with 200MHz computers) Mesa was too slow for running the software simulation. Nowadays on my measly 1GHz notebook I can run Wonderland from 3.6 in approx. 600@400 with 25fps.
Cheers, - Andreas
On May 28, 2007, at 20:43 , Andreas Raab wrote:
Bert Freudenberg wrote:
On May 28, 2007, at 19:35 , Cesare Marilungo wrote:
Regarding the OLPC, there's Mesa3D (http://www.mesa3d.org/).
I'd bet that Balloon3D's software renderer is at least as fast as Mesa's. Both are currently too slow for the OLPC (which runs at 1200x900x16 on a performance-challenged 400 Mhz CPU). That's why Mesa is not shipped on the OLPC system.
Unless the Mesa software renderer has seen *significant* work in the last years I would expect the B3D software renderer to beat the hell out of it. I wrote it because back in the days (with 200MHz computers) Mesa was too slow for running the software simulation. Nowadays on my measly 1GHz notebook I can run Wonderland from 3.6 in approx. 600@400 with 25fps.
That was my hunch too, but without measuring I didn't want to loose a bet that easily ;)
- Bert -
On May 28, 2007, at 20:43 , Andreas Raab wrote:
Bert Freudenberg wrote:
On May 28, 2007, at 19:35 , Cesare Marilungo wrote:
Regarding the OLPC, there's Mesa3D (http://www.mesa3d.org/).
I'd bet that Balloon3D's software renderer is at least as fast as Mesa's. Both are currently too slow for the OLPC (which runs at 1200x900x16 on a performance-challenged 400 Mhz CPU). That's why Mesa is not shipped on the OLPC system.
Unless the Mesa software renderer has seen *significant* work in the last years I would expect the B3D software renderer to beat the hell out of it. I wrote it because back in the days (with 200MHz computers) Mesa was too slow for running the software simulation. Nowadays on my measly 1GHz notebook I can run Wonderland from 3.6 in approx. 600@400 with 25fps.
On the OLPC XO-B2, the 200x200 Cube3D runs at 23 frames per second, at 400x400 it's 12 fps.
Empty wonderland (just ground plane) is 14 fps at 200x200, 5 fps at 400x400.
After adding a large pooh object it is 6 fps at 200x200, 2.6 fps at 400x400.
Perhaps if someone would spend time on profiling and optimizing it would almost become usable ... and perhaps adding an Xv overlay that scales up by two ...
- Bert -
Brad Fuller wrote:
Bert Freudenberg wrote:
The bad thing is that all of this requires hacking C code (twice, for OpenGL and Direct3D), inventing new plugin interfaces etc. This is *so* much nicer in Croquet where you do everything from Smalltalk, and for OpenGL only ... But once the low-level work is done it should be relatively simple to use.
Why not dump Direct3D support? That'll make it more attractive to update now and in the future and less platform specific.
But if all you need is OpenGL, why bother with B3D? The whole point of B3D is to abstract away differences in the underlying APIs; if you are only planning to use a single API there is really no point in the abstraction - might as well go straight for OpenGL instead of via another indirection.
Cheers, - Andreas
squeak-dev@lists.squeakfoundation.org