Saturday 20 February 2010

Celebrate good times


I finally did it! I got stencil shadows working within a Direct3D 10 renderer. The problem in the end, as ever, was a very small one. The stencil and depth buffer needed the format DXGI_FORMAT_D24_UNORM_S8_UINT, I was previously using a float. So, with that done I can move on to getting sprites, pointsprites and text rendering.

Friday 19 February 2010

Debugging

It turns out the reason PIX didn't work with Direct3D 10 programs was that I was using a D3DDEVTYPE_NULLREF device. I binged this and found nothing, so I assume I am the first person in eh world to find out that PIX does not like these. Simply changing it to a HAL device worked fine. Now I can debug it in PIX, it looks like I regurgitated the index buffer somewhere, because that is messed up :/.
What I have done today successfully is generate adjacency data for my meshes. Adjacency indices are passed into the geometry shader, and normally this is done by DirectX with meshes. But as we know, meshes are being phased out in DX10?! Following a thread at GameDev it was quite simple, just a case of doubling the size of the index buffer and putting in the index for the adjacent triangle in between each other.

Thursday 18 February 2010

Mesh format

When Direct3D 10 was released way back in 2007, lots of people were surprised at the lack of a decent mesh class. Whilst there is one, it cannot load from file in the same way that Direct3D 9's could, and it is essentially more of container for the vertex and index buffers.
With this is mind, designing an engine that supports both Direct3D 9 and 10 is difficult. What I was doing was loading everything through DirectX 9, then converting in to 10 when that was running. The problem with this is that two Direct3D devices need to be running simultaneously, which not only hits the performance but also makes it very difficult to debug using PIX.
What I have been working on for pdEngine today is my own mesh format that can render to Direct3D 9 and 10 (and hopefully 11 when I buy a card that supports it), and can load from file. The file loading is not yet done, but it won't be .x, it will be my own format probably similar to .sdkmesh.

Wednesday 17 February 2010

New blog!

I felt a desperate urge to blog something today, so I made a new blog. The old one won't be back up again anytime soon, and I doubt I'll update it even if it does come back, now I've made this. What happened was that the web hosting expired, and I forgot to take a backup before it did, so I've lost everything on their unless it gets renewed soon.
I used blogger once before, ages ago, and it was recommended to me by a friend again recently, so I thought "why not".
For anyone interested, pdEngine is still beign worked on, and every now and then I will update the SourceForge SVN. The entire source is available at SourceForge: http://sourceforge.net/projects/pdengine/