Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.mel.connect.com.au!news.mira.net.au!vic.news.telstra.net!act.news.telstra.net!psgrain!newsfeed.internetmci.com!in2.uu.net!news.bb.net!news.blarg.net!blarg.net!vanevery From: vanevery@blarg.net (Brandon J. Van Every) Newsgroups: comp.graphics.api.misc,comp.graphics.algorithms,comp.windows.x.i386unix,gnu.misc.discuss,comp.unix.bsd.freebsd.misc,comp.os.linux.development.apps Subject: Re: Freeware community needs 3d library NOW Followup-To: comp.graphics.api.misc,comp.graphics.algorithms,comp.windows.x.i386unix,gnu.misc.discuss,comp.unix.bsd.freebsd.misc,comp.os.linux.development.apps Date: 27 Jun 1996 05:28:42 GMT Organization: Blarg! Online Services 206/441-9109 Lines: 110 Message-ID: <4qt66a$nag@guysmiley.blarg.net> References: <4qlf04$7pj@guysmiley.blarg.net> <4qn08b$ntl@fido.asd.sgi.com> NNTP-Posting-Host: animal.blarg.net X-Newsreader: TIN [version 1.2 PL2] Xref: euryale.cc.adfa.oz.au comp.graphics.api.misc:640 comp.graphics.algorithms:29024 comp.windows.x.i386unix:20367 gnu.misc.discuss:26735 comp.unix.bsd.freebsd.misc:22255 comp.os.linux.development.apps:18105 Allen Akin (akin@tuolumne.asd.sgi.com) wrote: : I agree with you that there are many reasons to be dissatisfied with : Direct3D. Actually, I don't have any opinions on Direct3d right now. As an API, what do you see as the problems with it? : But by dismissing OpenGL, you're throwing out the most : viable alternative. OpenGL is widely available, in both commercial : and freeware (Mesa) form. Optimization of software-only renderers is : underway at several sites (and I hear from one of them that their : version of OpenGL is already faster than Direct3D for some important : operations). Could you please provide URL's of these sites? : Many PC hardware vendors already support OpenGL, because : Microsoft provides it for both Windows NT and Windows 95. Developers : have been using it for a couple of years, so it's known to be strong : enough to support real-world applications. Unlike Direct3D, it runs : under a variety of operating systems and window systems. And so on. : | Everything I have to say about OpenGL, is on my web pages. : As we've discussed in the past, many of your statements about OpenGL : are incorrect, and generally I'll respond to them so that other people : aren't misled. In this case, I'll simply ask if you're really serious : about building an alternative to Direct3D. If so, you ought to : reconsider OpenGL. : Allen Allen, admittedly you are probably right, that some of my statements in the past about OpenGL have been incorrect. However, here is my current list of what I think is wrong with OpenGL. Or at any rate, what I propose to do better in Free3d: 1) OpenGL guarantees the order of rendering. There should be an option to control whether there's a guarantee or not. This has enormous implications for large background Phong-shaded triangles, etc. 2) OpenGL allows the user to switch cotexts at any time, even though those context switches are typically enormously disruptive to system throughput. The API user should be made very conscious of the fact that context switching is expensive, and should not be allowed to just do it whenever. We'd like to think that users have enough intelligence not to write bad apps, but in practice, a lot of people don't have the intelligence to know that. Others would argue that even if they did know, they shouldn't have to. So we should guard against it in the API design itself. 3) OpenGL implements way too many features that BOTH impede efficency AND are not important to support in a large number of applications. I haven't yet finished my "laundry list" of the features I want to throw away. But let's start with stenciling and user clipping. You might say, "well, just turn them off." But in practice, when you require these things as part of the API, people end up implementing them "the lazy way" because it's too much recombinatorial work to do otherwise. The code becomes peppered with if..then's, which is a performance drag. I think a 3d API should specify less things to include than OpenGL. 4) The enormous number of OpenGL states also encorages "state driven" code design, where you have an enormous "GL context" that is constantly being used as both information and a scratch computation area. This happens because it simplifies the design complexity. However, it's probably one of the worst design decisions one could make, because data motion is a huge bottleneck. On RISC architectures, it's the principle bottleneck. The API should be designed in such a way, that the "simplest" implementation of the architecture is not condusive to "state record" designs. That may simple mean providing a Sample Implementation that breaks out all the possible recombinations of cases, at the highest possible level. 5) OpenGL makes no guarantee that the lighting normal is the same as the surface normal. It should be possible to guarantee this, and it should also be the default behavior. In many kinds of rendering, it would allow the geometry pipe and the rasterization pipe to re-use surface normal values. 6) OpenGL has no provisions for pre-cached global diffuse shaded vertices. A clever game could compute these once in a static scene. Then, as long as the static geometry and lighting doesn't change, and you have sufficient memory, you don't have to do illumination ever again. 7) OpenGL has no pathways for "pre-accepted" geometry. A user's 3d spatial database could potentially feed a large number of primitives to the library, that do not require clipping or even accept/reject testing. 8) OpenGL has no facilities for tracking the delta's of a user's motion, so as to determine things like "we've only changed the X position," "we're only moving in the XZ plane," etc. Or, to specify only XY, XZ, or YZ motion. These could potentially save a lot of ops. Cheers, -- Brandon J. Van Every | Check out Free3d, my 100% efficient, 100% portable | 3d lib, at <http://www.blarg.net/~vanevery>. 3d Computer Graphics | C++ UNIX X11 WinNT | E-mail: vanevery@blarg.net