Recommended Posts

My Hercules Prophet GF2-MX reports the following under DirectX8.1 (HAL)
MaxTextureBlendStages : 8
MaxSimultaneousTextures : 2
MaxStreams : 0
What exactly do these mean? I''m most worried that apparently I can''t use any streams, but since I''ve writen something that uses the first stream this is obviously wrong. What about the other two - do they mean I can do 8 blend ops and 2 texture ops in a single pass, or is that the most it could do with enough streams? Like if I had4 available streams, I could still only multitexture with 2 textures in a single pass?
Additionally, what types of things require more than one stream as opposed to running slower without?

0

Share this post

Link to post

Share on other sites

MAxStreams i am pretty sure refers to the number of hardware TnL streams supported at once. geforce2 dont got hardware TnL, therefore 0 are supported. in other words, you can use as many streams as you want, but everything will be done in software.

the only things that need more then one stream are things like weighted vertex blending using multiple matrices applied to the vertices. streams have nothing to do with textures, they merely deal with vertex stuff.

MaxTextureBlendStages refers to the maxium number of blend ops you can do simultanously. you are restricted to using only 2 different textures though. basically you can have tex1, tex2.

Share this post

Link to post

Share on other sites

While it supports 8 stages, that doesn''t mean it supports a wide variety of those combinations. In fact if I remember there are very few combinations with more than 3 stages that will work. You have to use ValidateDevice to test your set ups.

The GeForce2 definitely supports HW TnL, GeForce was the first commercial card to do so. I don''t recall, but I think MaxStreams is Vertex Shader related, but I may be wrong about that.

Also, most cards are limited in the number of times they can read from the same texture, so I don''t think reading from each 4 times would work.

Share this post

Link to post

Share on other sites

seems, i was slightly mistaken. MaxStreams refers to the maxium number of streams usable and a value of 0 indicates the driver being used is not a dx8.0 or higher driver. guess someone should have checked the sdk docs a bit better.

update your driver.

i fixed my previous post to avoide confusion.

0

Share this post

Link to post

Share on other sites

I downloaded latest drivers for my card, now get the following values:MaxTextureBlendStages : 8MaxSimultaneousTextures : 2MaxStreams : 16

That''s obviously better, but still confused. To give an example, I want to do 2-texture multi-texturing (normal opaque ground texture and some transparent overlay texture), and use dot3 bumpmapping. How many of each thing does this require, and is there any reason why this could not be done in multiple passes on a single-texture/stream card?

0

Share this post

Link to post

Share on other sites

the MaxTextureStages indicates how many slots you can select textures for... if it''s 8, you can use 0 to 7 (all of them). if it were 4 then you could use 0 to 3 (but get an error if you SetTexture''d 4,5,6,7)...

follow?

Simultaneous Textures indicates how many per-pass will be used, or at least from my experience this is how it has worked.

you''re card supports 2, therefore you can only render geometry with 2 texture stages blending properly, if you wanted to do 3,4,5,6 passes you''d have to render the geometry 2-4x to get the same effect...

for example, you have 4 stages configured, but can only do 2 at a time... you need to do 2 passes. first pass you disable stages 2 & 3, then render. second pass you enable 2 & 3, but disable 0 & 1...

Share this post

Link to post

Share on other sites

well you could render your bump mapping and opaque texture. then rerender the landscape with only the translucent texture (turn of zwrites). you could do the opaque and translucent texture rendering together, then draw the dot3 seperatly (since it require a bumpmap only since you really dont need the texture for the calculations. or you could draw the opqaue texture, then draw the translcent texture with the bump map. it depends on whether you want the translucent texture, the opqaue texture, or both to be affected by the bumpmap.

remeber the bumpmap is just a lightmap when drawn to the screen.

do a search online for rendering dot3 bump mapping using multiple passes. most of the time you just render the scene multiple times changing the blending ops (ie use multiplicive or additve blending, etc). it can get expensive though. i think the d3d sdk ahs an example of this, as well as nvidias web site. ALL effects that are achieved via single pass suing multitexturing can be mimiced using multi pass rendering. though it requires more work and you have to becareful of the order you render things.