About Store Forum Documentation Contact



Post Reply 
Esenthel Turbo
Author Message
Esenthel Offline
Administrator

Post: #1
Esenthel Turbo
The long awaited release is finally here grin

Some heads up first:
-Let me suggest as a precaution first, to backup your projects before updating as there were significant changes through out engine source code
-In case you don't get notified by an update available, please download Esenthel Installer from Esenthel Store, and point to your current engine installation folder

And now for the cool stuff of what's new:

Hardware Instancing, the same (non-skinned) objects will be rendered much faster.

When doing this optimization, I've got tempted into looking what else I could improve in the engine, which resulted in me going through nearly entire source code of the engine, looking how to improve it, look for potential bugs and issues. I hope you can appreciate my effort smile
Also I've included many extras to make this release even bigger!

We now have support for VS 2015 which produces more optimized code, C++11 support, including move constructors, it's good to be up to date with technology smile

I've updated compiling projects to use MSBuild system which offers faster compilation times.

Default Editor is now 64-bit DX10+ which offers better performance. 64-bit versions have more registers, and can perform complex tasks more efficiently.

PAK creation can be up to 8 times faster, as compressing files is now done on separate threads. This will affect many scenarios: When you publish your game, when you export your project as *.EsenthelProject, when you want to play your game on your mobile phone.
Creating PAK's is now also more Steam friendly, if you make an update to your game, you will have to upload fewer megabytes to Steam, and gamers will have less data to download.

iOS 9 Support is now available smile

A bonus for audiophiles - 2 new audio codecs are supported:
FLAC - offers lossless compression, the same quality as uncompressed WAV but with smaller file sizes.
OPUS - a codec that has been created quite recently, it turns out it offers better quality than MP3, OGG Vorbis, and AAC. Also it's very suitable for voice chat through network. The only downside to it, is that it works always on 48kHz.

Having OPUS aboard, I've added support for programatic Audio compression/decompression using that Codec, for which I've included a new tutorial.
Based on which you can now implement voice chat in your apps.
Since Microphone recording was available only on Windows, I thought there's not much point in having good real-time audio de/compression without being able to use it, so I've implemented support for Microphone Recording on Mac, iOS and Android.

I've improved performance of many aspects, including:
animating skeletons
building heightmaps
file processing (loading/saving of both binary and text files)
drawing text
sorting
text string operations
saving/loading images
memory encryption
loading Code Editor symbols
compiling apps for Mac (by not creating iOS icons/images when not necessary)
replaced libJpeg with libJpegTurbo offering 2x faster JPG file processing

Random number generator now has better precision and support for creating random 64-bit integers

Many 3rd party libraries were updated to a latest/newer version:
PVRTC compression
Recast/Detour pathfinding
Chartboost for iOS
AdMob for iOS
Facebook for iOS

Entire engine source has been cleaned up a bit, and some bugs were squashed as well.

And that's just part, because there are many other cool improvements, you can see the full list over here:
http://www.esenthel.com/forum/showthread.php?tid=8711

Enjoy! lol
10-13-2015 11:05 PM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #2
RE: Esenthel Turbo
I've just tested with a previous written program, and I also notice quite the change in core usage, overall very nice update, memory usage is also reduced by a bit, very nice to see these changes. Top notch, of course that is almost the only thing to be expected considering how you OCD'ed the source changes. wink

I am curious about this "animating skeletons" optimization as I've not tested this yet, is this related to reducing matrix operations per bone or was there changes to matrix operations themselves? has been too many changes to really just skim through them all. smile

Can't wait to see Tottel upgrading his benchmark tool to see if its able to use instancing to a noticable degree. smile
(This post was last modified: 10-14-2015 02:57 AM by Zervox.)
10-14-2015 02:56 AM
Find all posts by this user Quote this message in a reply
Esenthel Offline
Administrator

Post: #3
RE: Esenthel Turbo
Thanks smile

The animation optimization is about optimizing the:
"static void UpdateBoneMatrix(AnimatedSkeleton &anim_skel, Int i)"
function in:
https://github.com/Esenthel/EsenthelEngi...eleton.cpp
I've applied some optimizations to calculation of bone transformation matrixes.
10-14-2015 03:46 AM
Find all posts by this user Quote this message in a reply
Tottel Offline
Member

Post: #4
RE: Esenthel Turbo
Very impressive! I will try today and compare: FPS, memory usage, CPU usage and PAK size.

EDIT: So eh.. How exactly do we use HWI? pfft
(This post was last modified: 10-14-2015 10:01 AM by Tottel.)
10-14-2015 06:51 AM
Find all posts by this user Quote this message in a reply
LDA Offline
Member

Post: #5
RE: Esenthel Turbo
Good to see an update here !!
Fffffffffshhh, that's an impressive one. I'll try to update my project soon
10-14-2015 09:43 AM
Find all posts by this user Quote this message in a reply
kevindekever Offline
Member

Post: #6
RE: Esenthel Turbo
nice update
10-14-2015 10:16 AM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #7
RE: Esenthel Turbo
(10-14-2015 06:51 AM)Tottel Wrote:  Very impressive! I will try today and compare: FPS, memory usage, CPU usage and PAK size.

EDIT: So eh.. How exactly do we use HWI? pfft
Was wondering the exact same thing actually. pfft
10-14-2015 11:32 AM
Find all posts by this user Quote this message in a reply
krokodilcapa Offline
Member

Post: #8
RE: Esenthel Turbo
I guess the engine automatically uses it on the same static models, it will results in fewer draw calls.
By the way, thanks Greg, and supporters, I was really waiting for this update. smile
10-14-2015 12:06 PM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #9
RE: Esenthel Turbo
The thing is how would it decide the best case? HWI loses its gains if the objects are too complex, and it actually is more expensive when there is too few objects to draw and its no way to know for sure if its better unless you profile it.
10-14-2015 12:16 PM
Find all posts by this user Quote this message in a reply
krokodilcapa Offline
Member

Post: #10
RE: Esenthel Turbo
I see, I've learned something new again. Never though if hwi can be turn to "bad" haha grin By the way it must be helpful for my low poly trees of my never-ending forests.
10-14-2015 01:50 PM
Find all posts by this user Quote this message in a reply
Zervox Offline
Member

Post: #11
RE: Esenthel Turbo
In a case like that HWI never fails. ; )
10-14-2015 01:54 PM
Find all posts by this user Quote this message in a reply
Pixel Perfect Offline
Member

Post: #12
RE: Esenthel Turbo
Great to see HWI in at last along with all the other improvements/additions. That's one huge update and a great job Greg!

Once I get my current work out of the way (all AI engine ... not Esenthel related) I'll probably invest in a binary licence again as I'd like to see what performance improvements I get with my test level using this version.
10-14-2015 04:50 PM
Find all posts by this user Quote this message in a reply
Esenthel Offline
Administrator

Post: #13
RE: Esenthel Turbo
Hi!
HWI is used automatically by the engine, no extra codes are needed.

Source licensees interested in tuning/checking the HWI, you can play around with:
https://github.com/Esenthel/EsenthelEngi...ancing.cpp
INLINE void DrawSolidInstances(Bool clear, Bool forward)
and other functions in that source, that use 'drawInstanced' method
10-14-2015 09:29 PM
Find all posts by this user Quote this message in a reply
georgatos7 Offline
Member

Post: #14
RE: Esenthel Turbo
Hey Esenthel, i am updating now to run a few tests but it would have been helpful to know beforehand if the update affected the shader usage in the engine? Because i had a lot of stuff done in the past that i'm planning to resume soon.

Please keep in mind that i had purchased the Esenthel Shader Headers when they were available and my work is based on that.
(This post was last modified: 02-01-2016 06:31 PM by georgatos7.)
10-14-2015 10:20 PM
Find all posts by this user Quote this message in a reply
Esenthel Offline
Administrator

Post: #15
RE: Esenthel Turbo
Hi,

You may need to adjust your vertex shaders for DX10+
Code:
#if DX10
      if(true) // instance
      {
         O.pos=TransformPos(pos, vtx.instance());

         if(bump_mode==SBUMP_FLAT)O.mtrx[2]=Normalize(TransformDir(nrm, vtx.instance()));else
         if(bump_mode> SBUMP_FLAT)
         {
            O.mtrx[0]=Normalize(TransformDir(tan, vtx.instance()));
            O.mtrx[2]=Normalize(TransformDir(nrm, vtx.instance()));
         }
      }else
   #endif
      {
         O.pos=TransformPos(pos);

         if(bump_mode==SBUMP_FLAT)O.mtrx[2]=Normalize(TransformDir(nrm));else
         if(bump_mode> SBUMP_FLAT)
         {
            O.mtrx[0]=Normalize(TransformDir(tan));
            O.mtrx[2]=Normalize(TransformDir(nrm));
         }
      }

For dx10+ you need to transform the vertex by a matrix specified with vtx.instance index
10-14-2015 10:27 PM
Find all posts by this user Quote this message in a reply
Post Reply