Armory Engine Feedback: Armory at Blender Conference!

Hope to pull off another run similar to this month, and get things out.

Page 10 as a comment underneath one of the pictures he put up of the orange car in his post. In context it makes even more sense. I’m glad I could find it for you.

Thanks for this answer :slight_smile:

Coming up to the end of the month. I suspect it’ll take longer than that but that is ok. Better to come out a little late and make a great first release.

I just want to point something. The source is already at github, so technically you can already compile and test it (a beta version of course, but still). Ohh but you will have to learn to use haxe for that, good luck.

Lubos said that he would provide an SDK packge (already compiled), so if you aren’t too impatient it’s better to wait a little until the actual realease.

By the way lubos, great tutorials for Kha, though there is a typo (due a new version of kha I think), in the “Main.hx” files for the System.init() function seems to take a list and a callback now: http://api.kha.technology/kha/System.html#init

Also, besides lue and kha, those other libraries you have on your github are also dependences of Armory?

Oh my I hope this will not turn into Duke Nukem Forever! Working as hard as possible to prevent that.:wink:

Tessellation is coming into Kha, so tessellated lod for terrains or tessellation displacement will be doable. Still, the engine runs in the browser too and there is no tessellation unfortunately - as a fallback I implemented parallax occlusion mapping. That means a new texture map is now supported for materials, a height map.

Current license state - Blender add-on is GPL, engine that consumes data provided by this addon - LGPL. If there will be issues with LGPL maybe a dual-licensing can be provided, I wouldn’t want to cause any headaches with this, the only intention is that engine changes should be made public so everyone can benefit from them, but not limit anything produced with it.

Python scripting - still thinking how to handle that, since the engine needs to run on the web, mobile and desktop. For the web the only reasonable way is JavaScript, since there are infinite resources being spend on the JIT compilers which actually make it fast. On the other hand making python available only on certain platforms could be confusing. One way is to use a Python->JS transpiller, but that would mainly provide Python syntax and not the whole ecosystem of Python libraries.

Animation nodes - checking that up!

Mobile support is being polished, forward path is already up and running nicely - this has less features than deferred one but provides better performance, which is useful on mobile. For high-end devices a minimal deferred path will be also possible(want to demo that on Android).

As pointed out, the source is being worked on at GitHub so commits of this stuff can be examined, but there is purposely not a getting started guide yet. Reason is that I need to properly setup an add-on so it works on every machine and every OS. And the reason I still did not get to that is that many basic, obvious features are still not there. Did I mention that up to now there was only support for single light in the scene? Things like this are basically show-stoppers. But, the good news is that multi-light system is now also ready. Below is a shot of 3 differently colored spot-lights. Each light produces shadows(if enabled), number of lights is unlimited(at a perf cost - working on a light accumulation system to speed this up).

