Different implementations of truform in games

K.I.L.E.R

Retarded moron
Veteran
Okay, we all kow how Ati's Truform in all current games was made back when the R8500s were out it was fast. Does the R300 line of cards do anything significantly different that the code must be changed to get fast truform on the R300 line?
 
The 9700 / R300 does a lot of the Truform in software, not hardware. ATI is all but abandoning the technology simply because with new games, there's no need for it.
 
from the latest threads on rage3d foruns, "trueform" on the r300 has a bigger performance penalty that in the caso of r200. It still needs work in the drivers.

don't know about the code though..
 
With new games, there's plenty of need for higher-order surfaces.

I think that ATI just realized that Truform wasn't nearly flexible enough for most developers (the developer gets essentially no input as to how surfaces are modified by Truform).
 
Personally I'd go the more cynically minded (but probably accurate) route and say its buggered in the R300 hardware, so they chose to de-emphasise it.

Wonder if it will have better performance in R350 or not...
 
I was under the impression that ATi decided to do it via vertex shaders rather than hardware in R300.
 
Tagrineth said:
I was under the impression that ATi decided to do it via vertex shaders rather than hardware in R300.

Current vertex shaders cannot add new geometry (vertex) so I don't know what you mean.
 
Trueform was designed to smooth over crude, low-polygon models in real time in 3D games. It works pretty well in doing that, as far as I can see, although nothing can really turn a sou's ear into a silk purse. It sucks, however, when trying to Trueform high-polygon count models which don't need Trueform (just as you might think it should.) Hopefully with R400 ATI will drop it altogether--completely unnecessary now, IMO.
 
Truform always managed to look like crap with a few models, and managed to look just a little bit off for pretty much every model. This is simply due to the totally automatic nature of Truform. There really isn't much a developer can do to make a model look good with Truform, as it's made to be transparent to the developer.
 
All the developer has to do is make sure the normals are correct for their models. Its not supposed to be 'automatic'.
 
exactly, a well designed model will truform well but if you slop your normals then things can get ugly quick. truform is a great thing but it sucks on the r300 sence it cannot do it in hardware. suposably "trufrom2" is avalable in hardware on the r300 but i have yet to see it in use and am not interly clear on what the differences are. also, i hear rumors that the r350 has been fixed to alow for orignal truform in hardware as well; if that is true it is a very atractive feature of the new chip in my book.
 
RoOoBo said:
Tagrineth said:
I was under the impression that ATi decided to do it via vertex shaders rather than hardware in R300.

Current vertex shaders cannot add new geometry (vertex) so I don't know what you mean.

You don't need to add vertices to do Truform (curved PN patches).

With static LOD each triangle divides into a fixed number of triangles.
i.e. Level 1 : Each triangle has 3 vertices and 1 triangle and divides into 6 vertices and 4 triangles.

On the CPU (you only have to do it at init time) you create a vertex stream the consists of barycentrical (I can never spell that word) coordinates and a triangle number. Then for each model you want to patch divide you then upload the original triangle data (broken into parts that will fit) into vertex constant memory and run the vertex stream you made earlier. The vertex shader has code to do the actual patch displacement, so almost the entire algorithm runs in hardware (all the CPU has todo is reupload the constants every n triangles with n approximately 40 triangles for VS_2_0).

Tada! Hardware accelerated static patch division without special hardware (coming to a ShaderX2 soon, both TomF and I are doing stuff like this)
 
kyleb said:
exactly, a well designed model will truform well but if you slop your normals then things can get ugly quick. truform is a great thing but it sucks on the r300 sence it cannot do it in hardware. suposably "trufrom2" is avalable in hardware on the r300 but i have yet to see it in use and am not interly clear on what the differences are. also, i hear rumors that the r350 has been fixed to alow for orignal truform in hardware as well; if that is true it is a very atractive feature of the new chip in my book.

If there is a truform2 my guess would adaptive tesselation, IIRC there are some flags for it under Dx9. Note the comment in the Dx9 SDK help
"The MaxTessellationLevel is equal to a value set by IDirect3DDevice9::SetNPatchMode for N-patches" under adaptive tesselation, so somebody is considering adaptive NPatches and ATI would seem the likely candidate.

Adaptive tesselation can't be done via vertex shader and can be very cool.
 
A model with hard edges will always look bad with N-patches.
Think about a plain simple cylinder.


- The default model will have holes with N-patches.

- If you average the normals along the edge it will look like crap even without N-patches.

- If you add stitching zero size triangles to fill the holes they will be incorrecly lit and textured.


I'm glad that ATI is moving away from this tech - I hope this means that they will implement more useful forms of high order surfaces.
 
DeanoC said:
You don't need to add vertices to do Truform (curved PN patches).

With static LOD each triangle divides into a fixed number of triangles.
i.e. Level 1 : Each triangle has 3 vertices and 1 triangle and divides into 6 vertices and 4 triangles.

On the CPU (you only have to do it at init time) you create a vertex stream the consists of barycentrical (I can never spell that word) coordinates and a triangle number. Then for each model you want to patch divide you then upload the original triangle data (broken into parts that will fit) into vertex constant memory and run the vertex stream you made earlier. The vertex shader has code to do the actual patch displacement, so almost the entire algorithm runs in hardware (all the CPU has todo is reupload the constants every n triangles with n approximately 40 triangles for VS_2_0).

Tada! Hardware accelerated static patch division without special hardware (coming to a ShaderX2 soon, both TomF and I are doing stuff like this)

Wow! Sounds interesting.

It would be better to read the triangle (patch) data form a vertex stream using "SetStreamSourceFreq" with a divider of the number of subtriangles instead putting the data into constant registers.

Too bad it's only supported VS 3.0 :cry:

Edit: I just realised it's a VS3 feature.
 
I've seen in most cases TRUFORM improved models especially if it should be rounded, the performance hit can be pretty servere at times too.


TRUFORM ON
TrueformOn.jpg


TRUFORM OFF

TrueformOff.jpg



I think I blew her(it) up with the grenade on the second one :), anyways the Volcan ears virtually dissappears when using TRUFORM.
 
sure Hyp-X, hard edges and subdvidivisions are like oil and water; but belive truform is designed to aviod those things anyway. is it not?

and ya truform rocks in rtcw, and from what i hear there is little to no preformace hit on an 8500. its just the software truform on the r300 that has issues with preformace. though it is still very playable on my setup.
 
Yea, RTCW TRUFORM is very good, I was playing with it on and was very impressed except the nose dive in some scenes was getting the frame rate kinda low. Here is another shot I took of the bedroom scene.

TrueformOn2.jpg


Notice the nice smooth lines on her, hmmmm still volcan ears but this was taken with a relatively low tesselation value. Without TRUFORM she can look pretty ugly up close with some pretty hard angles :(.
 
Back
Top