To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.cad.dev.macOpen lugnet.cad.dev.mac in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 CAD / Development / Macintosh / *1056 (-5)
Subject: 
Re: Bricksmith 2.4: Faster. Much Faster.
Newsgroups: 
lugnet.cad.dev.mac
Date: 
Wed, 16 Jun 2010 20:14:54 GMT
Viewed: 
35608 times
  
In lugnet.cad.dev.mac, Roland Melkert wrote:
   Your method is roughly the same as what LD4DStdudio does, except I use VBO to stuff whole high level parts in index-ed arrays. The indices are then grouped per color (16 being also a color) so a minimum of glcolor’s are needed during rendering. So it seems display lists aren’t ‘less’ then VBO at all to me.


One drawback with VBOs is that - unlike displaylists - you can’t stick arbitrary GL calls in them. I’m using lists because I need to be able to put matrix operations in them as well as geometry.


   Only problem with the highlevel part approach is you can’t support mirrored submodels higher up in the rendering tree (like eg the star destroyed mpd uses) cause it will mess up the normals. Or did you find a way around that?


Change the cull-face orientation ;-)


   Optimizations I was thinking of for my new renderer are using only triangles instead of 1 on 1 ld quads and triangles cause quads will be split by the driver anyway. (not sure if it’s actually faster doing it yourself but I’ll have to test that.)


I can’t say I’ve noticed the difference myself, but I suspect it’ll depend on the hardware and drivers as much as anything.


   The conditional lines are indeed a pain, normal lines can go in vbo/display lists much like the triangles but you have to test all conlines against the the current projection matrix for every redraw. I was planning to do this multithreaded (like LDView does).


See my previous post :-) Offload the grunt-work to the graphics-card, and it flies!


Alex


Subject: 
Re: Bricksmith 2.4: Faster. Much Faster.
Newsgroups: 
lugnet.cad.dev.mac
Date: 
Wed, 16 Jun 2010 17:26:31 GMT
Viewed: 
34526 times
  
In lugnet.cad.dev.mac, Allen Smith wrote: snip
  
Bricksmith now recursively flattens the geometry for each referenced top-level part then sorts it according to primitive type (triangles, quads, lines). Since the primitives are sorted, each type can be enclosed in a single glBegin while display lists are compiled. I create a unique display list for each color variation of the part. Flattening and sorting the primitives allowed the display lists to perform vastly improved internal optimizations over what they were able to do with the unsorted data from the previous version of Bricksmith.

Unfortunately, all this is a bit beside the point because display lists are on their way out, deprecated, not even available on the iPhone, etc. You are supposed to be using VBOs and VAOs nowadays. Unfortunately I am not a 3D guru, wrote my program using obsolete methods to begin with, and it has taken me a while to plan a transition.

By the way, Bricksmith does not render conditional lines. I consider shading to be a sufficient substitute, and conditional lines sound difficult to optimize.

Allen

Thanks for the insight Allen,

I’m also not a 3D guru, but I like to fool around with it as much as anyone interested in 3d programming.

Your method is roughly the same as what LD4DStdudio does, except I use VBO to stuff whole high level parts in index-ed arrays. The indices are then grouped per color (16 being also a color) so a minimum of glcolor’s are needed during rendering. So it seems display lists aren’t ‘less’ then VBO at all to me.

Only problem with the highlevel part approach is you can’t support mirrored submodels higher up in the rendering tree (like eg the star destroyed mpd uses) cause it will mess up the normals. Or did you find a way around that?

Optimizations I was thinking of for my new renderer are using only triangles instead of 1 on 1 ld quads and triangles cause quads will be split by the driver anyway. (not sure if it’s actually faster doing it yourself but I’ll have to test that.)

The conditional lines are indeed a pain, normal lines can go in vbo/display lists much like the triangles but you have to test all conlines against the the current projection matrix for every redraw. I was planning to do this multithreaded (like LDView does).

Roland


