I'm rendering some images with about 3.5 million triangles into a
512x512 png file using tricontourf. I’m running this in a virtual
machine, and I’m pretty sure that there is no graphics rendering
hardware being used. Is it possible, assuming the hardware was
available, to make tricontourf use the rendering hardware? Will
that happen by default?
Here's the relevant portion of the code.
figure1 = plt.figure(figsize=(imageWidth,imageHeight))
theTriangulation.set_mask(mask)
plt.axis("off")
# This makes sure the figure fills the canvas
ax = figure1.add_axes([0,0,1,1])
# This turns off the tick marks of the axis we added.
ax.axis("off")
plt.tricontourf(theTriangulation,
modelData,
theLookupTable.N,
norm=theNorm,
antialiased=False,
cmap=theLookupTable)
canvas = FigureCanvasAgg(figure1)
canvas.print_figure(fileName, dpi=DPI)
Thanks
Howard
···
–
Howard Lander
Senior Research Software Developer
[ Renaissance Computing Institute
The University of North Carolina at Chapel Hill
Duke University
North Carolina State University
100 Europa Drive
Suite 540
Chapel Hill, NC 27517
919-445-9651
You are correct, there is no graphics hardware rendering. Rendering is controlled by the various matplotlib backends, and to my knowledge there are no backends currently available that use hardware rendering.
There has been some work done on an OpenGL backend, but I am not sure of the status of this. The last time I checked it was pretty experimental. Perhaps someone involved with it can comment on its current status.
Ian Thomas
···
On 26 January 2012 19:36, Howard <howard@…3845…> wrote:
I'm rendering some images with about 3.5 million triangles into a
512x512 png file using tricontourf. I’m running this in a virtual
machine, and I’m pretty sure that there is no graphics rendering
hardware being used. Is it possible, assuming the hardware was
available, to make tricontourf use the rendering hardware? Will
that happen by default?
The University of North Carolina at Chapel Hill
Duke University
North Carolina State University
100 Europa Drive
Suite 540
Chapel Hill, NC 27517
919-445-9651
As stated in an email response a while back, glumpy is intended to be a testbed for developing the OpenGL backend for future inclusion into matplotlib.
Cheers!
Ben Root
···
On Fri, Jan 27, 2012 at 10:06 AM, Howard <howard@…3845…> wrote:
On 1/27/12 3:39 AM, Ian Thomas wrote:
On 26 January 2012 19:36, Howard <howard@…3845…> > > wrote:
I'm rendering some
images with about 3.5 million triangles into a 512x512 png
file using tricontourf. I’m running this in a virtual
machine, and I’m pretty sure that there is no graphics
rendering hardware being used. Is it possible, assuming the
hardware was available, to make tricontourf use the
rendering hardware? Will that happen by default?
You are correct, there is no graphics hardware rendering.
Rendering is controlled by the various matplotlib backends,
and to my knowledge there are no backends currently available
that use hardware rendering.
There has been some work done on an OpenGL backend, but I am
not sure of the status of this. The last time I checked it
was pretty experimental. Perhaps someone involved with it can
comment on its current status.
Ian Thomas
Ian
Thanks very much for the reply. If it helps whoever is doing the
OpenGL backend, I may be able to play with it a bit.
As Benjamin explained, glumpy servers as a testbed for various technics that could be implemented later in matplotlib. The main problem today is that if you want to benefit from hardware acceleration, you have to use some GL features that are not compatible with he whole matplotlib framework (and we need to ensure some degree of compatibilty). I do not have yet a clean solution and I’m still experimenting.
For your tricontourf problem, I think it might be solved quite easily with the proper GL shader but I would need a complete (and basic) matplotlib script example to check if this is actually the case.
Nicolas
···
On Jan 27, 2012, at 23:12 , Benjamin Root wrote:
On Fri, Jan 27, 2012 at 10:06 AM, Howard <howard@…3845…> wrote:
On 1/27/12 3:39 AM, Ian Thomas wrote:
On 26 January 2012 19:36, Howard <howard@…3845…> > > > wrote:
I'm rendering some
images with about 3.5 million triangles into a 512x512 png
file using tricontourf. I’m running this in a virtual
machine, and I’m pretty sure that there is no graphics
rendering hardware being used. Is it possible, assuming the
hardware was available, to make tricontourf use the
rendering hardware? Will that happen by default?
You are correct, there is no graphics hardware rendering.
Rendering is controlled by the various matplotlib backends,
and to my knowledge there are no backends currently available
that use hardware rendering.
There has been some work done on an OpenGL backend, but I am
not sure of the status of this. The last time I checked it
was pretty experimental. Perhaps someone involved with it can
comment on its current status.
Ian Thomas
Ian
Thanks very much for the reply. If it helps whoever is doing the
OpenGL backend, I may be able to play with it a bit.
As stated in an email response a while back, glumpy is intended to be a testbed for developing the OpenGL backend for future inclusion into matplotlib.
Thanks for the post. I'm going to finish optimizing all of the
non-rendering pieces of my code, then I’ll see if trying the
hardware rendering makes sense. Right now I am software rendering
3.5 million triangles in about 5 seconds, but the setup (masking
etc) is taking about 40. When I get the setup lower (which I think
I will), I’ll get back to you about this.
The University of North Carolina at Chapel Hill
Duke University
North Carolina State University
100 Europa Drive
Suite 540
Chapel Hill, NC 27517
919-445-9651