Jump to content

DirectX9 or Advanced features?


photo

DirectX 9 support  

43 members have voted

  1. 1. DirectX 9 or Advanced graphics features?

    • DirectX 9 support & Windows XP
      4
    • Global illumination, physically-based rendering, multi-layer terrain, etc
      39


Recommended Posts

To be honest, DX9 in Unigine is faster than other renderers... and modern engines (CryEngine/Unreal/GameBryo/etc) use some tricks to support above features even in DX9 mode.. BUT if DX9 support is a showstopper, I vote to move forward and drop it completelly if we'll be able to use OpenGL for XP compatibility.

Link to comment
  • 1 year later...
  • 2 weeks later...

New decal system can solve terrain detalization problem.

Based on our experiences large-scale terrains with just 4 base materials per surface will remain too limiting for realistic varying terrains. At least 16 or even better 32 different globally useable material would provide for sure a 'carefree' base texture set efficently usable for large-scale splat-map manual painting by artists or automatic creation by tools like WorldMachine. Decals are perfect for small-scale variaty, but for large-scale variaty this feels more like a inefficent (both workflow/performance) work-around for some missing base functionality.

Link to comment

i agree with what ulf says, i voted for Global illumination, physically-based rendering, multi-layer terrain, etc

 

because i don't see any profit from DX9, it's just blocking in my opinion.

If you really, and that shouldn't be the case, have to use windows xp, why not use OpenGL..

 

The 4 Terrain Mask Layers are a problem for us, example:

 

We have a steep terrain in the northern part of the world, where you have:

 

- deep sea

- near beach sea

- beach

- low area grass

- middle area grass

- highland grass

- boulders area

- rocky cliffs

- riverbed boulders

- snow 

 

currently i fake the look of things with the color blending from the diffuse,

which ends in mask layers for:

 

- rocks (deepsea, nearbeach sea, some slopes on the grass area, cliffs)

- grass (low, middle and highland, different green tones)

- snow

- boulders (boulder area, riverbed, some areas on slopes near grass)

 

Cheers

Link to comment

i agree with what ulf says, i voted for Global illumination, physically-based rendering, multi-layer terrain, etc

 

because i don't see any profit from DX9, it's just blocking in my opinion.

If you really, and that shouldn't be the case, have to use windows xp, why not use OpenGL..

 

The 4 Terrain Mask Layers are a problem for us, example:

 

We have a steep terrain in the northern part of the world, where you have:

 

- deep sea

- near beach sea

- beach

- low area grass

- middle area grass

- highland grass

- boulders area

- rocky cliffs

- riverbed boulders

- snow 

 

currently i fake the look of things with the color blending from the diffuse,

which ends in mask layers for:

 

- rocks (deepsea, nearbeach sea, some slopes on the grass area, cliffs)

- grass (low, middle and highland, different green tones)

- snow

- boulders (boulder area, riverbed, some areas on slopes near grass)

 

Cheers

 

Agree. We see no profit in DX9 too. And we have EXACTLY same problems with 4 texture limitation. In cases where you need transition from one clima to other + sea shore/river/lake, 4 textures are simply not enough. It leads to very time consuming workarounds with diffuse texture, which are not sufficient from close distance (I am comparing to 2013 games, nothing else makes sense). New decal system is great, but not usable for adding variety to hundreds of square kilometres.

Link to comment
  • 4 weeks later...

4 detail materials texture is more performance limitation than feature limitation.

I know how to increase the limit of terrain detail materials up to 16-32...
It will be the same limit with 4 detail textures but for the single mask pixel.
It will add additional problems with editing because the new index texture is required.
Moreover it index/mask texture editing will be absolutely non-intuitive on material borders.
And all splat textures must have same format/dimension because they will be packed into the single texture array.

This solution will have compatibility with D3D9/Mobile hardware with current limitations.

Can't tell when this feature will be implemented.

Link to comment

Hi Frustum, sounds like the return of the previous terrain texturing approach based on texture atlas. I assume key motivation might be to still ensure D3D9/mobile HW compatibility instead of limiting a new approach to DX10+ HW level only by using much more elegant texturex array features ?

 

If so, I don't really think that this would be a good idea due to the associated problems/limitations you have already mentioned e.g.

 

It will add additional problems with editing because the new index texture is required.
Moreover it index/mask texture editing will be absolutely non-intuitive on material borders.

Link to comment

It's not a hardware compatibility. Four detail textures per pixel is a huge number of calculations. Especially in triplanar mode. And this is not a previous approach. Weight and index textures are different with independent channels.

Link to comment

It's not a hardware compatibility. Four detail textures per pixel is a huge number of calculations. Especially in triplanar mode. And this is not a previous approach. Weight and index textures are different with independent channels.

 

