Quote: because its pretty much impossible to do something as simple as:
difference{sphere <0,0,0>, 2
box <0,0,0> <4,4,4>}
There's no reason you can't do this as part of your own interpreted language rendered in OpenGL.
Classes here at Stanford have students implement their own ray tracers in OpenGL. No problem. Don't know what your issue is, because you haven't yet given actual technical reasons other than that OpenGL doesn't natively and directly support your specification language.
I'll have you note that your spec language isn't exactly inherent to ray tracing, either.
Quote: 2. Some sort of depth tree to determine what to bother rendering at all, based on what is visible.
No. OpenGL natively only does z-coordinate depth checking. If you want a depth tree you write it yourself. It is not always appropriate.
Quote: The problem with the former is that, if you want to clip a complex object or set of objects, you *must* predefine them, since in order to "get" the mesh needed to produce the result you would have to use raytracing to figure out where the edges of the clipped area was in the first place.
No. You can determine the intersection of mathematically defined shapes without using ray tracing.
Quote: Instead, games, and even demos, rely on the editing software to make those calculations and export a complete mesh object, which correctly approximates the result. Could you do it with OpenGL alone? Of course, but it takes extra time,
Yes, which is why it's usually pre-computed. The intersection doesn't change, so it's much more efficient time-wise to compute it once and be done with it.
Quote: Now, issue #2 is even bigger of and issue. It effects refraction, reflection and lighting. [...]
You do realize that there are plenty of OpenGL libraries that do precisely this, right? Of course it's hard, but then again, there's no such thing as a free lunch, and it's also not exactly easy to implement a ray tracer!
Quote: Raytracing simply bounces the light off of each object, until it either runs out of objects or you hit a trace level limit (which is designed to prevent it getting trapped between two mirrors and trying to calculate *forever*.
I like how you use "simply". Of course it sounds so simple to just bounce the light off.
The problem is that you are compounding the theory of ray-tracing with the implementation of a graphics library. Everything you have talked about is perfectly feasible using the OpenGL library. As I have said previously, OpenGL is, fundamentally, a library for putting pixels on the screen.
Quote: Oh, and then there are shadows. [...] Some things they have added some limited hacks for, but they produce inferior results, since they are just that, hacks used to try to approximate what should happen, not physical models.
I think you are confusing different issues. OpenGL is typically used for real-time rendering in which it is too costly to do all these things you want. So approximations are made, but this is not due to limitations of OpenGL but due to limitation on the amount of time allowed for calculation.
I mean, you're comparing apples and oranges: you're comparing a ray-trace render that can take minutes or longer to an engine that uses OpenGL to render at more than 60 fps.
Quote: In EQ shadows literally got cast "through" walls, because the algorythms didn't know to "bend" them to fit the wall and treat that wall as a point to "stop" projecting the shadow. Fixing that is obviously possible, but you still get false shadows, which do not accurately reflect all light sources or how everything in a room interacts. This isn't a limitation of OpenGL, it's a limitation of the EQ code. If you admit it can be fixed, it boggles the mind why you think it's a limitation of OpenGL.
Besides, the false shadows are again due to approximations. EQ (and all 3d games) has completely different operating requirements from you: they require real-time graphics, you are happy to render less than one frame per minute.
It's a completely inappropriate comparison.
Quote: I suggest you read up on just what scanline actually does and what it can't do. These are just the most obvious examples and they require a lot of "pre-done" work to correct.
I'll pretend that I haven't heard your continued insinuations that I have no idea what I'm talking about despite continually showing why what you state is not a technical limitation of OpenGL but rather how one chooses to use it.
Quote: They can't be calculated on the fly from a description file or script. They must be done *before hand* to get even close to the same results as raytracing. And even then, some, like mixing multiple mirrored reflections and refraction, are virtually impossible, without doing 90% of the work to make them happen "before" the card ever gets its hands on the data.
This is mind-boggling -- you are pretending that somehow ray-tracing works "on the fly" despite taking minutes or hours to render a scene!
This whole line of comparison is simply not appropriate, for all the reasons I have stated above.
It is completely improper to compare accuracy of a real-time rendering system to the accuracy of a system that allows itself minutes to render a single scene. |