< Back

Completion Of Rendering Engine

2022-1-3

It's been a while. How are you? I've been a little busy. The rendering engine has developed to draft 29, which I'm now calling v1. I've also taken to naming the rendering engine "Vivid" which I think is a pretty cool name.

Initially, I was mostly done at draft 23, but after a little testing with profilers I noticed that a feature of the core architecture of the engine was taking up a lot of processing time, so I re-wrote it - which resulted in re-writing much of the program overall. This new version is noticeably faster and simpler. It also has a better thought-out layout and plenty of testing code.

The "shell" is simply a way of covering over all the sections of the renderer, presenting a nice package api.

Additionally, the program comes with a new feature; extremity replacement elements. This allows one to tell a group element not to calculate any of its internal geometry, but instead use a provided replacement element. This allows one to put together complex structures and tell the engine "hay, don't worry about any of this. It won't be used for collision and there won't be any mouse or keyboard interaction. I know that it also means that no visibility calculations will take place, but I'll handle it. Just trust me." Visibility calculations and determinations can be quite costly, so having the option of telling the system not to worry about them can save a lot of time.

One might also notice that the colours are deeper than before. This is due to Brandon figuring out what texture formats were and which ones to use, thus the presented colours now match the ones that were actually wanted.

I've included a number of demo programs for you to play with;

  • console_example_1 : all shapes
  • console_example_2 : lots of random boxes
  • console_example_3 : wavey boxes
  • console_example_4 : four corners test
  • console_example_5 : angle and scale adjustment on groups with children
  • console_example_6 : viewport adjustment
  • console_example_7 : mouse action test
  • console_example_8 : character default fonts
  • console_example_11 : all the fonts
  • console_example_12 : character detail levels
  • console_example_21 : much usage of the canvas and imagebitmap transfers (the one that caused crashes on chrome)
  • console_example_22 : rotating area of rectangles
  • console_example_23 : mouse simulator

Some of these are programs you've seen before - but with the new engine running them - others are brand new. Importantly, console_example_2 comes with a command line argument, with which you can define the number of rectangles the program will put on screen, for example;

Next stop; the upper levels. I've already made a start on a generalised platform - the Orchestrator - which draws together the rendering engine and other such resources. A bit like a browser engine, one would be able to write whatever they liked atop it, using the resources of the platform. Other resources can be added at a later date, such as the "Glide" audio engine which I have in development. Beyond that lies the interface section, which (should) act like a framework. Useful, but not necessary to using the platform. This section would contain the same sort of items as the previous interface section of the website - ie. buttons, sliders, dials, lights, meters, readouts, cable connections, etc.

I've been thinking of renaming Curve to Alchemy... we'll see if that sticks in my mind

Downloads

Here are the usual downloads, first the "bundles" which contain all the programs listed above. Secondly, I've included a variation of console_example_2, which is a single-threaded version with timing code. This is useful for seeing how much time a system spends on any part of the rendering procedure.

Bundles

MacOS 11.6Windows 10

Speed Test

MacOS 11.6Windows 10