Got my new case and everything has been screwed together. Got my laptop in the bedroom, my sound system working and the Xbox near for some quick breaks.
So, 2 weeks and counting in the United Kingdom. They still don’t suspect a thing >:)
– The people are very friendly. Creepishly friendly.
– London is bloody awesome!
– Bristol is a lovely town to live in.
– Programmers are in high demand in this country. That’s good.
– The weather.
– The weather.
– The work permit thingy is killing me. “Impressive CV, I’m sure you’ll do great from January 2014”. That’s bad.
– Everything’s so damn expensive.
All in all, if I can land a job around here, I’ll be one happy romanian :))
Just got a confirmation on my thesis, the one I missed in 2012. It’s still valid for 2013.
Christmas + New Year are now officially over for both sides of my family so it’s time for me to get off my l**y a** and get back to coding. New Year’s resolution for Divide?
- Finish up the lighting/shadowing code (at least up to a usable level).
- Optimise the Hell out of it so the framerate gets up by a factor of … 10? (random number. Main scene should, at the very least, reach double digit values for the framerate).
- Fix the damn thing so that it actually displays something on my laptop’s dedicated GPU (GT525M).
- Merge light branch with main branch after the previous 3 points are finished.
- Add a particle system with a few effects (smoke and fire, mainly for explosions).
- Fix PostFX code: DoF, HDR, SSAO, FXAA (didn’t need ’em so haven’t touched ’em in over 6 months).
- Improve water (add waves, ripples, rain drops and puddle support on various surfaces. This is just my O.C.D. acting up) . Found a nice article on this over >>here [/^]<<
As soon as I finish these points up, time to see if I can pull off a double whammy: finish up my dissertation project and release a free and simple game / tech demo to see how the framework handles in the real world
-As I do not have a complete renderer (forward or deferred), I do not see the point of implementing both. Surely, a deferred renderer, be it only for light pre-pass would suffice, no? Have to keep reading …
-ATI/AMD: You have some deprecated functions in your shaders, but no problem, I’ll fix ’em for ya’.
-Intel: Cool shaders bro’. Look at me rendering stuff.
-nVidia: WARNING!ERROR!ERROR! you’re using a function that we don’t actually like anymore; here’s a black screen ~X(
-ATI/AMD: OpenGL 3.x? OK. Here’s some special API calls as a gift as well.
-Intel: OpenGL 3.2? What’s that? Dude … I don’t understand. \\fine, use 3.1\\ . Now this I understand. Here’s the scene rendered without a glitch.
-nVidia: OpenGL 3.1? What are you? A #$%# pussy? I won’t even bother creating a window for you. \\fine. use 3.2\\. Now that’s more like it! Here’s your black screen :/
-AMD Athlon II: SSE2/3? Nice. Let me multiply those matrices for you.
-Intel i5: SSE2/3? Nice. Let me multiply those matrices for you.
*both had different results with SSE on and same results with it off*
The joys of hardware abstraction.
Due to my recent Beta invite to Planetside 2, I’ve been awestruck by the effect instant radiosity can have on night scenes. This led me thinking to the possibility of implementing a similar effect in my own rendering pipeline when all the settings are cranked up to high. To achieve this, I’ll try and implement 2 versions of instant radiosity as (recommended) options:
- No GI at all: This option will only load, if needed, general lightmaps for simple, static scenery and a static global light source (static sun). Fast, simple, ugly.
- LowFi version: CPU-based, limited number of bounces, should work on any hardware with a decent CPU.
- HiFi version: OpenCL accelerated texture-based radiosity. Why? Because any decent GPU now has “Compute” capabilities
Radiosity should work with both the forward and the deferred renderer and with SSAO on or off.
[important]Today’s hardware is at a point that allows me to do a major revamp of the graphics library; drop OpenGL 2.0 support and DirectX9.0c planned implementation. [/important] Why? Because OpenGL 3.0 / DX 10 is available on virtually any video card in use today, and if it isn’t then that specific PC will have a lot more bottlenecks than just the GPU specs. I’ve already stated this, but a dual-core CPU is a minimum requirement to use the framework (due to it’s heavily multithreaded nature). In the same manner, Pixel Shader 3.0 (for the MS fans out there 😉 ) will be a min. req. as well. This decision was easy, as the last few commits already contain code that could load geometry and tessellation shaders.
OpenCL is my choice over CUDA due to it’s portability and easier interoperability with OpenGL. As this will become an integral part of the engine, I will also use it to implement AI Crow Dynamics (as I need this for my dissertation thesis).
[important] Audio and Physics wrappers will shrink to only 2 libraries for now (SDL and OpenAL with PhysX and Bullet respectively) as I can’t possibly implement all of them on my own but I need at least 2 libraries for each to ensure that the wrapper classes allow for further libraries to plug in.[/important]
The Hardware requirements and graphic/audio/physics API changes will be the first to be committed in the next revision followed by adding OpenCL to the next one. The fast version of radiosity will then be implemented and the code will be optimized as much as possible before the HiFi version is added to the codebase.
This will be “fun”.
I apologize for the lack of updates lately, but due to some personal issues (house reconstruction) my development PC’s are packed in boxes until ~10 September. Development should continue normally after that.
P.S. On the plus side: +1 in carpentering, +2 in bricklaying , +2 in electrical wiring and +1 in roofing. Almost a level-up ^^
Did someone say animations were easy? Even with the very useful and well written animation loader class from Scott at No Limits Designs (i.e. this), some things still don’t add up …
First, his class is for D3D and that implies a lot of transposes around the code. Sorted …
Secondly, he uses his own custom mat4 class and I use my templated mat4<F32> for transforms. Aligning it with aiMatrix4x4 turned out to be a simple memcpy instead of element by element copy. That simple memcpy turned this:
…. into this:
And now … on to sorting bones out …
Later edit: Hallelujah \:D/
The previous transformations were corrected fast enough, but the proper solution came after upgrading the VBO class to OpenGL 3.x standards (glVertexAttribPointers). Bone indices got lost in the process 😛
The only problems that remain for now:
-Those damn Bounding Boxes that don’t like moving very much
-Optimize, optimise, optimize, optimise
The link to the code is in the video’s description on youtube.
A small update to this [ Multi-Agent Framework Test 1 ]
-New materials, shaders, shadows, collisions and so forth.
Andsome deferred lighting. 30 random lights.
Although all coding efforts are towards the forward renderer, the deferred renderer has not been left behind and was updated with the new RenderStateBlock system and the new shader structure.
P.S.: The quality of the video sucks, but FRAPS is freakin’ out and I had to use SnagIT 8-|