Not dead!

Due to recent family issues, I couldn’t update the website with new info, but the project is still ongoing.
The code is now hosted on github: https://github.com/IonutCava/Divide-Framework

More info to come when I get a chance.

4000m Eurotrip in a Nismo

I originally posted this on jukeforums.co.uk on the 27th of August 2015, but due to some forum changes, the post got messed up so this is my attempt at keeping the info alive.

Hi everyone!

After deciding to go on a holiday back to my hometown of Tulcea, Romania, me and my GF (Geo as in geopopa on the forum), decided to drive there. Since it was going to be a long journey, we decided to visit a few cities on our way, to decide which ones are good candidates for city breaks (e.g. Bratislava) and which are not (sorry Budapest).

Since we were passing through some nice places, I had the “brilliant” idea of taking pictures with the car in every place of interest. Sadly, most of the cities have a very aggressive “no parking near the main attractions”  policy, so we did our best. We thought it might be nice to share our experiences here on the forum.

Anyway, here’s the first part of the journey: Bristol (U.K.) -> Tulcea (RO)

First on our list was Antwerp, Belgium. Beautiful city, but I wasn’t as impressed by the old part of town (after visiting Brussels, Bruges, Ghent, etc) so decided to go in the Old Harbour and see if we can find a nice spot. We didn’t. The best we got were a couple of shots by the Museum aan de Stroom :

Next up, we drove to Munich. As lovely as the city is, the main locations I had in mind for taking pictures were either BMW World and Allianz Arena. BMW World is in a park, so Allianz Arena seemed like a better idea. It wasn’t. Parking anywhere near it was impossible, so this is the best shot I got:

 

Feeling a bit discouraged and doubting my plan’s chances of success, we got a message from Wilson (Lawrence – very active on the Facebook Group) asking us to visit him in the beautiful Ramsau bei Berchtesgaden. Vienna was our next destination, so we couldn’t refuse a slight detour and loose the chance of driving up the mountains in the Juke. This is what happened next:

Sadly, we had to move on and head over to Vienna. As you can imagine, it’s very crowded, and the best we managed was to snatch a quick picture in the Schwarzenbergplatz:

 

Moving on to Budapest, we wanted to take a picture in front of the parliament building, but parking was limited. It’s still visible in the back:

We made another overnight stop in Cluj-Napoca, but on the outskirts of town so it didn’t exactly qualify for the album. However, The greatest driving road in the world! did, and the outcome was amazing. As a side-note, this was one of the main reasons we decided to drive back home.First of all, the view is incredible:

(I blurred Geo’s  face so I wouldn’t get in trouble :)) ). She was taking this:

 

Way up in the clouds (2000m) :

And the road is just silly fun:

The next stop on the list was Bucharest. Although it’s an AMAZING city (just Google “Bucharest” and click on Images), I decided to take a shot with something that the British folk might expect, so I went in front of the biggest P.O.S. in the country, and tried to capture it’s awfulness. Ladies and gentlemen, the “People’s Palace” (heaviest building in the world, second largest, etc):

 

 

The damn thing is so large, Geo had to take 3 pictures and stitch them via software. We tried to use the tripod. We failed. We then moved on to Constanta. Geo’s hometown. We stopped in the Old City and stood in front of the former City Hall for the photo. Taking said photo in a parking lot proved a bit difficult, but this is the best we got:

 

Afterwards, we moved to my hometown, Tulcea, right at the entrance to the Danube Delta:

And that concluded the fist part of the journey. The second bit wasn’t as successful photo-wise, but we did our best. So here’s Tulcea -> Bristol:

First (new) stop, Bratislava. Incredible city, definitely visiting it again:

 

Prague was also OK, but DON’T PAY IN EUROS OR YOU WILL GET SCAMMED. We payed ~70 euros for a tank of fuel. It was also a city where parking in the centre was difficult, so we stopped near the castle:

The last city on the list (asides from Brussels where we stopped just to buy beer), was Frankfurt am Main. The bad news is that we arrived on a Sunday, so parking anywhere near the centre was next to impossible, so Frankfurt Cathedral will have to do:

We also blew a tyre in the world’s tightest underground parking lot. Since Germany shuts down on Sundays, we spent the night in the small town of Maintal, outside of the city and it is gorgeous and probably has the best ice-cream in the world. We didn’t regret a single second of our 1 day extension to the holiday.

We did kinda regret the 240 euro tyre+labour charge for a single Conti, but on the other hand, I expected  unexpected costs :)).

 

And that’s about it. A few things to get out of the way:

  • The Autobahn is amazing and the Nismo feels right at home:
  • Fuel consumption is stuck at 30 mpg on the dashboard, but the classic pen and paper method (well, Fuelly, but still) gave a 31.5 – 32 mpg. With A/C on >50% of the journey. The Autobahn dropped that right down to ~18. I REGRET NOTHING 😀 .
  • The seats are really really good. Multiple 8-9 hour driving sessions and nothing ached.
  • No mechanical failures, rattling, or unbearable cabin noise.
  • Once you go past Belgium, it’s a real head-turner. The number of Jukes on the road drops dramatically. I think I only saw 2 other Nismos in total.
  • All of the pictures are available in high-res on my public imgur album.

 

And that’s about it.

 

Thank you for your patience! 😀

Ionut and Geo.

Finally got the game type nailed down

No exactly huge news, but the I’ve got my game idea all laid out in random ToDo lists and project files.

The main game code will be closed source during development, but the tech updates needed for it will, ofc be open source and free. Once the game is in a playable state / early access, provide full game source (merged back in trunk). Reason behind this: specific game mechanics and game code and formulas should be obfuscated to avoid cheating. Open source version will contain modified code for specific parts of the game.

All of the recent commits have been focused on multithreading and load balancing because the idea requires a fair bit of scale. Not a lot, but a dual-core CPU will not be enough.

So, to get to the point, the main game will incorporate ALL of the current engine’s features: terrain (with water and vegetation) rendering, GOAP based AI, networking, first person camera system, Forward+ lighting and EVSM-CSM.

 

It ‘s a .. drum roll … “Open arena, objective based competitive shooter with dota-style PVE elements“.

Think Doom(1,2,4)/Quake(1,2,3)/UT(’99, ’16) meets Tribes with Dota creeps and side objectives.

Must have features:

  • LARGE terrain rendering. Basically, a large map (depending on the target number of players/teams), with bases on each side, separated by large pools of water with tight, competitive crossing locations.
    • Not limited to 1 v 1. 3 teams should also be a possibility
    • “separated by large pools of water” – DIVIDEd by large pools of water.
    • Size is needed to allow bunny hopping, speed buildup, sniper camping and other FPS goodies.
  • Foliage should provide some coverage (visual only)
  • Creeps all over the place. The center arena should be crawling with smart mobs that could easily kill you, but give decent drops such as weapons or other items(YTBD).
    • Aggro system à la World of Warcraft/Doom so you could have the creeps follow you, shield you from enemy hits, and attack them instead
  • The game should offer two distinct paces that intertwine all the time:
    • fast pace shooting
    • slow pace sneaking in the shadows (mostly in bases).
      • A few things are needed to handle this but the slow pace stages should never overstay their welcome: sneak in a base, steal something, run. Or run, shoot, sneak behind trees, wait, run, shoot.
  • Day/Night cycle (or just a match setting). Game at night will mostly rely on following lights and shadows, both from player gear or projectiles. Should provide a more tense experience as mobs won’t be lit.
    • Small amount of ambient light will be available (e.g. moon) to avoid unnecessary stress and eye strain.
  • Interiors only lit by artificial light and what windows/holes are available.
    • Add ability to disable lights to hide in shadows
  • No loadouts, customized weapons, special perks,etc
    • Pure FPS experience. Everyone has access to every single weapon with strict damage values and behaviour.
    • In game pickups provide damage boost, shield boost, etc
  • No health/shield regen
    • Pick up health packs, shield items, etc (fight over them)
  • Full physics interaction with environment
    • No idea on how to do this one, but I know I want a player to be able to drop a boulder on another player and kill him.
  • No weapon limit but limited ammo:
    • Carry how many weapons you like/have/found/etc. Manage ammo yourself.
  • Cross-platform play (PC only):
    • Windows, Linux, Mac (if they ever update GL drivers, or implement Vulkan. Screw Metal)
    • Won’t stop someone playing with a pad on PC. It’s their choice as a filthy peasant that they are.
  • Never drop below 60FPS in-game. Ever. Drop FBO resolution, drop particle updates, downgrade graphics automatically, but 60FPS is a minimum. 120FPS is unlikely because I like post processing.
  • TotalBiscuit slider: FoV should be scaled however you like it, but never so much that it wraps around and provides unfair advantage. 110? 120? Sure!
  • As I don’t have access to a team of developers, the graphic quality, animation quality, lack of lipsync, etc will be indie-level at best (duh), but the game (and assets!) will be free for everyone to do what they please.
    • Assets are only free for project-derived usage: Wanna use them in your game/project: NO!. Wanna use them in a mod or personal project: Sure!
    • Code is free, as usual, so I’m counting on others to provide better code for random stuff.
  • Fermi class GPUs should be supported! So, sadly no bindless-ultra-fast ARB extensions unless I find the time to optimise for specific targets.
    • Reason: current laptop has a Fermi GPU and I also use it for development.

