Monday 19 November 2018

Update: September/October/November 2018


You may believe me or not but I'a writing this post for almost two months already. Previous version I wrote 27 October when I was sitting at the airport waiting for plane to return back from the Unite LA where I was presenting Memory Profiler for Unity. The post looked like that:

... another month behind us and it felt like it was taking forever.  - This is how I started writing this post more than week ago. In meantime I hadn't found enough time to finish it up. But now in meantime of sitting at the airport and waiting for returning flight I can finally do that.  
There is only one problem. When I was writing previous version I was certain that I published previous post just month ago. Sadly this are already two months and I have hard time figuring it out when this time passed :| 
Prediction from previous post became reality and I was busy most of the time. When this wasn't the case I was often trying to rest and recharge my batteries. But hey you know me and even with all of that I couldn't stop myself from working on the project. So there is some progress. 
This time theme was and still is "rendering improvement" a.k.a. "fixing my mistakes in the rendering systems”. Whole my work right now is just accumulation of all the changes inside engine architecture over the past few years. Till now I could live without this changes because I worked on relatively simple maps. This days this changing and it sadly don’t perform how I would like it to. At that point of the time I didn’t know that rendering code will be my personal Pandora Box. The best thing was that I casually planned to open it like nothing happening :] 

Introduction

In the last months I wanted to gain more data to profile how technology behind the game behave. That is why I invested some time to improve reporting and collecting data. One of the big change was increasing amount of markers I collect and adding support for scheduling jobs and tasks. Sadly in the profile results I always seen that sending data from CPU to GPU takes a lot of time (slowing down whole rendering). 

Act I

Bravely I jump into fixing my issue and I dealt with it gracefully and quickly … this were my empty wishes. In reality this was a nightmare that took hours full of debugging and frustration. At that point I still  hadn’t expected that this will evolve into big refactoring of GPU buffer management. One change leaded to another and moment later I were already fighting with  synchronization issues inside my multi threaded rendering.  
Issues that contain "multi threading" in name are almost never easy to find. It took me week of poking around and trying understand what the hell happening. But I finally had breakthrough: I found it. I could finally see result of all my hard work.  

Act II

Happiness didn’t last long: Issue that I initially tried to fix was still present. I started to digging more into the whole system and found: despair. All the changes in the rendering system I done over last years overlooked crucial aspect of it: tracing of GPU resources usage. Because this days my tech have separate threads to render and upload data: system was ending in the situation when uploading data overlapped with rendering that used this data. I suspect that this was the reason behind whole long GPU uploads.  
Yes I wrote “suspect” because I still hadn’t finished this change :/ I right now try to build in my mind way to implement it in intuitive way that fit whole system. 
TBC…
So this were for me past 2 months. I cannot really say I’m happy with progress over it but taking into account how much free time I had it isn’t bad. 
And there was continuation of this post that you never seen before.

Act III

This whole work resulted in noticeable performance boost and stability. Sadly I never really finished this changes. It is not the first time that this happen when I need to jump between tasks so whole thing was moving forward...

When I thinking about it right now, December will mark start of my 9th year of remake production. .. So much time ... So much memories ... Who could expect back then that this one small decision will  affect my life so much.. But hey you don't read this post to see me getting melancholic.

You are probably more interested into what waiting for you this year? And this is interesting dilemma for me because I have some stuff done. Yes I really have but they are not where I want them to be. I feel that if I will show them to you  right now I would spoil the whole thing :/ But on another hand you probably don't believe me when I writing this ..... ehhh. Well I may taking wrong decision  but this year I won't be showing anything and just focus on what I do right now to show you some stuff in the first half of next year.

I should also apologies because I will probably be late with the posts again. Finding time to write longer text between work, project and life proving to be relatively hard to me :/ I may try to write shorter messages but knowing life they will turn into the longer posts.

So that is all for now and till the next message whenever it will happen.

Greg

1 comment: