Thanks for all of your help Maxim. I have much more understanding of how to use eVolve now. Jinghua
On Fri, Feb 20, 2009 at 2:53 AM, Maxim Makhinya <[email protected]> wrote: > > Hello Jinghua, > > What you found is right, somehow I didn't thought about > that myself. > > Basic idea of slicer is that it can find intersection of > a parallelepiped with a set of parallel planes (cube or > parallelepiped is your volume and planes are view aligned > cuts through your data), as a result it gives you set of > hexagons (if you intersect a cube with a plane number of > vertexes of resulted polygon will vary from 1 to 6 at most, > slice clipping always returns 6 vertexes but some of final > triangles when you render it with OpenGL will have zero > square and not in fact rendered, so it is always optimal). > > The problem you have is this: when you intersect a quarter > of a cube it will give less intersections than for the whole > cube because the distance between these parallel planes is > constant. Number of slices set for the whole cube, not per > slab; it is done so, to be able to align same slices from > neighboring data slabs in DB compositing. > > The algorithm itself is rather tricky to explain in a > letter, you can find details in the book "Real-Time Volume > Graphics", pages 70-79. There are also lots of other > techniques as pre-integration and transfer functions > explained. It would be good if you can get this book, it > really helped me a lot. Unfortunately I couldn't find > references to appropriate papers. But the source code which > is used in eVolve I adapted from this one: > > http://www.real-time-volume-graphics.org/?page_id=5 > > There are also some tutorials: > > http://www.real-time-volume-graphics.org/?page_id=14 > > you might find "Part 04: GPU-Based Ray Casting" a bit useful. > > > Best regards, > > Makhinya Maxim > > > On Feb 19, 2009, at 11:44 PM, Jinghua Ge wrote: > > > Dear Maxim, > > > > I think I understand the difference of the performance on these two > > setup now. > > > > 1. With the setup: data header: 1024x1024x256, range [0, 1], the > > sliceclipping algorithm gives out small amount of valid polygons ( I > > found that some polygons are "empty" with all (0, 0, 0) vertices), > > even tho the slicenumber is 2048. > > > > 2. With the setup: data header 1024x1024x1024, range[0, 0.25], the > > sliceclipping algorithm gives out more valid polygons, which end up > > more workload in fragment shader. > > > > I think that's why render same amount of data shows different fps. > > > > 3. When I render the whole data 1024x1024x2048, I assume the same > > situation happens. (Besides, the slice number will be set 4096). So > > it get even slower. I got 2.3 fps. When I set the slice number to be > > 2048, it runs at 5.4 fps. > > > > Unfortunately I didn't really understand how the sliceclipping code > > works. Especially why scenario 1 and 2 gives out different number of > > polygons when the slice number is set to be the same. Can you > > explain a bit more about the algorithm to me according to this? > > Thanks! > > > > Jinghua > > > > > > > > On Thu, Feb 19, 2009 at 8:30 AM, Jinghua Ge <[email protected]> > > wrote: > > Dear Maxim > > > > I have been thinking about the same things you mentioned in your > > email, and test 1 is exactly what I plan to do today. I will report > > back my test results. Thanks! > > > > > > Jinghua > > > > On Thu, Feb 19, 2009 at 2:55 AM, Maxim Makhinya > > <[email protected]> wrote: > > > > Hello Jinghua, > > > > This part of your code looks correct, I never tried it > > with GL_LUMINANCE thought. How I would approach you > > problem is the following: > > > > 1) Create same test cases for ranges [0 1] and [0 0.25]. > > Which means that for one of them you HAVE TO adjust > > depth scaling in your .vhf file ( dScale=..). When > > you render your two cases, make sure objects occupy > > exactly the SAME space on the screen, and that final > > rendering is identical (make also sure you are using > > the same number of intersecting slices). This is very > > important since volume rendering performance directly > > depends on your fill, i.e. how many pixels were > > rendered, cause all the job is done by fragment shader! > > > > 2) analyze then 3D textures' sizes, they should be > > identical (you render the same data). > > > > I don't see why you have this problems, because when you > > have range [0 0.25] sliceClipping ( sliceClipping.cpp ) will > > cut a parallelepiped out of the cube (1,1,1) and your texture > > coordinates will also be in range: (0..1, 0..1, 0..0.25), > > but, your texture fits perfectly in to > > (0..1024, 0..1024, 0..256), and you want to use the whole > > texture, not just the first quarter of it, so TD.D will be > > 4, and it will rescale coordinates from sliceClipping to > > (0..1, 0..1, 0..1), but on the screen it will still look as > > parallelepiped! Now if you render same amount of data but > > using different ranges [0 1] and [0 0.25] one will look as > > a cube and another as parallelepiped (if scaling coefficients > > are equal), that's why you need to readjust them for one of > > your test cases; again, you need exactly the same data and > > exactly the same screen space to be rendered to compare > > performance, it is not enough just to simply render same > > amount of data. > > > > > > Best Regards, > > > > Makhinya Maxim > > > > > > On Feb 18, 2009, at 6:28 PM, Jinghua Ge wrote: > > > > > Yes I see 1/4 data scaled to the same screen space. I am pretty sure > > > I load the same amount of data into 3D texture, as the print out > > > shows: w:1024 1024 h:1024 1024 d:1024 256 256 > > > > > > The texture code is: (I set comp = 1 for my ubyte volume data) > > > > > > if(comp == 4) > > > { > > > glTexImage3D( GL_TEXTURE_3D, > > > 0, GL_RGBA, tW, tH, tD, > > > 0, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*) > > > (&data[0]) ); > > > } > > > else if(comp == 1) > > > { > > > //glTexImage3D( GL_TEXTURE_3D, > > > // 0, GL_ALPHA, tW, tH, tD, > > > // 0, GL_ALPHA, GL_UNSIGNED_BYTE, (GLvoid*) > > > (&data[0]) ); > > > glTexImage3D( GL_TEXTURE_3D, > > > 0, GL_LUMINANCE, tW, tH, tD, > > > 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, (GLvoid*) > > > (&data[0]) ); > > > } > > > > > > Let me double check tho. > > > > > > > > > Jinghua > > > > > > > > > On Wed, Feb 18, 2009 at 11:20 AM, Maxim Makhinya > > > <[email protected]> wrote: > > > > > > > >> I set the TD.D = 1. , the rendering is fast now, but the > > > >> scaling is wrong. > > > > > > > > Doing this you should see wrong portion of data rendered, not > > > > wrong scaled! > > > > > > well, actually, you will see both - wrong scaled and wrong > > > portion ( 4 times smaller ) of data, because smaller portion > > > will occupy same screen space (if you didn't messed vertex > > > positions). > > > > > > _______________________________________________ > > > eq-dev mailing list > > > [email protected] > > > http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev > > > http://www.equalizergraphics.com > > > > > > > > > > > > -- > > > Jinghua Ge, Ph.D > > > Visualization Consultant, CCT > > > 331 Frey Computing Services Center > > > Louisiana State University > > > Phone: (225) 578-7789 > > > Fax: (225) 334-2061 > > > > > > > > > _______________________________________________ > > > eq-dev mailing list > > > [email protected] > > > http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev > > > http://www.equalizergraphics.com > > > > > > _______________________________________________ > > eq-dev mailing list > > [email protected] > > http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev > > http://www.equalizergraphics.com > > > > > > > > -- > > Jinghua Ge, Ph.D > > Visualization Consultant, CCT > > 331 Frey Computing Services Center > > Louisiana State University > > Phone: (225) 578-7789 > > Fax: (225) 334-2061 > > > > > > > > > > > > -- > > Jinghua Ge, Ph.D > > Visualization Consultant, CCT > > 331 Frey Computing Services Center > > Louisiana State University > > Phone: (225) 578-7789 > > Fax: (225) 334-2061 > > > > > > _______________________________________________ > > eq-dev mailing list > > [email protected] > > http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev > > http://www.equalizergraphics.com > > > _______________________________________________ > eq-dev mailing list > [email protected] > http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev > http://www.equalizergraphics.com > -- Jinghua Ge, Ph.D Visualization Consultant, CCT 331 Frey Computing Services Center Louisiana State University Phone: (225) 578-7789 Fax: (225) 334-2061
_______________________________________________ eq-dev mailing list [email protected] http://www.equalizergraphics.com/cgi-bin/mailman/listinfo/eq-dev http://www.equalizergraphics.com