That’s about it for now. I’ll keep the list updated on the main website (after I publish it).

Bit silly, but I’m happy :D

Bought the car with 4650 miles on the dash. >15K miles later and still going strong. Still over 50% on front brake  pads (I do find this a bit odd, but hey) 😀

 

Yay!

20000 potates miles

Left all Romanian-centric FB groups (Long rant)

One of the most annoying things you can hear from Romanians in the UK:
– “I consider myself to be a better fit here. I don’t like the lifestyle and mentality from back home”.
Let me translate that: “I prefer living off the back of a former empire instead of helping my own nation thrive”.

An empire that generated a huge amount of income in the course of 2-3 centuries. How did that empire came to be? By building ships, finding primitive nations, enslaving the natives and taking the land and its resources. “Australia Day” anyone? Ask the Aboriginals about their feelings on the matter.

The Dutch, the French,The Spaniards, etc. They all did the same and spread the wealth via political marriages and alliances. An all-out “criminal gang/mob.” Another great empire that tried to do the same? The Ottomans. Where were we? On the other side of those curved, thin swords. Fought them for centuries and the Vatican gave  us a glorified merit badge. “Yay”.

Centuries after, the main focus was to apologize for their former mistakes with extensive “human right movements” and “lenient immigration policies”. “Empire” became “commonwealth”. Let’s share the wealth. Hey India, GZ for the satellite around Mars. How’s that poverty thing going?

– “But they are more accepting”. –

Yeah, they have to be. Politically. But that doesn’t always work out. Look at what’s happening in Sweden, Denmark, Germany. The cracks begin to show when “acceptance” conflicts with your laid-back lifestyle and you start noticing the people you “accept”.

I stand by my argument that we, as a nation are among the most accepting and tolerant around these parts. Why? Not because we like people of different religions, sexual orientation or ethnicity, but simply because, we just shrug it off or just don’t care enough.:

–  “Fought ottomans? 10% turkish/tatar population in Dobrogea? Meh”

– “Treceti batalioane, romane, Carpatii? Hungarians all over the place? Meh”

– “Damn backstabbing gypsies!!! They are not Romanian. Except that one, or the one next to me in Uni, or the nice taxi driver, or the quiet neighbour”.

– “Gay people are an abomination in the eyes of God!!! Oh, you’re gay? OK”.

(Speaking of God, the trust in the Church fell from about 90% in 2003 to ~58% now. We just learnt how to spot a thief. One of the arguments that I found online amused me … a lot: As a nation we are still capable of praying to God to protect us from getting caught while trying to steal something)

Instead of bashing your home nation, how about doing something productive?

How about protesting about that idiotic registration tax. “No, let’s ban cars with foreign numbers. Allow them 60 days per year and that’s it. Other nations do the same”. Yeah cool. Or, find out why they register their cars in other countries? Buy a Corsa and pay 1500 euros in tax? Yeah … NO.

How about protesting about each and every stupid/unused tax? Road tax / petrol tax? They do indeed sound good on paper. No more potholes. Proper highway maintenance. Etc. Oh, wait … Maybe publish the invoices?

How about calling the cops when you see someone adding an extra floor to their house and the details look fishy / don’t add up?

How about calling the cops when someone parks on the pedestrian crossing? It’s against the law, you know.

No. Let’s just look the other way and hope that one day we can all afford an ULCC ticket to somewhere else.

If you wanna advance in your career and another nation will help you with that, by all means, that’s fine and encouraged.
If you can’t find a job based on your diploma back home, by all means, go somewhere else.
If you just admit that you like money and another nation can offer you more, then please, go ahead.

But stop praising the West and s****ing on your home when the only historical things we have in common is that we share the same planet. We need to catch up Hungary/Poland, not France/UK. Italy at most. No matter how hard you try, you are not and never will be British/French. They’re proud like that. We should be too.

Tired of this s**t.

Lack of updates

This wasn’t exactly a “quick” update as promised, but boy was it hectic around here lately.

Hopefully, those interested in the code didn’t mind the lack of posts on the site and/or blog, as the commit history on the XP-Dev project provided all of the interesting news (code-wise) a programmer really needs. And since this is mainly a research/personal project and a game based on the code is at least 2 years away, I don’t feel the need to explain every decision I make. Twitter/E-mail/FB seem to suffice for now.

So, on to the updates.

  • Framework:
    • There’s a game/demo planned. The engine is, surprisingly, feature-complete for what I have planned.
      • Not a platformer
      • Not 2D
      • Involves a lot of particles, lights, physics and animated units
      • Water/Terrain/Vegetation are essential
      • Minimal networking support
      • Not an RTS (well …)
    • Need to keep a solid 16.66ms frametime with everything enabled (PostFX, shadows, GUI) on my machine (will take most of my development time).
    • Improve/complete the editor and XML interface. Mainly add a couple of external tools for assets. Nothing major.
    • Fix the scene management system (load/unload)
    • Complete the Forward+ renderer
    • Finish the multi-threaded generation of rendering commands in preparation for Vulkan/DX12
  • Personal life:
    • Still waiting on a “sudden” influx of cash to finish my watercooling loop.
    • Received a Dreamcast as a birthday gift. That was awesome. Also bought an Atari 2600.
    • Might change jobs soon enough. Signed up as a C++ developer, worked in Java for over 6 months. Getting fed up.
    • Got a car 😀10974520_924106240947727_4559220109072037624_o

 

 

 

 

 

 

 

 

  • About the car:
    • Various exterior and interior mods:
    • The 197BHP/1295Kg PWR of the Juke doesn’t seem to be enough (~ Golf GTI Mk5 / Celica GT4 level). It’s so sporty, it’s basically begging for mods. Especially since mods are dirt cheap.
      • This does not mean that I go racing / do track days in it. I love it to bits and would never endanger it. Not even a speeding ticket yet. It’s mostly a hobby.
    • Got an Injen Cold Air Intake with a Hydroshield on it to avoid hydrolocking.
    • Got a 2J Racing Crank Pulley for easier revving. Insurance company said “Hell no!”. Currently on hold in the boot ’till January when I’ll kindly tell Admiral to shove something somewhere.
    • Next upgrade will be either SS brake lines or this front strut brace (followed by the other one).
    • In the mean time, I’ll also be looking at painting the calipers with Nismo Red.
    • A middle and a rear lower bar are also on the list, because … reasons and Transfăgărășan 😀
    • A FMIC would also be useful, as well as a 2nd Cat delete (or at least a high flow second cat)

That’s about it for now. I guess. Will eventually post screenshots once I get a few hundred lights on screen with a decent framerate.

Quick update soon!

Since I started my new job at Gameloft, I had little to no time for posting on the blog/site and doing other social stuff, but development did not stop in any way.
As of this post, AI PathFinding is fully functional and I’ll post a short video and some development logs and description as soon as I get some breathing time (possibly over the weekend).

In the mean time, Facebook is a great place for day-to-day updates.
Twitter is almost as good, but lacks the screenshot and video updates.

Life in the UK: Why it sucks.

[warning]Disclaimer: This is a personal rant, it’s strictly my opinion based on my experiences here.[/warning]

