Geometry/Triangle compression

Started by PHOENIX, 02 August 2003, 00:34:01

Previous topic - Next topic

PHOENIX

Hello,

Credits go to FalconFly for this great idea !

QuoteYep, too bad noone realized a working "G-Compression" yet (Geometry/Triangle compression).

Tesselation like N-Patches or Truform, done as a Driver hack to melt (reduce) adjacent Triangles during Triangle setup (before being sent to the Card to render), would be a blast  

Sort of a Geometry LOD Bias setting  

Link http://www.falconfly-central.de/cgi-bin/yabb/YaBB.pl?board=news;action=display;num=1046538631;start=15

Regards
 


Nightbird

______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

mei

I wrote ?? as I don't understand what Falconfly meant
 

FalconFly

#4
Hi :)

Re-reading what I wrote back then, I think it indeed needs a bit more explanation :

My Idea was :
--------------
Many new Games (if they run), cause quite low performance even on high-end 3dfx Cards (e.g. Voodoo4/5) paired with high-end CPU's, when the amount of Geometry used is becoming more and more extreme.
(since the Games are commonly developed, tested and aimed to run at more or less powerful Hardware T&L equipped Video hardware only)

My proposal was :
Why not reduce the amount of Geometry Data ?

The Idea :
Much like 3D Analyzer, put a Software Routine in place (either in a Driver, or a separate Tool like 3DA), which does this job.
At one point, the 3D Engine of a Game has to send all Geometry to the Video Card, which Triangle Setup Engine will then take care of all that's coming in.

In order to prevent an excessive amount of Geometry to be calculated and drawn by the Video Card, it would be a smart Idea to reduce the amount before it reaches the actual hardware, causing massive slowdown due to lack of Hardware T&L.

A way I thought it might be possible to do it was inspired by the dynamic Tessellation that current ATI/NVidia Hardware more or less support (N-Patches/Truform). While one goal of these Features is to increase the amount of Triangles used for any Object moving closer to the viewer in the 3D Scene in order to dynamically make it smoother and smoother, I would be interested in going the opposite way :

Execution
Reduce the amount of Triangles for any complex Object (e.g. not an entirely flat surface, like a simple 2 Triangle wall, or floor) at least by a fixed, user-selectable divisor (e.g. a reduction factor of 2, 4, 8 etc...)

Implementation
A really dirty way of doing it, would be to simply remove every 2nd Triangle/Polygon from everything that comes through the Driver/Tool when being send from the Game's 3D Engine to the Video Card, being intercepted and re-processed by the Driver/Tool; about like 3D Analyzer works as it places itself inbeween 3D Application and the low-level API. (a mere proof-of-concept)

Getting more advanced, one would have to re-connect the Vertexes (connect the edges of the adjacent, closest Triangles again), in order to fill the 'holes' which are caused by simply dropping every 2nd Triangle in this Example.

The 'golden way' would be a fast detection Logic, that could decide
a) how far away is the Triangle we want to remove in the Scene (if it's small enough, e.g only one Pixel, it could be flagged "save to remove" )
b) is the Object complex enough, so its basic Geometry is not changed (e.g. obviously, basic shapes like a Box or a Flat Surface cannot be reduced any further, without the loss of its Geometric shape)

...and then filter only the Rest.
---------------
Practical Application/Examples

Unreal Tournament 2003, Unreal 2-XMP :
Those Engines use very complex Models (e.g. very round Objects and Playermodels), which can certainly spare half or more of their Triangles, without leading to loss of Viusal Quality, or even Visual Artifacts.
Those levels of Geometry are one of the factors that take a significant hit on 3dfx Cards (since they were never designed to render such extremely complex scenes at high performance). Even with the fastest CPU's on earth, those Scenes will always be limited in performance (far below the Card's actual Texel Fillrate limit).
----------------
In a perfect world, there would be a Driver-side, User-selectable de-tessellation factor, or even a fully adaptive de-tessellation (based on User-Selected min. FPS setting, or pre-benchmarked maximum desirable amount of Triangles per Scene setup), in order to improve performance in any Game...

Concept
The premise of it all :
Since all World Objects (static or dynamic) are Textured quite intelligently nowaday's, the Reduction should not be apparent until one comes really close-up to the affected Object.
Thus, the loss in Visual Quality should be minimal to non-existent in most cases, while the performance could take a significant boost (freeing both GPU and CPU from the burden of calculating excess T&L Data).
=======================

Well, that's the Idea.
I somehow feel this stunt could actually be pulled off (very much looking at 3D Analyzer as an example, which can massively re-processe/intervene into many 3D Function calls already 'on the fly' with nice results)...

And I think Games like Unreal 2 (or any Game to come) should still look nice to 3dfx Users with 100000 Polygons per Frame instead of 1 Million... With the only difference being : It would run (in theory) upto 10 times faster in this example than before, minus the overhead caused by the processing/Polygon removal).

Now that's what I would call : Manual/Adaptive de-Tessellation :)

Greetings
FalconFly

PS.
Looking at ATI's Radeon 9x00 series (as opposed to the R8500), I can see they realized large parts (all?) of their Truform technology in Software due to lack of (functional) Hardware support, with reduced but acceptable performance.

This means nothing less than : It can be done !
Webmaster
http://www.falconfly.de
3dfx Archive

perer

Nice plan but do you think you can save much speed with these 'wrappers'. I hope so but I think that games will look no tight anymore meaning part of cars are missing. But as you sad things that are only one pixel big are most of the time nnot drawn in full geometry detail anway.  But to get more speed we could eliminate T&L
or let the CPU do it like 3d-analyze. But who needs T&L I don't.
I thinkwe have to make directx9 to glide wrappers. But first GLide have to be modified so that it will have more features.

And PS I think youre site/forum is great. There are a lot of nice files on it.
Start War and peace will be appreciated

Nightbird

QuoteBut who needs T&L I don't
You know, many new games need T&L and without 3DAnalyzer, many games would not run on a VoodooCard and without forgotting the others problems.
______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

perer

Sorry I forgot the problems with T&L

But as you sad problems will occur.[:(]
Start War and peace will be appreciated