Author archives: Mike

RSS feed of Mike

A Good Day

Opaque, transparent and select (with colours, not select mode) rendering are now all working in the new renderer.  That was more than I was expecting to get done today.  I should likely work on occlusion/frustum queries next (should be fairly easy, Shapes already have queries to check against the frustum and/or do occlusion queries).  The ...

Continue reading

Scene sorting with numpy...

You often want to be able to calculate the eye-space coordinate of a given model-space coordinate. One of the most common reasons is to calculate the distance to a given object from the camera (depth in the scene) so that you can do sorting of the scenegraph.

Why would you want to sort a scenegraph? ...

Continue reading

World Plone Day is tomorrow...

There's a Toronto event as part of World Plone Day that I'm intending to attend (free registration is available off that link).  Interesting to see the Toronto Plone group organizing something like this.  They also have regular meetings for those who are aren't able to attend the WPD day-time event.

Years in, it's easy to forget the details...

Sometimes after a decade or so of working with a technology you become so accustomed to the low-level operation you just stop thinking about how it actually works.  Writing the "legacy free" version of OpenGLContext is making me think again about how the whole edifice of computer graphics works.

Take, for example, the "normal matrix". ...

Continue reading

Path Matrix Caching

As mentioned many times already, OpenGL 3.1 is eliminating the matrix manipulation code from the OpenGL API.  OpenGLContext/PyVRML97 already had a matrix-calculation mechanism, but it wasn't used for rendering anything, it was just used for certain bookkeeping operations.

To make it practical to use the matrices for rendering they need to be cached.  I'm eventually ...

Continue reading

Spike test works...

Set up a little spike test that overrides the matrix setup for the projection and model-view matrices to be identity values.  The test then uses visitor.find() to construct paths to all Rendering node-types in a scenegraph and sets up the matrices with a call to glLoadMatrix on my calculated matrices and then renders the Rendering ...

Continue reading

Debug Mode Rendering (or, What you should always have)

Spent rather more time this afternoon than I'd intended working on fixing font rendering.  It was just a little spike test using Pygame to create a TextureAtlas and then rendering the atlas texture onto a quad to be sure it showed up.  Except that it didn't.

Which brings me to the point of this post: ...

Continue reading

Texture Atlases for Fun and Profit...

I'm guessing that everyone who's ever taken "intro to not particularly slow computer graphics" has written their own texture atlas implementation, so hey, I should too :) .  Texture atlases are collections of large numbers of small textures which are packed into a single, larger texture with some book-keeping metadata to allow the GL to ...

Continue reading

Peeling back layers...

Began working on more flags to peel back some of the ease-of-use layers in PyOpenGL to recoup performance.  List/tuple array-types now respect the ERROR_ON_COPY flag (effectively disabling list/tuple support when the flag is activated) and there is a STORE_POINTERS flag, which when False (with ERROR_ON_COPY True) will disable wrapper operations storePointer mechanism.  That's one stage ...

Continue reading