Found this article today and was expecting to read some patriotic propaganda, but after reading it twice, it kinda conveys similar feelings to my own about this country: it’s a soulless, consumer driven, mishmash of everything bad (and good, don’t get me wrong, but I’ll explain what I mean later on) countries around the world have to offer. I kind of disagree with the slight homophobic tone and I’m not that interested in the religious aspect, but the cultural points touched by it are, to some extent, spot on.

[important] BTW, it was a Facebook status, posted from a phone, so give the girl some slack, ok?[/important]

I’ll start from the most simplest examples leading up to the entire “gypsies in Park Lane” fiasco.

The guy running a convenience store down the street doesn’t even speak English (he’s Indian, I believe). Geo (my gf, who lived in the UK for the past 2 years and now works here) was trying to top-up a broken electronic key at the guy’s PayPoint machine, and it failed, obviously. We were unaware the key was broken, but that wasn’t an issue (they’re cheap); the guy’s response was the thing that bugged the both of us: “Key no work. No good.” Yet he can work anywhere in this country without restrictions, and the best that I got, was:

“Dear Ionut,

 Thank you for attending an interview at XYZ. I was very pleased to meet you and appreciate your interest in the development role.
 After careful consideration, I regret that we cannot offer you a position at this time.

During the past 4 months, I’ve met a few actual British folk and trying to be friendly and chatty with them is utterly useless. They don’t give a fuck about anything unless it concerns them directly. Finding things to talk about, anything, be it politics, the weather, cars, is really hard. Soccer works, but that’s about it. Most of them don’t even bother saying goodbye when they have to leave. They just get up and walk away. Maybe they don’t like Romanians but are too well-mannered to say it. That’s just been my opinion about them so far. It’s much easier to make friends in Romania than in England, and I do consider myself somewhat of a social person. But most people I meet are descendents of either immigrants from the past decades or immigrants themselves. Most immigrants are really nice. Especially the Polish. (I really like Poland, but that’s a different subject).

The women are as bad as the media makes them out to be. Skanks everywhere, drunk out of their minds, humping and throwing up in public places, most of them unable to even fit inside a cab. I can confirm most of what this site posts: http://embarrassingnightclubphotos.com ,but yet, Eastern Europeans are the “savages”.  Not all of them are like that, most are quite respectable, but walking down a busy street on a Friday or Saturday night really makes you wanna go home as soon as possible. I really don’t understand why girls, most under 20, and good deal of those over 35 would really throw away every ounce of self-respect for some “fun” (being sick and passed out on the sidewalk doesn’t seem fun) when most guys are so drunk, they don’t even care or notice.

I’ve been asked quite a lot if I would like to return to Romania or stay in Britain. My initial impression was already posted on this blog, but after 2 months, my answer turned into an immediate “I’ll take Romania over the UK any day. I only came here because you pay more”. The faces they make when you tell them that are priceless. “Why would anyone want to live in Romania?”. Trying to explain how we are actually more friendly, or that we have a nicer landscape or even that we have a lower apparent crime rate in urban areas (Bucharest is one of the safest European capitals. And no, it’s not because all of our criminals moved to the U.K.) results in some awkward silence and a quick change of topic so I usually just reply with “English culture is almost appalling”.

What’s actually bad about Romania besides the salary rates? Well, beggars, right? England has a lot more per ft². Every underpass, bridge, park, etc. has a beggar, usually a national (as in, proper British), asking for change. Although I don’t like beggars, period, and blame the government for poor social aid, I do at least appreciate that they still say “Bless you!” even though you didn’t give them anything. Most of them are young, under 40, playing guitar for money, and drinking it away at night with a nice 2.5L bottle of cider. What else? The so called “cocalari” then? The English version are far far worse. Moved in from Pakistan / Iran / whatever, really bad english skills, convertible BMWs, driving in front of clubs so that everyone can see their cool shades (i.e. sunglasses) at night, with the sound system screaming for mercy, both due to the volume level and the “music” it has to play.