There is even more stuff - support for compositor nodes is being added, so color output can be modified using nodes.
The project was noticed by the mighty Ton, which I find really awesome (https://twitter.com/tonroosendaal/status/742824974663200768). This will hopefully make it easier to introduce the project further.

elmeunick9:
Thanks for checking out the tutorials! You are right, the init() is outdated as it has changed in latest versions of Kha, will get it sorted(was waiting for an updated Kha to be relased). Only Kha and Lue(a render system) are the required dependencies. For physics Bullet is required, but this is not mandatory and can be disabled to save some resources for projects with no need for physics. Kha consists of several tools that work together, but they are all packaged as submodules so it’s all in the box(even Haxe is included, no need to install in separately).

Attachments




One more post on the improvements to the renderer - trying to get as close as possible to Cycles renders(will also do a proper post with Cycles shots included and links to referenced blends).

  1. A rather simplistic scene with mostly uniform lighting.

  1. A more complex one, light coming in through the windows, lots of corners. Spherical harmonics are now used under the hood, which is very useful for representing irradiance.

  2. The most recent state, an open environment. Greatly improved raymarched reflections(SSR), now filtered dynamically based on material roughness. More importantly, Subpixel Morphological Anti-Aliasing(SMAA) has been added to avoid jagged edges.

Attachments




Does Armory Engine have dynamic global illuminance?:slight_smile:

That’s amazing! Are you using a 3D grid for spherical harmonics? You can bake distance fields for nicer, screen independent, indirect occlusion based on SH coefficients that can also affect dynamic objects.

How is tesselation going to work.
I mean it’s not supported in Cycles right now, and I believe that I read somewhere that the scenes could also be rendered with cycles as well ( as they are using the same nodes )?

So does this mean you also “brought” tesselation to Cycles?
Maybe that there more things that you added to your engine, that do not work in Cycles at the moment. How will this turn out?

As long as you remind people this is a bleeding edge build when you start posting and that not all (probably a lot of) features will be implemented and things will be unoptimized then I don’t think you’ll have a problem. This is more of an early access build if anything and a very early access at that.

Armory Engine don’t use Cycles renderer at all. It use a different engine (Kha engine) to generate real time graphics. Blender and Cycles UI are only used to export models, shader and some parameters into a project that don’t use Blender at all. It’s like replacing the Blender player by an other executable. The tesselation part mentioned is only provided by Kha engine.

Are we going to get a beginning of the month update on the website?

Will there be proper support for animated textures? I think this will be a vital element that BGE currently lacks (especially for creating duplicate meshes for explosions or determining start frame when it is spawned in).

Will the first version have good fluid and physics support? Will I be able to properly make a campfire or poor a bowl of water over my character’s head?

Global Illuminance - light probes are the only solution as of now, which is not as dynamic as I would like but can achieve good results with minimal performance hit. The problem is that more dynamic techniques are hardly doable on the web and mobile - maybe something along the light propagation volumes? What is your ‘favorites’?:smiley: I am thinking a lot about how to move this forward but want to do it right, and probably not for the early release(which is super late now anyway). I did an experimental hybrid raster and path-traced renderer, which computes indirect illumination using path-tracing. Even though there are loads of artefacts, it actually kind of works - needs more effort though.


Jackii - that’s interesting - got plenty of exploring to do! The placement is not tied to a 3D grid, but I still have more work to do to make probe blending solid. :slight_smile:

Tessellation - as DoubleZ_ says :slight_smile: In Cycles you can already do displacement and high-poly meshes easily, but this comes more costly in real-time renderer. Tessellation can help to displace the mesh on the GPU and do it fast. The scenes can still be rendered with Cycles as well, each material will be node based. It’s on the back-ground where lots of hackery is needed to cut the render times. :slight_smile:

Website update - working on it! Have to travel for a few days now but will do some more on the road.

Thatimster - there are video textures which can be sampled in shaders. Or do you rather mean animated sprites from texture atlases? Billboards are implemented, should be easy from that point.

Sirgeorge - so many features, I think I need to admit the first version will basically do nothing:evilgrin: It’s Bullet under the hood, which I am not aware it has a fluid physics, probably some smart workarounds will be needed.

Some minor progresses, the deferred renderer now runs on mobile too(GLES3 needed, no Vulkan/Metal yet)! Plenty of optimizations ahead, but still pleased that quite capable graphics are doable on mobile.


And the impossible, it’s coming together slowly. Working on making add-on setup as easy as possible - drop in one folder location and it should all work, no installation of anything apart from Blender needed(and unzip of downloaded SDK, contained in one folder).


It all looks great, I think Thetimster is referring to bge, when you animate the uv of a object, you animate all copies, unless you use workarounds,

I could be wrong,

Yes, I mean animated sprites as lubos mentioned. Many Modern FPS games use Animated sprites for big explosions etc. so I thought it could be cool to also allow armoury to do this.

Fantastic work so far lubos!

Wow! This is nice. Here are some technicues for your interest:
-Screen Space Global Illumnination(propably not as smooth and accurate, requires blur in order to look acceptible)
-Voxel Trace Global Illumination
-Voxel aXelerated Global Illumination(NVIDIAs GameWorks VisualFX component)

-Percentage Closer Soft Shadows(NVIDIA)
-Hybrid Tracet Frustum Shadows(NVIDIA)
Or you can make advanced soft shadows yourself(when accessing depth texture, you check if the fragment is further in depth than the depth texture pixel at corrseponding place - you can actually get distance between those 2 points to calculate blur amount.
Or even better - use ray traced shadows.

It seems that you’ve been looking into real-time ray-tracing and path-tracing. That’s amazing. Hopefully some of that will be aviable as option.

By the way - I want to voluenteer for this project in terms of physics. What I want to help is softbody physics. I have done some huge research recently(around 3 months) and I am actually ready to work on it. I don’t know how fast I can implement it(I must make it a friend of Bullet rather than enemy:D), but it wouldn’t be that slow and might be worth it:)

I kinda suspected the first version would do almost nothing. Again, bleeding edge tech (especially the first release) almost never does. It is a foundation and to avoid misconceptions you should promote this as bleeding edge tech in order to get people to treat it for what it is and encourage it to get bigger in the future.

As I love ( dynamic ) Global Illuminance and all other kind of fancy stuff, I would even more like a release.
So I can get - even more - exicted about. Make tutorials / videos and make even more people exicted about it.

So I hope the whole thing finaly gets on rolling soon!