August 2022 Progress Report

Pragma Renderer

Next to Cycles X and LuxCoreRender, I've now added Pragma as a renderer option. Unsurprisingly, this renderer uses Pragma's internal rendering system. The main purpose for the Pragma renderer is for animations, since render times with Cycles X and LuxCoreRender are excessively high for large image sequences, even on modern hardware (days, weeks or even months depending on hardware, scene complexity and framerate).

To make Pragma actually viable as a renderer, I've added some new features:

Lightmapping

The lightmap system has been significantly improved, and now includes directional lightmaps. The direct and indirect components are baked with Cycles X, while the directional component is using my own baking implementation. Without going into too much detail, this (along with other improvements) allows for much prettier lightmaps than before:

pragma_lightmaps.png

For comparison, here is a pure Cycles X render of the same scene:

pragma_lightmap_example_cycles.png

The pure Cycles X render still looks slightly better, but I think the baked version is a pretty damn good substitute. I am not entirely sure why the colors look more intense in the baked version, that is something I will still have to investigate.

Lightmap baking still takes some time, but the major advantage is that it only has to be done once per scene, regardless of how many frames you render. Obviously this only works for static lighting, but it's still a pretty major milestone. For dynamic / animated actors you would still use dynamic light sources with a baked reflection probe.

Once lightmaps are baked, the rendering with the Pragma renderer is practically real-time, so the only render time to worry about is the actual lightmap baking. Baking the lightmaps for the example scene above at a 4K resolution took about 8 hours with my GTX 1050 Ti, but a resolution of 2K would probably be sufficient for a scene like this (which would reduce the render time to ~2 hours).

Since baked lightmaps are very cheap to render during real-time playback, Prelewd will also heavily benefit from this.

Motion Blur

I've added support for camera, object and skeletal animation motion blur, however this is currently implemented for the Pragma renderer only.

medic_motion_blur2.png

(If the difference in the video is too hard to spot, try pausing it.)

There are still some artifacts in some cases (like the Medic's finger in the right example), but it's not very noticeable in motion.

Technically the same motion blur implementation could be used for Cycles X/LuxCoreRender renders, but I don't think I'll have time to implement that any time soon, so it's restricted to the Pragma renderer for now.

Misc

Some misc features include:

equirect_example.png

 

New Transform Gizmo System

move_tool.png rotate_tool.png scale_tool.png

I've completely overhauled the transform gizmo system, since the previous one was... severely lacking in many ways. The new one is significantly more pleasant to use, and has some new features:

Smart Move

There is also a new "smart" move system, which allows you to quickly move objects around while keeping their relative orientation to the environment:

Decals

Not much to say here. I already implemented decals a while ago, but I never got around to add them to PFM until now:

pragma_2022-08-27_16-34-24.png decals2.png

They can correctly wrap around most surfaces, doesn't work with animated actors at the moment though.

Other Changes

Tutorials

I've added a bunch of new tutorials on the wiki:

User Interface

tut_ui.png

Rendering

tut_render.png

Workflows

tut_workflows.png

Some are more complete than others, but Getting Started is a good starting point. The Rendering Animations workflow describes how to effectively use the new lightmap system.

 

Going Forward

With that I unfortunately also have some bad news. In part thanks due to the current economic crisis, I can't actually afford to continue working on this project for much longer, unless I can somehow get significantly more supporters on board 😕. For that end I will have to make some changes going forward..

Primarily this means that, starting next month, Prelewd will become my main priority. I know that's hardly ideal considering progress on the Filmmaker/Engine has already been pretty slow, but sadly I just don't have any other options at the moment. If I can use Prelewd to reach some of my milestones, I may be able to put more time into the project as a whole again, but for now that's somewhat up in the air. With prices absolutely skyrocketing over here, and things likely becoming worse come winter, unfortunately this is a compromise I have to make at this point 😅. I will continue to squeeze in as much time as I can into the Filmmaker and the Engine, but there will likely not be any major new features for either for some time, at least none that don't also benefit Prelewd in some way. I'm sorry, but I hope you understand.

 

Full Changelog

Latest release is available on GitHub: https://github.com/Silverlan/pragma/releases/tag/nightly

(For previous changelogs, see https://wiki.pragma-engine.com/books/pragma-engine/page/changelog)

Version 1.0.5 [2022-08-30]
Filmmaker v0.4.6
Engine
Lua

Revision #36
Created 2022-08-28 08:27:31 UTC by Silverlan
Updated 2025-01-19 14:13:14 UTC by Silverlan