Cocalari and beggars are more annoying in England, but let’s just call it a draw for the sake of argument. Petty theft … You can’t leave a bike in front of a shop in Romania, ’cause someone will probably nick it. Guess what? Same thing happens here. If something can be removed from somewhere, it will be. People steal, people destroy public property, people start beating up other people on the street for no good reason at all. Guess that’s just human nature, so stop calling Eastern European countries as dangerous thieving dwellings of all things evil.

The only good things about the United Kingdom, that I really like, are:

1)  the heritage: all that history does show, and most cities are impressive if you are a history buff.
2)  public services:  things get repaired over night, buildings are protected, cars are lifted if they are parked illegally, etc.
3)  the career opportunities: If a company exists, it surely has an office in England.

Now, the first point isn’t that important for me, because Romania is also impressive from a historic standpoint. I’d take Brasov over Bristol or Cluj over Birmingham any day.

The second point clearly FAILS if you know how to push it over the edge. Those gypsies should be removed from the park by the police. Not because they are gypsies but because it is ILLEGAL. They are littering, drinking, pissing and shitting in public places, harassing the locals and so on. I don’t care if you are from Romania, England, ‘Murica, Germany; if you do stuff like that, you should be arrested and fined a good deal.

(Geo’s theory: they are allowed to stay there, in a posh area of London, so that the media can complain more, and some political parties have solid arguments for various immigration policies they want to push)

The last point is the only thing that will make me return here next year. Geo has a great job, and programmers are in great demand and very well payed (if you have a work permit, that is). But as soon as we have some money saved up, we’ll probably start searching for a more decent country until we can afford to move back in Ro. Austria, maybe? :-”


Thank you and sorry for the rant,
Ionut.

Squeaky clean – almost

[important]TL;DR: Rendering refactored for OGL3.x clean context. Lots of bugs. Takes time. New Revision soon.[/important]

The new revision is getting harder and harder to commit the more I try to clean the code. What cleaning am I talking about? The first part of getting a clean OpenGL 3.x context to work, that cleaning.

So, where to start?

First of all, no more matrix-related stuff. I included glm.hpp, made 3 std::stack<glm::mat4> for model, view and projection, added a caching system for MV,MVP,VP and normal matrices and a matrix upload system for shaders that will be ported to UBOs in the following commits (the code is in place, but isn’t tested enough, so I’m using regular uniforms for now)

[code lang=”cpp”]
///Getting the normal matrix for the current model
void _queryMatrix(const EXTENDED_MATRIX& mode, glm::mat3& mat){
assert(mode == NORMAL_MATRIX /*|| mode == … */);
_clean();
// Normal Matrix
mat = _isUniformScaled ? glm::mat3(_MVCachedMatrix) :
glm::inverseTranspose(glm::mat3(_MVCachedMatrix));
}
[/code]

Next, I needed a clean way of representing geometry and the relationship it has with a certain program,
thus, every batch is contained within a VAO and generated only if a valid shader program was specified. If the specified shader program is not bound or for some other reason, is not valid, the draw command will silently return (well, not in debug).

The new shader + vao + new matrix system led to the implementation of a RenderInstance class that holds an Object3D, it’s transform, a flag for calling the onDraw() method and a flag for 2D rendering. The Object3D contains the geometry and material, the transform holds the model to world matrix that will become active on shader use, the preDraw is for geometry refreshing (changing vertex data or using custom shaders as opposed to the the material ones) and so on and the 2D flag will set an ortho projection for the current instance only. More features will be added as needed for this.

Rendering is thus simplified to this:

[code lang=”cpp”]

void WaterPlane::render(SceneGraphNode* const sgn){
GFX_DEVICE.renderInstance(_plane->renderInstance());
}

void Object3D::render(SceneGraphNode* const sgn){
if(!GFX_DEVICE.excludeFromStateChange(SceneNode::getType())){
_renderInstance->transform(sgn->getTransform());
}
GFX_DEVICE.renderInstance(_renderInstance);
}

[/code]

No more manual binding of VBOs or specifying ARRAY_BUFFER bindings by hand or rendering with a different shader than the one the VAO was created with (unless needed and attributes match – e.g. depthPass*.glsl and lighting*.glsl are interchangeable as far as the object is concerned). This also led to avoiding the rebind of the same VAO and shader programs.

