Originally posted by f0dder
Yeah, bruce pointed me to that page earlier today. Dunno what to think of it, really. With default settings, it was playable - some slowdown noticeable when there's a lot of bots on screen, but still playable. And somewhat ugly-looking. Turning off 2x pixelsize and setting texture to 32bit is still playable, and looks better - still not all that great, though. Setting terrain detail to non-low and things start looking okay, but the game is unplayable. P4 2.53ghz.
Yeah, bruce pointed me to that page earlier today. Dunno what to think of it, really. With default settings, it was playable - some slowdown noticeable when there's a lot of bots on screen, but still playable. And somewhat ugly-looking. Turning off 2x pixelsize and setting texture to 32bit is still playable, and looks better - still not all that great, though. Setting terrain detail to non-low and things start looking okay, but the game is unplayable. P4 2.53ghz.
'Playable' is all it's about. I can still play and enjoy games at 640x480 resolution or less. Of course, if I have the hardware available to play it at 1024x768 or higher, then I would choose that. But the software renderer just provides an alternative when there is no other option (other than not playing at all).
Abrash seems to be reasonable at optimizing :), so I guess it's the pixomatic architecture that's not all that great for good software rendering speed - or the way ut2k3 uses it. Fair enough, really, since the game was designed to be hw-only.
That's completely my opinion as well. As long as you don't expect miracles from it, I think it's pretty impressive. It has some bugs but it's really just a demo. Looking forward to Unreal Tourament 2004...
I'm not that much into 3D, but I guess you could get better speed by designing an engine for software from the start? Tradeoffs and everything. I like the idea that you're trying to make SoftWire+swShader very generic and extendable, but it still doesn't seem like a realistic option for running games - at least not on an engine that's designed for hardware rendering. I get ~19fps average on my P4, not exactly game rates, especially with the ocassional drop below :)
I'm just one person. I can't write a renderer and an engine and a game at the same time and make them all optimal. But you're very right, a renderer & engine completely designed for the restrictions of software would perform noticably better. I am currently integrating swShader technology into the Alias25 Game Studio, but it's also an engine primarily targetted at hardware rendering. So, if you can find someone who's interested in software-only rendering, please let me know! In the meantime, there are not much other options than to adapt to existing hardware-oriented APIs and trying to do the best I can...
The new exe looks better - if perhaps a bit too dark. But certainly an improvement. There's still a few weird things though - like the lava being fullbright, and the "models" looking fullbright too (various skulls, the corpse in the "foggy cellar" (which also looks peculiar), the statues in the "bridge area". Normal corridors and such look sorta like hardware quality though.
The lava and models appear fullbright because there's no lightmap on them as far as I remember. Maybe it's in the file format somewhere how to render them correctly, but it's not a priority to me, sorry. By the way the demo is about a year old and swShader was started from scratch after that so I'm not completely familiar with it all any more. And a great part of it I learned from GameTutorials.com but they have more bugs than I have. ;)
But if you can beat refrast by a couple of magnitudes, then it does seem like more than a cute gimmick :)
Early experiments show it's at least 100 times faster. While the reference rastizer executes a simple shaded teapot in 160x120 at hardly a few FPS while I render at 640x480 at interactive framerates. Seems pretty useful to me for people who wish to experiment with ps 3.0 shaders while there is no hardware available for it yet. I have to hurry though...
Btw, what about the volume fog stuff that q3 has? And the skybox stuff?
Well, show me where I can find the volume fog data and how to interpret it and I might give it a try. Same for the skybox. It's the same as you seen in my demo but with other texture coordinates so that it looks like a moving sky, and another layer of clouds. But if I succeeded at writing my own Direct3D dll, then all of the engine and game specific stuff would be no problem to show...
Originally posted by Bruce-li
Well, as I say, if you go from 0.001 fps to 0.01 fps, what does it really matter? "I have a faster slideshow-generator than you do!"?
You'll never be able to render something like Doom3/HalfLife 2 in realtime with it.
You'd get a lot further if you'd write a realtime raytracer for it :)
Well, as I say, if you go from 0.001 fps to 0.01 fps, what does it really matter? "I have a faster slideshow-generator than you do!"?
You'll never be able to render something like Doom3/HalfLife 2 in realtime with it.
You'd get a lot further if you'd write a realtime raytracer for it :)
A faster slideshow generator is often what is needed for less real-time critical applications. Ray-tracing is already done very efficiently I think but for example the preview window of a CAD program could use a software rasterizer when no other option is available. I believe 3D Studio MAX 5.1 still includes a software renderer for that reason but it's quite slow and low-quality.
And I never aimed at real-time Doom 3 / Half-life 2 performance, I was thinking closer to Quake 3 and Half-life 1. You have to keep realistic. The DirectX shader stuff is for the less real-time critical applications and maybe for future CPU generations. Even Tim Sweeney thinks there's a future again for software renderers in a couple of years...
The lava and models appear fullbright because there's no lightmap on them as far as I remember. Maybe it's in the file format somewhere how to render them correctly, but it's not a priority to me, sorry. By the way the demo is about a year old and swShader was started from scratch after that so I'm not completely familiar with it all any more. And a great part of it I learned from GameTutorials.com but they have more bugs than I have. ;)
Well, I don't have any idea, sorry :) - but they definitely look wrong. What about recompiling the demo with the latest stuff anyway? You surely must have achieved speedups since then?
Seems pretty useful to me for people who wish to experiment with ps 3.0 shaders while there is no hardware available for it yet. I have to hurry though...
Exactly.
But if I succeeded at writing my own Direct3D dll, then all of the engine and game specific stuff would be no problem to show...
Direct3D DLL sounds like a lot of fun ;), but would it help in the case of q3? Iirc it uses OpenGL?
Btw, Bruce/Scali was banned from the board again. Too bad he kept reacting to hutches trolling (and got upset by you too, sigh) instead of just concentrating on where he can help.
Originally posted by f0dder
Well, I don't have any idea, sorry :) - but they definitely look wrong. What about recompiling the demo with the latest stuff anyway? You surely must have achieved speedups since then?
Well, I don't have any idea, sorry :) - but they definitely look wrong. What about recompiling the demo with the latest stuff anyway? You surely must have achieved speedups since then?
I'm sorry, but the demo is about a year old, and some of the code is much older. The project got into an impasse though, because I wanted many more features comparable to a hardware API to get things to look right. But back then I still worked with a file as input to SoftWire, which was more flexible than anything else but still a little cumbersome to use because of the lack of easy conditional compilation (every dependent parameter had to be passed individually), and no abstraction of registers (i.e. automatic register allocation). Then I wrote and article for the ShaderX2 book and in four months time I implemented run-time intrinsics (ease of conditional compilation) and automatic register allocation (no worries any more what to store in which register) which opened the door to completely compile ps 2.0 shaders for x86. I decided my previous renderer was becoming inferiour and refactoring for the new SoftWire features would have been hard. Besides, the reason why it takes two seconds to close it... is because of a bug in my window message handling loop which I never really located. :sweat: So I started off with a clean project, copying only the parts that really worked flawlessly over to swShader. Then I got contacted by Alias25 who wanted a software renderer for their engine. So I had a complete list of features to implement which were very similar to DirectX. Now not only the ps 2.0 pipeline is soft-wired but there's a fixed-function pixel pipeline, fixed-function vertex pipeline, vs 2.0 pipeline, rasterizer and clipper fully written in run-time intrinsics as well.
So... now you're asking me to recompile the demo using "the latest stuff"? Maybe after my january exams I could write a demo with Quake 3 maps again, but really not now.
Exactly.
So what do you want first, an improved Quake 3 demo or ps/vs 3.0? ;)
Direct3D DLL sounds like a lot of fun ;), but would it help in the case of q3? Iirc it uses OpenGL?
Oh, did I forget to mention my last demo? It's a Quake 3 model renderer that I didn't write myself. :grin: What I mean is I took the MD3 Animation tutorial code from www.GameTutorials.com and without changing anything significant I linked it to an OpenGL wrapper of swShader (just the few calls that were required) instead of linking it to opengl32.dll. You can download it here: swShader.zip (24.5 MB). Sorry for the size but it's the most impressive model I could find. Make sure to read the textfiles.
Anyway, back to your question. DirectX is indeed of little use to Quake 3. But it's not like I'm such a gigantic fan of this game, it's just that I was able to find map rendering information about it. With a DirectX dll though, I might be able to run many more games. That would save me from all the engine and game programming so I can focus on just the rendering, which I like most.
Btw, Bruce/Scali was banned from the board again. Too bad he kept reacting to hutches trolling (and got upset by you too, sigh) instead of just concentrating on where he can help.
He answered to me by e-mail. He seems a tiny bit more reasonable now, starting to realize he's not helping me as much as he first thought when he focusses on subjects that I didn't even consider a significant problem. I hope the discussion can finally start to result in some nice ideas. He's really smart and seems to want to help but he does seem to have a skull of titanium when it comes to accepting other people's thoughts and thinking in black/white. Hey no hard feelings Scali. ;)