Truevision3D Official Information => Development Information => Topic started by: SylvainTV on April 25, 2010, 07:36:24 AM

Title: Development Diary April 25th 2010
Post by: SylvainTV on April 25, 2010, 07:36:24 AM
Hello, just a small developement diary to show we're not dead!

I've been working on several things recently and it might be interesting for you :)

- Rendersurface rewrite : until now, I was relying on the ID3DXRenderToSurface interface to handle everything for rendersurface. Now that I wanted to share the main depthbuffer with the RS one, I couldn't do that... So I did it, I deleted every occurence of ID3DXRenderToSurface and I'm handling the thing totally myself.

- Special Depth buffer on Rendersurface : now that the RS setup is done manually we can do cool things like : share depth buffers between RS or even use the main buffer one ! (see RS.SetDepthBufferMode). Additionally, as now everything is requiring Depthtexture and shadowmap textures, Rendersurfaces support that too (even in DX9) ! You can create a RS with a DepthTexture or Shadowmap used as Depthbuffer for that texture. No need to render depth yourself in another channel or using MRT, you get access to the depthbuffer data.

Warning : this feature does not work on old cards. Needs a Geforce 6 or ATI Radeon 9800 at least to get access to Zbuffer data. You can get also the classic Hardware PCF (Percentage Close Filtering) for shadowmaps using a special DepthBuffer Mode.
Internally it uses very weird hacks specific to Nvidia and ATI, but it works !

- Mini compression on Package : we are often asked why the package does not support compression? Well mainly because most of the media don't need it because they are already compressed ( jpg, png, mp3 etc..). But some other stuff could benefit from it. So I added LZO compression which is very fast to uncompress and has a quite ok ratio (not as good as zip/rar obviously but can divide by 2 or 3 sometimes). It's totally transparent, and will be enabled by default on packages. Works also with encryption :)

- LOD fix : there were some weird cases with Landscape LOD where some cracks appeared... the Main problem is that the LOD difference between adjacent chunks can't be more than 1. The algorithm was supposed to check for that but it didn't. Now i added additional checks and it never fails !

- Last but not least : ported the Wrapper generator for .NET 3.5! It means that we can now create a MTV3D65 .NET 3.5 dll (instead of the 1.1 current one). As the engine is compiled in Visual Studio 2008, you get additional optimization benefits
During that port, I could also find things that never worked in the original .NET dll (remember that function that returned assembly from a shader? )

Also some preliminary research for TV7.0 :)

Title: Re: Development Diary April 25th 2010
Post by: SylvainTV on April 25, 2010, 01:27:59 PM
I finally finished also Tangent/Binormal computation for terrains.
It is not specifically used by the engine, but is very useful if you use custom terrain shaders that needs bumpmapping !