Rendering to Texture

Happy 2017! I know, it’s almost February, but better late than never, right?

[EDIT: I was so excited that this demo actually worked that I didn’t even realized this wasn’t the first post of the year]

Anyway, I just finished this demo and I wanted to share it with you. Simply put, I’m rendering lots of characters on screen using the impostor technique, which relies on rendering a single model in an offscreen buffer. Then, multiple quads are drawn using the output of that buffer as texture.

Et voilá!

In order to achieve this goal, I had to make some changes in how scenes are rendered (is this the first refactor of the year? No). Since we’re using multiple cameras, we needed a way to define which one is the main one (we cannot rely on the Simulation to that for us any longer). Also, a new render pass is required to draw the model on a texture. And so the OffscreenRenderPass (were you expecting something else?) was born. But that’s pretty much it.

As usual, this is a new feature and therefore… unstable. Do not try it at home (yet).

Bye!

 

Advertisements

Crimild v4.3 is now available!

New year, new release!

You might have noticed that the new version contains less refactors features than previous ones, but the idea is to keep new versions as small as possible from now on. That means there should be new releases more often (did I just have a deja-vu?)

Anyway, version 4.3 contains two big new features:

The new Job System has been fully integrated with the Simulation framework to provide task concurrency wherever we might need it. As I’ve mentioned before, we can now schedule jobs and wait for them (and their children, if any) to complete before moving on. This will be particularly useful when implementing the parallel renderer in Vulkan sometime this century.

Also in this episode, Render Queues have been changed to sort objects based on their type. Translucent objects are now being sorted in a back-to-front fashion automatically. That’s right, I changed my mind again.

Additionally, I made the Ray Tracer part of the Core library too and it’s taking full advantage of the new concurrency tools. It still lacks a lot of features, true, but I’ll definitely be doing some improvements during the year (provided my Project Manager allows me some free time from the other stuff).

That’s it. Check out the new version in Github where you’ll see the whole list of changes and have a great year!