Another cool feature was the usage of GLEW_MX and GLFW3 to allow the creation of a separate GL context in a background thread used for both texture loading and uploading to GPU and shader compiling (shaders are still read from file in the main thread to make use of GLSW’s nice caching features for already opened files). Reading small files isn’t a problem for shaders, but linking will no longer cause small lockups in rendering. All loading requests are serialized in a FIFO queue in the loader thread and glFlush is called after each load command is executed (load commands are the entire loading methods, not line by line commands.) The ResourceDecriptor was modified to allow bypassing this mechanism and loading elements in the main thread if needed:

[code lang=”cpp”]

///The threadedLoad() method generates the texture, reads data from file, creates mipmaps, sets params etc
bool glTexture::generateHWResource(const std::string& name) {
GFX_DEVICE.loadInContext(_threadedLoading ? GFX_LOADING_CONTEXT : GFX_RENDERING_CONTEXT,
DELEGATE_BIND(&glTexture::threadedLoad, this, name));
return true;
}

///_loadQueue is a boost::lockfree::spsc_queue
void GL_API::loadInContextInternal(){
glfwMakeContextCurrent(Divide::GL::_loaderWindow);
#ifdef GLEW_MX
Divide::GL::initGlew();
#endif
while(!_closeLoadingThread){
if(_loadQueue.empty()){
boost::this_thread::sleep(boost::posix_time::milliseconds(5));//<Avoid burning the CPU – Ionut
continue;
}
boost::function0<GLvoid> callback;
while(_loadQueue.pop(callback)){
callback();
glFlush();
}
}
glfwMakeContextCurrent(NULL);
}
[/code]

CEGUI was updated to 0.8.2 and FTGL was modified to allow a clean OGL3.x context.
CEGUI,FTGL and GLIM were modified to allow the usage of GLEW_MX, and FTGL was modified to allow configurable vertex position attribute location.

Another big change is the drop of Visual Studio 2008 support to improve productivity. Along with this, Divide-Sever and Divide-Networking projects were deleted from SVN and moved inside Divide Framework. Also, all of the ReCast files are moved to a separate project. The new layout is as follows:

Click for full size

New solution layout

May Update and Current Development path

After pushing a few revisions to the trunk since I got to the UK, I really started working on my dissertation project. But one thing led to another and now, updating the SVN will be postponed for a few more days. Revision 149 also presented a small bug that causes performance to slow down to a crawl after a while. The fix is simple. Cut the double bind check as it was horrid and I was exhausted when I wrote it. I’ll add a better version later.

Change some things in FrameBufferObject.cpp (Hardware/Video/Buffers/FrameBufferObject)

[code lang=”cpp”]

void FrameBufferObject::Bind(U8 unit, U8 texture){

……

}

[/code]

to

[code lang=”cpp”]
void FrameBufferObject::Bind(U8 unit, U8 texture){
return;
}

[/code]

and

[code lang=”cpp”]
void FrameBufferObject::Unbind(U8 unit) {
……
_fixedPipeline = false;
}
[/code]

to

[code lang=”cpp”]
void FrameBufferObject::Unbind(U8 unit) {
_fixedPipeline = false;
}
[/code]

Another issue is with terrain rendering. To get 10x better performance, just change the “chunkSize” in TerrainLoader.cpp (Environment/Terrain) when building the Quadtree. 256 will give 40+FPS in Debug if the baseline was 4-5 (like my laptop).

[code lang=”cpp”]
U32 chunkSize = 256;//&lt;Was 16. 128 is also ok. This will be edited in XML descriptors
_terrainQuadtree->setParentShaderProgram(…);
_terrainQuadtree->Build(….);
[/code]

Also, experimental code that would allow VAO’s to send less data to the GPU during depth rendering (shadows, ssao, dof, etc) is added but will probably be disabled in the next revision.

The dissertation part includes the complete integration of the ReCast library and PhysX for each scene. Both are complete, but data passing between SceneGraph <-> ReCast and SceneGraph <-> PhysX isn’t yet complete.

Another big point in the next update will be the proper usage of a ThreadPool and the change made to the Event class (now called Task) that allows better and safer multithreading.

TL;DR: Big updates, testing takes time.

Load more