What about using second splat map for additional 4 textures? It would require additional rendering pass, on the other side you can add additional splat only on chunks where needed....

 

On the other side throwing away DX9 could really make everything far easier...

Link to comment

I don't know if this makes sense, but I was always thinking about the following terrain texturing approach: you have a set (16, 32,) of material textures with individual diffuse/specular, normal and blend mask textures.

 

These material textures are organized as DX10+ texture arrays for indexing (might be possible to use texture atlas for DX9 with much more shader calcs, don't know, I was focussing on DX10+)

 

Keeping in mind that in most cases terrain texture blending between more than 2 splat textures looks unnatural anyway basic idea was to limit per-pixel blend texture count ALWAYS to 2 textures A+B only.

 

The splat mask texture simply encodes index of texture A and B in 2 color channels while the third color channel would specify blend weight of texture A. Blend weight of texture B implicitly caclulated in the fragement shader as (1.0 - weight A). The splat map therefore would be a single 8-bit-per-channel RGB-texture.       

 

The actual blending between material texture A and B should then be done in a more realistic way similar to this proposal or this approach guided by the blend mask of one of both textures A or B (which one I haven't thought about). The gray-scale material blend mask value in relation to the per-pixel terrain splat mask blend weight decides which parts of the material texture map are rendered/skiped (so some kind of dynamic alpha masking)

 

I might be wrong, but this should give very high flexibility and variablity for terrain texturing. Only limitation would be that at a single pixel no more than 2 textures could be - much more realisticly - blended, but in practice this shouldn't be a real problem.

 

Don't know if I am too over-optimistic on the result quality or if I am missing something critical here spoiling the whole idea ? Comments highly welcome.   

Link to comment
 Only limitation would be that at a single pixel no more than 2 textures could be - much more realisticly - blended, but in practice this shouldn't be a real problem.

 

 

I dont see any real issue with only 2 textures blending. Theoretically problematic situations like 3 textures touching in 1 point can be solved easily by putting over some rock, or mask it somehow....

Link to comment

I dont see any real issue with only 2 textures blending. Theoretically problematic situations like 3 textures touching in 1 point can be solved easily by putting over some rock, or mask it somehow....

Yep, agreed, key advantage of course would be reduced memory requirement (just 1 index/weight RGB texture compared to 2x RGB(A) textures for 4-textures-blend approach) and higher performance fragement shaders

 

Also proposed mask-guided material blending works best with only 2 materials

Link to comment

Just thought about it a little bit more: index and weight have to be stored in different textures as different sampling modes are required: indices point sampling, weight linear sampling for smooth weight interpolation.

Link to comment
  • 3 weeks later...

So what is the conclusion? Can we expect some DX11 implementation, or some DX9 workaround as mentioned before? 4 textures is really huge pain for FPS/3rd person kind of games, we are not able to have detail we need. Having at least 8 textures would allow us to increase visual quality significantly. Of course having possibility to have 16-32 would be really nice, for our 3rd party terrain generation tool is no problem to generate 32 layer splatmaps.

Link to comment

Instead of using masked textures, there's a new technique emerging in other engines called Sparse Virtual Texturing discussed in this video here...

http://www.youtube.com/watch?v=MejJL87yNgI and his notes are available here http://silverspaceship.com/src/svt/

 

From the early implementation I've seen in another engine there are some problems but it seems to deliver a lot of bang for your buck. You can read his notes here http://www.leadwerks.com/werkspace/blog/41/entry-1112-virtual-texture-terrain/

 

My only concern is how well the technique scales in large scenes.

Link to comment
  • 1 month later...
  • 3 months later...

Just my few cents:

 

-Last DX9 cards were released cca in 2005 (Geforce 7 line, ATI 95XX-99XX series), last version of DX9 in 2007.

-DX11 was introduced 2009.

-DX11 card which outperforms (cca 6x) anything made in 2005 costs less than $60, which is less than one better dinner with your girlfriend.

-Anyone who wants to play games have far better videocards, usually $150-200 range. For simulations you are go probably even higher.

-Anyone who has nowdays ancient DX9 only videocard + ancient HW (for whatever reasons) does not want play 3D computer games. At best some occasional web/flash trash. Not target group for 3D engine.

=>

It does not make any sense to support these people, because they are not interested in gaming/simulations and they will not buy (even steal) anything made on Unigine. Also for us as developers it does not make any sense to target on these people (no sales in this group).

And in case they change mind, they need better HW anyway, there is no point of running nice modern Unigine simulation/game on 5+ years old card. Same is situation with windows XP, anyway there is OGL. DX9 support is now real burden, there is no advantage of keeping it.

  • Like 1
Link to comment
  • 2 weeks later...
×
×
  • Create New...