Subject: 
Re: Bricksmith 2.4: Faster. Much Faster.
Newsgroups: 
lugnet.cad.dev.mac, lugnet.cad.dev
Followup-To: 
lugnet.cad.dev
Date: 
Wed, 16 Jun 2010 16:53:51 GMT
Viewed: 
35211 times
  
In lugnet.cad.dev.mac, Don Heyse wrote:
   In lugnet.cad.dev.mac, Don Heyse wrote:
   In lugnet.cad.dev.mac, Remi Gagne wrote:
   In lugnet.cad.dev.mac, Allen Smith wrote:
  
By the way, Bricksmith does not render conditional lines. I consider shading to be a sufficient substitute, and conditional lines sound difficult to optimize.

Heh, you hit that problem too? I’ve played around writing an OpenGL LDraw renderer based exclusively on display lists, but I can’t for the life of me figure out how to handle conditional lines in this setup. Has anyone else solved this peculiarly specific problem?

You can ignore the conditional lines and achieve the same effect with display lists using the stencil buffer techniques presented here:

http://www.opengl.org/resources/code/samples/sig99/advanced99/notes/node108.html

And here’s a silhouette technique using BFC:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.71.8503&rep=rep1&type=pdf

This technique and the conditional lines both target the same edges lines where the front facing polygons meet the back facing polygons, so the results should be quite similar.

And another thing...

The BFC technique actually has an advantage over conditional lines because it works on the entire scene after it’s been assembled. Whereas the conditional lines at the edges of the primitives are created in advance, and must predict what they’re going to butt up against when the entire scene has been assembled. This prediction may not always be right, resulting in missing conditional lines and some visible where they should not be.


Subject: 
Re: Bricksmith 2.4: Faster. Much Faster.
Newsgroups: 
lugnet.cad.dev.mac
Date: 
Wed, 16 Jun 2010 16:38:48 GMT
Viewed: 
35137 times
  
In lugnet.cad.dev.mac, Don Heyse wrote:
   In lugnet.cad.dev.mac, Remi Gagne wrote:
   In lugnet.cad.dev.mac, Allen Smith wrote:
  
By the way, Bricksmith does not render conditional lines. I consider shading to be a sufficient substitute, and conditional lines sound difficult to optimize.

Heh, you hit that problem too? I’ve played around writing an OpenGL LDraw renderer based exclusively on display lists, but I can’t for the life of me figure out how to handle conditional lines in this setup. Has anyone else solved this peculiarly specific problem?

You can ignore the conditional lines and achieve the same effect with display lists using the stencil buffer techniques presented here:

http://www.opengl.org/resources/code/samples/sig99/advanced99/notes/node108.html

And here’s a silhouette technique using BFC:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.71.8503&rep=rep1&type=pdf

This technique and the conditional lines both target the same edges lines where the front facing polygons meet the back facing polygons, so the results should be quite similar.


Subject: 
Re: Bricksmith 2.4: Faster. Much Faster.
Newsgroups: 
lugnet.cad.dev.mac
Date: 
Wed, 16 Jun 2010 16:22:14 GMT
Viewed: 
35035 times
  
In lugnet.cad.dev.mac, Remi Gagne wrote:
   In lugnet.cad.dev.mac, Allen Smith wrote:
  
By the way, Bricksmith does not render conditional lines. I consider shading to be a sufficient substitute, and conditional lines sound difficult to optimize.

Heh, you hit that problem too? I’ve played around writing an OpenGL LDraw renderer based exclusively on display lists, but I can’t for the life of me figure out how to handle conditional lines in this setup. Has anyone else solved this peculiarly specific problem?

You can ignore the conditional lines and achieve the same effect with display lists using the stencil buffer techniques presented here:

http://www.opengl.org/resources/code/samples/sig99/advanced99/notes/node108.html



Next Page:  5 more | 10 more | 20 more

Redisplay Messages:  Brief | Compact

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR