[vtkusers] [vtk-developers] How to use color mapping for vtkPistonMapper?

Enya Shen enya.shen2010 at gmail.com
Thu Dec 5 09:50:46 EST 2013


Dear David E DeMarle,

I used vtkPistonContour. When I update isovalue for few times, I got error
"Out of memory" from CUDA and the program crashed.

Do I need to release resources for old isovalue by hand? Or is there any
way to do with the error?

Thanks!

Regards,
Enya


2013/12/5 Enya Shen <enya.shen2010 at gmail.com>

> Thank you very much!
>
> Is there similar function like computing normals for contour in piston?
>
> Thanks again!
>
>
> 2013/12/4 Biddiscombe, John A. <biddisco at cscs.ch>
>
> Just noticed a mistake in my text after clicking send ...
>>
>> Erratum : "Decided on Depth Sorting" - instead of depth peeling.
>>
>> > -----Original Message-----
>> > From: Biddiscombe, John A.
>> > Sent: 04 December 2013 13:35
>> > To: Biddiscombe, John A.; David E DeMarle; Enya Shen
>> > Cc: vtkdev; vtkusers at vtk.org
>> > Subject: RE: [vtkusers] [vtk-developers] How to use color mapping for
>> > vtkPistonMapper?
>> >
>> > https://hpcforge.org/scm/browser.php?group_id=117
>> > is a project called pv-zoltan
>> >
>> > I needed to do transparent rendering of neuron circuits which are very
>> large
>> > and complex, depth peeling is one option, but for some of these
>> circuits I had
>> > to use a machine with no graphics capabilities, so I wanted a software
>> render
>> > option and decided on depth peeling. see
>> > ftp://ftp.cscs.ch/out/biddisco/bbp/videos/5k-voltage-differentials.aviskip to
>> > about 45 seconds in for an example of the data that is interesting -
>> it's just
>> > under 1 billion triangles, rendered in parallel. Some of the scenes are
>> very
>> > complex, so for depth peeling, you really need hundreds of layers to be
>> sure
>> > it's perfect (though nobody would be able to tell the difference).
>> >
>> > What is pv-zoltan : it's a set of classes to allow parallel mesh
>> redistribution
>> > using the zoltan library from trilinos. Once the mesh is partitioned, I
>> then
>> > depth sort the triangles and render in parallel with sort last
>> compositing.
>> > 1) There is a custom depth sort class in the code which generates a
>> depth
>> > sorted ID list and attaches it to the dataset, then a custom
>> > vtkPolyDataMapper/Painter which renders using the sorted order (this
>> > differs from the vtkDepthSortPolyData in vtk which actually sorts the
>> > polygons (and all cell/point arrays)  and effectively doubles the
>> memory use,
>> > then renders with the normal polydatamapper/painter).  By generating an
>> Id
>> > ordering and then painting in that order, we only add 1 int per cell.
>> > 2) mesh partitioning with zoltan - and some enhancements to the
>> rendering
>> > front end to bypass the default compositing in paraview and use the
>> KdTree
>> > from zoltan to do the ordered compositing.
>> > 3) Once that was working, I wanted to try to do the depth sort on the
>> GPU,
>> > so I looked at piston and found it to be very easy to modify to suit my
>> needs.
>> > I have changed the vtkDataSetToPiston class and the vtkPistonMapper
>> > slightly (and the code will only work with triangle based geometry
>> unless you
>> > uncomment the triangulation routine somewhere). When the PISTON code
>> > is enabled, the CPU depth sort is disabled (point 1 above) and instead
>> push
>> > the dataset to GPU, do depth sort on the fly (some thrust code thrown in
>> > using thrust::sort_by_key<> and a distance functor) and render in one
>> pass
>> > effectively. (two loops, but only one render pass).
>> > 4) There is some code in the colorGPU branch which activates the colour
>> > table lookup and generation on the GPU as well, but I didn't get time
>> to look
>> > at it this morning to remind myself of what happens where and when. I
>> seem
>> > to recall I have a small bug in there which makes the table get
>> regenerated
>> > more often than it needs to. And possibly more CPU-GPU traffic than
>> strictly
>> > necessary, but nothing serious.
>> > 5) Because the transparent rendering uses per vertex opacity - instead
>> of
>> > using a scalars to colours, we use a new two scalars to colours
>> (originally
>> > written for the point sprite renderer), this takes one array for
>> scalars and one
>> > for opacity, so the lookup stuff is a bit more versatile than the
>> standard.
>> > 6) Everything is handled (rather smoothly I think, even if I do say so
>> myself)
>> > by the DepthSortRepreseantation which connects everything together. It
>> > just needs a couple of small fixes for paraview to get working, but
>> most of it
>> > should compile ok and work - except for the ordered compositing which
>> > requires some extra info passed via the vtkBoundsExtentTranslator in the
>> > plugin which holds the region assignments generated by Zoltan and is
>> used to
>> > send the KdTree to the compositing code in the front end.
>> >
>> > .... currently my depth sort branch is out of date/order, so I won't
>> paste a
>> > paraview patch. You'd need to just comment out a couple of lines of the
>> > plugin code. I'd suggest looking  at the piston stuff and having a play
>> with it. I
>> > can't remember if I added an option to disable the depth sort and only
>> do the
>> > render on the GPU, the interesting part is where the cuda array handles
>> are
>> > passed from the dataset after sorting etc and given to OpenGL for
>> rendering,
>> > most of the piston code itself is irrelevant and it's only the push to
>> gpu and
>> > pass of handles to GL that is interesting. Many thanks to the original
>> Piston
>> > developers for showing how to do it.
>> >
>> > NB. running on a single process ought to work, but there may be a
>> gotcha I've
>> > forgotten about. when I have a few hours spare I'll apply my patches to
>> my
>> > current paraview tree and see if everything is still working ok and
>> post an
>> > update.
>> >
>> > JB
>> >
>> >
>> > > -----Original Message-----
>> > > From: vtkusers-bounces at vtk.org [mailto:vtkusers-bounces at vtk.org] On
>> > > Behalf Of Biddiscombe, John A.
>> > > Sent: 03 December 2013 15:44
>> > > To: David E DeMarle; Enya Shen
>> > > Cc: vtkdev; vtkusers at vtk.org
>> > > Subject: Re: [vtkusers] [vtk-developers] How to use color mapping for
>> > > vtkPistonMapper?
>> > >
>> > > Yes. I've enhanced the piston mapper and done the lookuptable on the
>> > GPU.
>> > > I'm stuck in a terminally dull meeting right now, but once I escape,
>> > > I'll brush off the code and post a link.
>> > >
>> > > JB
>> > >
>> > > From: David DeMarle
>> > > <dave.demarle at kitware.com<mailto:dave.demarle at kitware.com>>
>> > > Date: Tuesday 3 December 2013 14:47
>> > > To: Enya Shen
>> > > <enya.shen2010 at gmail.com<mailto:enya.shen2010 at gmail.com>>
>> > > Cc: VTK Developers <vtk-developers at vtk.org<mailto:vtk-
>> > > developers at vtk.org>>, "vtkusers at vtk.org<mailto:vtkusers at vtk.org>"
>> > > <vtkusers at vtk.org<mailto:vtkusers at vtk.org>>
>> > > Subject: Re: [vtk-developers] How to use color mapping for
>> > > vtkPistonMapper?
>> > >
>> > > Unfortunately I ran out of time and didn't get around to moving VTK's
>> > > lookup table over when I originally implemented that class. So, the
>> > > randow color map you see now is the only option when doing direct GPU
>> > > to GPU rendering. Unless you hack the class yourself to make the
>> > > transfer function configurable of course.
>> > >
>> > > If anyone out there has an updated implementation (ahem John B.)
>> > > please direct us to it and we can see about folding your improvements
>> in.
>> > >
>> > > thanks
>> > >
>> > >
>> > > David E DeMarle
>> > > Kitware, Inc.
>> > > R&D Engineer
>> > > 21 Corporate Drive
>> > > Clifton Park, NY 12065-8662
>> > > Phone: 518-881-4909
>> > >
>> > >
>> > > On Tue, Dec 3, 2013 at 12:24 AM, Enya Shen
>> > > <enya.shen2010 at gmail.com<mailto:enya.shen2010 at gmail.com>> wrote:
>> > > Dear all,
>> > >
>> > > I try to use vtkPistonMapper, but when I set the color with
>> > > setColor(double[3]), I got nothing changed.
>> > >
>> > > Thanks for any example or advice!
>> > >
>> > > Regards,
>> > > Enya
>> > >
>> > > _______________________________________________
>> > > Powered by www.kitware.com<http://www.kitware.com>
>> > >
>> > > Visit other Kitware open-source projects at
>> > > http://www.kitware.com/opensource/opensource.html
>> > >
>> > > Follow this link to subscribe/unsubscribe:
>> > > http://www.vtk.org/mailman/listinfo/vtk-developers
>> > >
>> > >
>> > >
>> > > _______________________________________________
>> > > Powered by www.kitware.com
>> > >
>> > > Visit other Kitware open-source projects at
>> > > http://www.kitware.com/opensource/opensource.html
>> > >
>> > > Please keep messages on-topic and check the VTK FAQ at:
>> > > http://www.vtk.org/Wiki/VTK_FAQ
>> > >
>> > > Follow this link to subscribe/unsubscribe:
>> > > http://www.vtk.org/mailman/listinfo/vtkusers
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20131205/7a1788b3/attachment.htm>


More information about the vtkusers mailing list