Final renders:_____________________________________________________________________________________________
Hello everybody!
"Road to Mount Ardrak" is an environment I've created in World Machine and Unity 5.5 (yes, Unity!) during the course of 24 hours. I've used a total of 14 assets for this environment, which I've gathered from Megascans.se and the Unity Asset Store.
http://www.youtube.com/watch?v=6dCLGafP_BUMy main goal with this environment was to create a AAA environment with focus on realism, lighting, composition, re-usability and rapid-fire design. I chose to enforce a 24-hour rule upon myself in order to challenge myself and make sure that i constantly focus on what's most "bang for the buck" for the environment. To use big strokes, and not focus on details.
This environment is also meant to be part of my upcoming portfolio.
Unity can seem as an odd choice of an engine when aiming to create an AAA realistic environment, but felt like a natural choice for me. I have been using Unity for almost 4 years, in comparison to Unreal Engine and CryEngine which I've (unfortunately) only spent a few weeks in. Experience alone was not the only thing that enabled me to make this environment though. I have over the years bought several custom shaders and post-process effects from the Unity Asset Store, which have helped me immensely when creating this environment.
I used Megascans.se to sort out the natural aspect of the environment. Five photoscanned 4-8k resolution rocks/assemblies were enough to create varied rocky parts and a pseudo-cave. An environment entirely made out of photoscanned rocks is -
despite the detail - quite boring and plain. I needed other, different, assets that hooked the eye of the beholder.
Finding non-natural assets of the same quality as Megascans was not an option since i simply did not posses the funding at the moment. Creating them myself was also out of the question - i had neither the skills or time to create something comparable to photo-scanned assets.
What I ended up doing was picking up a few free assets from the "Blacksmith" and "Viking Village" environments from the Unity Asset Store, and gave them a visual upgrade. This work mostly consisted of altering albedo textures, adding detail textures, and replacing the standard Unity shaders with a few more advanced shaders.
Here are two examples, the right part of the assets being the final version. The wooden dragon head was one of the faster upgrades since it only required some albedo texture tweaking in addition to a tiled detail wood texture (~15 minutes). The flag on the other hand, was one of the most time consuming upgrades, around 1 hour. Altered albedo, added translucency, cloth physics and a script that simulates wind for the cloth.
I will be posting more details about the terrain workflow, post-process workflow and other technical detail in the days the come.
For those that are curious, here's a list with all of the shaders and post-process effects i have used from the Unity Asset Store:
Shaders:
UBER - Standard Shader Ultra Relief Terrain Pack v3.3Post-process Camera Effects:
DeepSky Haze (Atmospheric Scattering)
Filmic Tonemapping Deluxe (Tonemapping)
Horizon Based Ambient Occlusion (HBAO)
SE Natural Bloom & Dirty Lens (Bloom)
Unity Postprocess Stack (Color Correction, Motion Blur, Viginette, Chromatic Abberation, Filmic Grain)
I really encourage all of you to criticize anything you may think can
be done better! Don't be nice - i want to learn as much as possible. (:
Replies
Explaining the creation of the terrain could be a thread in itself, but without going into too much detail:
I started by creating a basic shape, added terracing and afterwards erosion in order to create the base height map and shape of the terrain. Afterwards I used several masks and selectors to create a splatmap that indicates where the detail rock, green soil and dried leaf textures should be applied. This map was given to the custom terrain shader in Unity, which with some tedious setup handled the rest (Applying the splatmap, Tessellation, LOD, terrain holes, etc).
It took 2 hours to create the terrain. I wish I would've spent less time on it, seeing how small part of the screen the terrain actual takes in the final renders.
@Saaamoth Thanks for the kind words. Since the release of Unity 5, the engine has improved immensely in terms of potential graphical power. And it seems that it will continue improving, with features such as Vulkan support and Mixed Lighting modes promised for the upcoming 5.6 version.
I definitely understand why the majority chose to use Unreal Engine or CryEngine for AAA purposes though, and i would most likely choose to use those over Unity myself if i were to choose to learn an engine from scratch for today. At least when it comes to AAA environment creation. It's important to know that i would not have been able to reach this level of visual quality with the 'normal' version of Unity 5.5. It would still have been OK, but definitely not as good as it turned out to be with the custom shader and post-process effect solutions.
other then that, its looking gorgeous, really stellar work!
Here's a GIF showing what a huge difference the post-process effects make. Note that GIFCam compressed the GIF, screwing up the quality of the images with tons of noise.
I excluded the Temporal Anti-aliasing and Motion blur since they require real-time rendering and well... motion.
Since building my own mobile graphics engine, I've come to realise just how important post processing is. It's amazing how much it can pimp up an otherwise flat and boring scene.
A couple of questions - do you have any idea what framerate this scene would run at on a modern phone like an iPhone 6?
Also, what kind of impact to performance do realtime tonemapping and colour grading have?
Cheers.
I'm personally not a fan of how orange everything is. You push it so far, you lose so much color contrast and it makes the image a bit less interesting imo. I think it may look better if you tone it down a bit, and maybe get some more blue color in the caves.
I also think that, given how organic everything looks...the straight brick path looks a bit out of place. I would like to see it curve through a little more. Additionally, you could work up that area between the path and the dirt/rocks on the outside of the path. The path stones look like they were just set in place on top of everything, rocks and all. It would be great to see some more erosion, some dirt buildup on the edges of the path and seating it into the ground better.
I have very little experience when it comes to mobile game development, but if i am to make a guess, i think it would be somewhat problematic - even for modern phones that have Metal API support. If i would have done an optimization pass with LOD's for everything, removed/tweaked down heavier post-process effects such as HBAO and lowered the resolution on some of the assets from 8k to 4k or 2k in combination with using baked lighting instead of real-time.... it may possibly have run quite ok/well on modern mobiles. I really have no idea though, just guessing.
Currently, the environment averages at 84 FPS on my 3440x1440 resolution screen. My PC build consists of a GTX 1080 and i7-5820k though, so the hardware is very high-end. For reference, Witcher 3 runs at 75-85 FPS at the same resolution, with everything on ultra.
When it comes to color grading and tonemapping, those post-process effects basically make close to no impact on performance. 0-1 FPS drop perhaps.
The straight path has been the thing I've received most criticism for, and it's on my top priority list when it comes to changes for the final version. I think that my main mistake was to use such a straight and long mesh. I will be splitting it up into 2 or 3 parts and create more curves in the final version. Making the brick path blend well with the terrain and rocks was quite troublesome because they have so different shapes, but i will try to polish this further too.
@shubham kumar Thanks for the feedback. I aimed for my environment to be quite foggy, substantially more than Unity's Viking Village, but i'll make sure to experiment a bit more with it. I can agree that especially objects at mid-range are covered in too much fog.
For the record I really like the orange heavy look. It looks a bit too orange on your step by step gif, but the vignetting tones it down just enough.
The biggest visible change that I've done today is improving the lighting/post-process, which you can see in the pictures below.
New:
Old:
- Tonemapping intensity increased by 10%.
- Blue color values increased by 20%.
- Brough all five scenes to the same color temperature (orangeness) - 50 - instead of having unique temperatures for every scene - 45, 45, 20, 65, 65.
- Reduced fog opacity by 10%.
- Reduced fog fade length by 10%.
- Made some tweaks to the atmospheric scattering affecting how foggy the sky looked. It's less foggy now.
Light
- Reduced GI bounced light by 15%.
- Ambient (Sky) light increased by 10%.
- Changed light color from (255, 209, 159) to (255, 200, 159). Slightly more orange than yellow now.
Other
I spent 1 hour trying to make the brick path look less linear, but realized that it creates several problems and tons of work, which i do not think is worth the time. I will keep it this way and make sure to learn from this mistake for future environments.
I added a fade in/fade out effect to the dust particles as they had a tendency to pop too much before. I also adjusted the amount of particles spawned in every scene. Some have less, some more. This change made all scenes look somewhat more alive.
The stone wall structures in scene 4 are remarkably bigger now. This made a huge difference, giving the structure more of a "Wow, this is a mighty fortress" feeling.
The flag in the front (Scene 1) was a bit too dark, so i gave it a subtle spotlight that brightens it a little, without affecting anything else in the environment.
Final patch notes:
- Tonemapping intensity increased by 10%.
- Blue color values increased by 10%.
- Brough all five scenes to the same color temperature (orangeness) - 55 - instead of having unique temperatures for every scene - 45, 45, 20, 65, 65.
- Reduced fog opacity by 10%.
- Reduced fog fade length by 10%.
- Made some tweaks to the atmospheric scattering affecting how foggy the sky looked. It's less foggy now.
Light
- Reduced GI bounced light by 15%.
- Ambient (Sky) light increased by 10%.
- Changed light color from (255, 209, 159) to (255, 200, 159). Slightly more orange than yellow now.
Other
- Fade in/fade out effect to the dust particles added, as they had a tendency to pop too much before.
- The stone wall structures in scene 4 are remarkably bigger now.
- The flag in the front (Scene 1) was a bit too dark, so i gave it a subtle spotlight that brightens it.
- Added some randomness to the force applied to the flags by the wind script.
- Added a slope-based layer of brown moss to the shader affecting the structures and dragon head that makes them look more old and decayed.
- Giant dragon heads in scene 4 too dark. Gave them a spotlight.
- Increased Precomputed Realtime GI Quality.
- Added letterboxing for resolutions other at than 21:9.
- Pressing "Escape" quits the application now.
One of the bigger lessons I've learned when creating this environment is that using props of varying size is important to make the beholder understand the scale of everything. In my case, i had lots of bigger props, but forgot to include objects of smaller size.
As you say, using twigs or branches would have problably been wise, as it would create more variety and help emphasize the scale.
I actually considered using exactly those kind of props, but thought that it could seem illogical. "Branches and leaves. Thats nice. But where are the trees then?" This led to new questions and problems when envisioning the environment in my head, and eventually ended up getting scrapped because of the time-constraint.
https://www.youtube.com/watch?v=fT0ghy3x5wA
https://80.lv/articles/creating-an-aaa-environment-in-unity-5/
Awesome work man! Very atmospheric and sublime. Looking forward to your next one!
One minor crit - some color contrast would be nice for focus on some shots. Like - a green flag on a rusty scenery. But other than that - awesome!