On Dec 29, 2007 10:44 PM, Kevin Gillette <[EMAIL PROTECTED]> wrote:
> yes... that's a problem.  if you keep increasing the GL requirement, the
> majority of us will be unable to keep up without upgrading our hardware, and
> it sounds like there's no plan to support a simpler renderer (and the very
> existence of an alternate renderer would conflict with the code roadmap),
> which means there'll probably be some inevitable code fork and a project
> divide.

I really do not understand your point of view here. Are you saying
that instead of working to create a more modern renderer with higher
hardware demand, we should be working to reinstate the software
renderer? Do you seriously propose that we should never increase the
hardware requirements?

> i'm not exactly sure what you mean by retained mode. afaict it's just a
> highly optimized layer on top of immediate using display lists and similar.

No, not in OpenGL terminology. From the OpenGL SuperBible:

"There are two different approaches to low-level programming APIs for
real-time 3D graphics—both of which are well supported by OpenGL. The
first approach is called retained mode. In retained mode, you provide
the API or toolkit with higher level geometric descriptions of your
objects in the scene. These blocks of geometry data can be transferred
quickly to the graphics hardware, or even stored directly in the
hardware's local memory for faster access.

The second approach to 3D rendering is called immediate mode. In
immediate mode, you procedurally build up geometric objects one piece
at a time. Although flexible, this suffers performance-wise."

We wish to upload entities to be drawn to the GPU as static arrays of
data that are ready to be drawn (retained mode), not by issuing one
function call for each piece of graphics information in the scene
frame (immediate mode).

> either way, opengl is a state machine, and i can see nothing that requires a
> dedicated choice between flexible use of immediate mode, and simple retained
> mode use.  for example, you could draw the terrain (i don't imagine how
> you'd do that in retained without breaking the mesh into tile groups of
> maybe 20x20 -- buffering and drawing the entire map would obviously be a
> mistake), then draw the stuff that doesn't work well in retained, such as
> defensive structures (or, iirc, the new "foundation" thing for defensive
> structs), *then* have the retained mode stuff go to work.

Actually, buffering and drawing the entire map may be far faster than
drawing, texturing and colouring each vertex separately. The GPU is
extremely fast at handling easily vectorized data, and our map "model"
is not even very detailed. We *already* draw an entire map for the
smallest maps - the currently rendered view is 64x64, and many maps
are that large or only slightly larger.

In any case, my plan is to make it draw 64 strips containing 64 tiles
at a time from the map buffer, so that we only draw the seen part of
the map. That is 64 function calls into OpenGL rather than 64 * 64 * 6
(vertices) * 3 (colour, geometry, texture) function calls, and since
the data is prebuffered, it is *far* more easily vectorized. Remember
that the GPU is a vector processing unit with lots of specialized
cores running in parallel, and they have to chew on large data
streams, or they won't be doing their intended job properly.

>  there are always
> going to be effects that you need direct control of verts on a
> frame-by-frame basis to achieve, and it doesn't look like there's any chance
> of that in retained without overloading ram.

I'm not sure what effects you are referring to.

> there's always a future in
> immediate mode... certainly that doesn't mean that everything should be done
> in immediate mode, but to forsake it completely is ridiculous. without the
> flexibility of directly controlling gl *at certain times*, then the only
> thing the renderer is capable of doing is stacking childrens' building
> blocks on top of each other with really good lighting.

People achieve detailed control over vertex data (and even pixel
data!) by using shaders nowadays.

   - Per

_______________________________________________
Warzone-dev mailing list
Warzone-dev@gna.org
https://mail.gna.org/listinfo/warzone-dev

Reply via email to