This is a follow up from the halfway-though-Trailed-project blog post . It is finally done!! Me and my team are very proud of what we have achieved for this 4 months long capstone project. Here are the results!
Enjoy! []^_^[]
Enjoy! []^_^[]
FINAL RESULTS
Daytime/weather comparisons ( = 5 cubemaps )
Sky & semi-procedural clouds
Water stream/river cubemap cheat comparison
FEATURE COMPLETION
This video shows some technical aspect hard to demonstrate by image or text.
It shows falling leaves effect, all the debug and manual controls offered for the time/weather system, depth based texture blending for long distance relief, LODs, Vegetation fade effects, cubemap transitions, lightning, various water/rain effects, daytime transitions in real time.
It shows falling leaves effect, all the debug and manual controls offered for the time/weather system, depth based texture blending for long distance relief, LODs, Vegetation fade effects, cubemap transitions, lightning, various water/rain effects, daytime transitions in real time.
All blueprints, shaders, main weather/time interface, master shader material UI & debugging I did
Special features: Light cone + 3D fog anim, dithered transparency, puddle rain drops, volume post process, lightning
Quadrants of the different time/weather combinations. Transition areas (lines) are the most challenging.
COMPLETED FEATURES
Previous ToDos
- [DONE] Water glide - Used a simple non procedural world projected panning normal maps instead. Works just as well.
- [DONE] Camera Lens droplet - Linked a plane to the camera with droplets shader.
- [CUT] Foot Splashes from character - We don't even see her feet
- [DONE] Static clouds (using Vue's renders from our Level Artists) - surprised how 2x1K textures did the trick
- [DONE] General polish/improvement - colors, sounds, transit, cube blend, wetness,etc
- [DONE] Character skin shader - Used UE4 integrated opaque SSS feature
- [DONE] Additional sounds - Lightning integration, Manual trigger, follows player, overrides environment, sounds
- [CUT] Pivot painter shader implementation for small plants (grass) - Not enough time
- [DONE] Performances - LODs technical direction, draw calls/IDs, texture size (saved 1Gb RAM!), shader iterations
- [DONE] Water streams / ponds, water falls -
- [DONE] Water glide - Used a simple non procedural world projected panning normal maps instead. Works just as well.
- [DONE] Camera Lens droplet - Linked a plane to the camera with droplets shader.
- [CUT] Foot Splashes from character - We don't even see her feet
- [DONE] Static clouds (using Vue's renders from our Level Artists) - surprised how 2x1K textures did the trick
- [DONE] General polish/improvement - colors, sounds, transit, cube blend, wetness,etc
- [DONE] Character skin shader - Used UE4 integrated opaque SSS feature
- [DONE] Additional sounds - Lightning integration, Manual trigger, follows player, overrides environment, sounds
- [CUT] Pivot painter shader implementation for small plants (grass) - Not enough time
- [DONE] Performances - LODs technical direction, draw calls/IDs, texture size (saved 1Gb RAM!), shader iterations
- [DONE] Water streams / ponds, water falls -
Other Features Done
- Distance based DX11 tessellation for brick walls - More problems than advantages for a first experience
- Custom lens flare - Didn't find a way to ray trace through masked surfaces properly but shader concept worked.
- Mountain self illumination cheat - fog was only realistic at short distances. Used same shader cheat as water on them
- Water cubemap cheat - A know issue was causing Z-Depth discrepancies when used with atmospheric fog. I fixed that
- Cubemaps blending - Done in post process and on water/mountain shader with 5 baked cube maps. Sky capture = lag!
- Character Hair and Fur shader (Dithered masked transparency) - Would have worked better with 60FPS, not 25-30ish...
- Distance based DX11 tessellation for brick walls - More problems than advantages for a first experience
- Custom lens flare - Didn't find a way to ray trace through masked surfaces properly but shader concept worked.
- Mountain self illumination cheat - fog was only realistic at short distances. Used same shader cheat as water on them
- Water cubemap cheat - A know issue was causing Z-Depth discrepancies when used with atmospheric fog. I fixed that
- Cubemaps blending - Done in post process and on water/mountain shader with 5 baked cube maps. Sky capture = lag!
- Character Hair and Fur shader (Dithered masked transparency) - Would have worked better with 60FPS, not 25-30ish...
IN A NUTSHELL
What I learned:
- Understood the balance intricacies and complexity of building a dynamic time/weather system from scratch
- Fog, Water, Clouds, Sky, FXs, Rain, CubeMaps, Post, Lighting, Lightning, etc all need consideration each weather state
- Learned a lot about UE4 graphical, performance and technical limits
- Learned to better optimize, prioritize, organize and approach problems
- Learned how to technically manage a team
- Found that Distance Fields technology is VERY promising.
- Biggest challenges are time/weather transition phases, rivers, lightning effects and sounds implementation.
- Understood the balance intricacies and complexity of building a dynamic time/weather system from scratch
- Fog, Water, Clouds, Sky, FXs, Rain, CubeMaps, Post, Lighting, Lightning, etc all need consideration each weather state
- Learned a lot about UE4 graphical, performance and technical limits
- Learned to better optimize, prioritize, organize and approach problems
- Learned how to technically manage a team
- Found that Distance Fields technology is VERY promising.
- Biggest challenges are time/weather transition phases, rivers, lightning effects and sounds implementation.
To do better next time:
- A better Blueprint code structure - A thorough review of the code to allow design of faster debugging and performance
- Keep everything SIMPLE at the beginning. Water gliding and moon texture projections were a waste of precious time
- Get better at linear algebra, especially to understand vector space transformations
- Advanced custom lens flares could have been be a big plus instead of the screen space procedural ones.
- I would recommend using Speed Tree only for longer term projects along with a team with prior experience on it. Lots of unforseen problems using it (LODs, texture atlas, wind control, performances, overdraw, data management, etc)
- Have a budget guidelines right at the start. (Vertex counts/LODs, mat IDs, draw calls, shader instructions, etc)
- Skylight system with Distance Field Ambient Occlusion with animated Vegetation = NoGo.
- Make a better puddle system for the terrain. It worked well for flat & solid objects however.
- A better Blueprint code structure - A thorough review of the code to allow design of faster debugging and performance
- Keep everything SIMPLE at the beginning. Water gliding and moon texture projections were a waste of precious time
- Get better at linear algebra, especially to understand vector space transformations
- Advanced custom lens flares could have been be a big plus instead of the screen space procedural ones.
- I would recommend using Speed Tree only for longer term projects along with a team with prior experience on it. Lots of unforseen problems using it (LODs, texture atlas, wind control, performances, overdraw, data management, etc)
- Have a budget guidelines right at the start. (Vertex counts/LODs, mat IDs, draw calls, shader instructions, etc)
- Skylight system with Distance Field Ambient Occlusion with animated Vegetation = NoGo.
- Make a better puddle system for the terrain. It worked well for flat & solid objects however.
Weak/Strong Points...
Weak:
- Performances - 8M polygons! (Most of it with high vertex instructions vegetation) We had 22M Polys before...
- Too much time spent on negligible features (Water glide, moon texture projection, lightning)
- Delegate tasks! Sometimes, its better to say "Can you do it instead?" ;)
Strong:
- Technical directing. Sometimes, you have to bring down the axe on the details and quality.
- Most added features had good quality and a global impact on look and feel of the game
- Was organized and knew if deadlines would be met on time or if it was to cut out a feature.
Weak:
- Performances - 8M polygons! (Most of it with high vertex instructions vegetation) We had 22M Polys before...
- Too much time spent on negligible features (Water glide, moon texture projection, lightning)
- Delegate tasks! Sometimes, its better to say "Can you do it instead?" ;)
Strong:
- Technical directing. Sometimes, you have to bring down the axe on the details and quality.
- Most added features had good quality and a global impact on look and feel of the game
- Was organized and knew if deadlines would be met on time or if it was to cut out a feature.