Home Creators Posts Import Register Favorites Logout

Content

As I'm wrapping up development on RayTK 0.26, I've been noticing that the number of OPs inside every ROP is starting to be a problem. A single modulo1D contains 779 OPs.

There's some amount of overhead to each DAT, CHOP, etc. This is particularly apparent when trying to delete ROPs, especially when unloading full scenes.

Many of the operators are DATs that are responsible for preparing tables of data for things like parameters, textures, materials, variables, and so on. Renderers gather together all the data from those tables and use it to build their shaders.

I'm investigating an alternate approach that would replace many of the DAT networks with a single Python-driven DAT which would produce a single block of structured data serialized as JSON. Instead of pulling together lots of tables, the compiler would parse the structured data for each operator in the scene and extra what it needs.

There are some downsides to this approach. There could be performance costs to serializing and deserializing the data, though hopefully infrequently. It will also require including a sizable chunk of python code inside every operator, but that may still be better than having lots of different smaller DATs.

Because of the potential scope of bugs that could pop up when migrating to that approach I'm holding off on it until version 0.27.

But hopefully it should improve the editing workflow and possibly runtime performance.

Comments

No comments found for this post.