Deano Calver
Newcomer
I'm halfway through writing a vertex shader system on Xbox, one of the things thats often lost about Xbox is how unlike a PC it can be. Using the Xbox at a lower level allows multiple vertex shader to be held resident and also gives you exact control over the vertex stream, makes the cost of changing vertex shader much cheaper.
Sure you can use an almost identical API to DirectX 8 but if you want to get good performance out of it, you have to go to a lower level. I'm using the so called 'Direct' functions (there is actually an even lower level), its really quite nice to actually know that you not going through some complex driver mapping but are driving the hardware relatively directly.
With Xbox its largely a question of approach, do you treat it just as another PC video card or do you treat it in a similar fashion to PS2. While the first is cheaper and makes mult-platform titles easier, the later allows so much more power. Things that are impossible or at least quite slow on PC becomes almost trivial on Xbox, due to you knowing EXACTLY what the hardware is doing. E.g. You can fiddle with the stencil buffer via standard rendering commands on Xbox (you simple pretend the depth stencil buffer is an ARGB render target, do the renderng and then put it back, this makes things like blurring the stencil buffer trivial, yet try and do a similar thing on a PC) or change a vertex buffer almost as soon as the GPU has finished with that part.
One problem of working on cross-platform code is never really able to work to a platform's strong points. I've never had the luxery of working on bug budget single platform title, I've always imagined it would be really nice. While you can optimise and have custom effects multi-platform, they never seem to have the same kind of quality as a made for single platform game (rather than a game thats multi-platform via porting when finished).
Sure you can use an almost identical API to DirectX 8 but if you want to get good performance out of it, you have to go to a lower level. I'm using the so called 'Direct' functions (there is actually an even lower level), its really quite nice to actually know that you not going through some complex driver mapping but are driving the hardware relatively directly.
With Xbox its largely a question of approach, do you treat it just as another PC video card or do you treat it in a similar fashion to PS2. While the first is cheaper and makes mult-platform titles easier, the later allows so much more power. Things that are impossible or at least quite slow on PC becomes almost trivial on Xbox, due to you knowing EXACTLY what the hardware is doing. E.g. You can fiddle with the stencil buffer via standard rendering commands on Xbox (you simple pretend the depth stencil buffer is an ARGB render target, do the renderng and then put it back, this makes things like blurring the stencil buffer trivial, yet try and do a similar thing on a PC) or change a vertex buffer almost as soon as the GPU has finished with that part.
One problem of working on cross-platform code is never really able to work to a platform's strong points. I've never had the luxery of working on bug budget single platform title, I've always imagined it would be really nice. While you can optimise and have custom effects multi-platform, they never seem to have the same kind of quality as a made for single platform game (rather than a game thats multi-platform via porting when finished).