This year everything went somehow different than planed in the first place, for the worse or the better. Besides hardware issues some tasks had been so large and intertwined that making a news post earlier had been tricky. Besides that I also didn't feel like making a news post in the last couple of month. Whatever the reasons out of the work done these tasks had been the most time consuming and important ones.
The main focus had been on reworking the shader system to lift it up to the next level. This had been unfortunately required to get all the bells and whistles done I've planed for this project. This included skin and lighting shaders. This took quite some time since the shader system in the Drag[en]gine is deeply integrated for versatility and performance reasons. Also decal rendering masks have been improved to allow more natural decals (see puddle image).
Another focus had been on optimizing rendering and lighting on various ends to increase performance where possible. This took also longer than expected.
An unfortunate focus had been on upgrading my entire PC leaving me with nearly 2 month of no chance to work on the project. Never before an upgrade went so TARFU. At last the HD7970 is now humming alongside the QuadCore as it should except I'm only running at 75% possible performance but the upcoming driver upgrade should fix this (hopefully).
The last huge task involved redesigning the reflection system. I've evaluated and test-implemented various reflection approaches from simple env-map blending to local reflections to find a good system which actually works with Physically Based Rendering. The system in place now works with a combination of global and local reflections with distance roughness, optional projection boxes and optional mask boxes. This all works across all geometry types in the engine without any additional work by the developer.
Eventually a first version of a weather system has been added to the game to test the reflection system.
This is only the most important part of all the work done. The rest is included as the typical bullet list at the end of the news post to not scare away people with a huge text wall. To counter the text here a few images and some test videos. To not spam only the first of the images in both profiles are linked. Find the rest in the respective gallery going to the left (15 images in total).
Here a small video of the reflection system in action. I think images work better but sometimes people like more something that moves. So here all put together (video-grab messed up the colors).
And here something for the lovers of details. The new weather system also includes cloudy weather code. You all know how lighting conditions change quickly if clouds pass by the sun on a cloudy day. This code uses the Drag[en]gine Sky System to simulate this effect. Since in a detective game locations (sets) are important I would like to add some effects to them like this one here. Watch the entire video to see it. Other weather conditions will be added like foggy or soft/heavy rain to make revisiting locations more interesting.
Although during this year work has been slower than anticipated the number of task tickets left for the first release got less. The end is not far away if nothing else breaks right before the end. With these interwined tasks out of the door news posts will be more frequent than they have been up to now.
The Big What Has Happened In All The Time Short List!
Here the very short list of what happened during all this time. You can stop reading here if you don't want to know all the lengthy details.
- Reworking skin shaders affecting entire render pipeline. Generic and customized generated shaders using extended über-shaders. Texture properties applicable on all geometry types with the same result (components, decals, particles, terrains, prop fields, asf). All variations simultaneously usable at all times (multi-purpose shaders). Higher stability, better optimization potential and easier to maintain and upgrade.
- Support for code generated shaders in addition to modified über-shaders
- Reworking light shaders with a similar system to skin shaders.
- Splitting of shadow rendering into static and dynamic shadow maps with automatic switching of objects between static and dynamic
- Shader based debug shapes rendering for better visual feedback in editors
- Shader parameter support using UBOs for optimized parameter handling in skin and light shaders, faster parameter switching and higher reuse potential
- Sun shadow optimizations culling shadow shafts with occlusion maps (shadow casters in shadows)
- Improved decal rendering with per-texture property masks: color.transparency.multiplier, ambient.occlusion.transparency.multiplier, normal.transparency.multiplier, roughness.transparency.multiplier, reflectivity.transparency.multiplier
- Added transparency.multiplier texture property
- Game similar editable sky in editors with pre-set skies to test with a single click
- Improved particle emissivity rendering replacing transparency based hack
- Improved tone-mapping and bloom fixing smearing problems due to ATI/nVidia driver quirks
- Global reflections using 4 closest env-maps blended into 1 for weaker systems or 8 closest env-maps tapped in shader for stronger systems delivering better results
- Distance dependent reflection roughness
- Local reflections (SSR) using screen-space or view-space algorithm with long ray support
- Fake bounced-reflection for local reflections avoiding black reflected metals
- Optimizing texture format usage for less memory using special OpenGL formats
- Added reflected texture property
- Env-map probes with render groups for reflection control and probe priority
- Box projected environment maps with mask shapes
- Equi-rectangular env-maps for hardware with cube map problems
- Rendering layer masks for fine control over visibility
- JPEG image module
- Light volume box clamping optimization using static shadow map
- Weather profiles with cloudy day effect (see video)
- Indexed rendering and vertex cache optimizer
- TBO based instanced and improved cluster calculation for prop fields
- Imposter billboards for prop fields in the distance
- "shape list" property type for game objects
Great to see you're still working on the engine.
The local and global reflections update looks really cool.
The cloudy day weather system looks pretty neat as well but it might be beneficial if you added some form of ambient occlusion to your world so that you don't loose as much contrast and depth during this type of weather. Of course other scenarios can benefit from ambient occlusion as well.
It doesn't have to be real-time ambient occlusion but considering your engine it might be nice to have some form of it.
Of course one major danger of implementing an ambient occlusion solution is that you mess up its settings and make it look completely unrealistic. (I bet you're familiar with users cranking up their intensity settings for Depth of Field and Ambient Occlusion in other games claiming it looks 'realistic')
I really wish I could play around with your engine to test it out just like I did a few years back.
Also, really cool that you're using box projected environment maps.
A ticket for adding this kind of AO is around already. I played some time back with an AO version which is more elaborated than SSAO but I didn't integrate it due to shader limitations back then. With the new shader system and more powerful GPUs though I think I can try adding it back again. It's definitely on my todo list for the first release.
Where can I find the Binary Version of your engine?
I would like to use it.
It's not yet released to the public since there are still a bunch of tickets left to do. The ticket count though is getting smaller. Not sure yet if I make a preview version of the engine. That's not decided yet.
Make a preview version - I would like to know what the engine is capable of doing. :)
I would also like to help out as an artist if that is OK. :)
I have my own project in the works but It wont be coming to fruition until Unreal Engine 4 comes out :).
I'll see what I can do. Right now though there is no installer for the entire software package except SCons and that's not end-user friendly yet.
I could certainly always use artists for that matter. UE4 is though not that far away so your project would take up sooner or later. I'm not sure if it makes sense to be split across two projects at the same time.
I am putting some stuff together. So expect a PM from me in the next day or so. I like to take my time when it comes to art :)
Speaking of which - What 3D formats does your engine accept?
Currently my own format one can export from Blender 2.6x using an add-on. More formats will be added later on.
Ah, I had almost forgotten about this! Very impressive looking.