|
View previous topic :: View next topic
|
| Author |
Message |
sean
Joined: 01 Feb 2005 Posts: 1392 Location: Kirkland WA
|
| |
Posted: Sat Feb 23, 2008 11:43 pm Post subject: Sparse Virtual Texture Presentation |
 |
|
| I've posted a video presentation of the talk and all the source code here. |
|
| Back to top |
|
 |
casey Site Admin
Joined: 18 Dec 2004 Posts: 1768 Location: Seattle
|
| |
Posted: Sun Feb 24, 2008 1:22 am Post subject: |
 |
|
So, a quick content-free post: this lecture totally rules. And having the slides running through the system itself was hilariously awesome.
I also thought it was particularly satisfying that your sparse texturing algorithm operates using two hardware MIP levels, and the talk operated using two MIP levels.
- Casey |
|
| Back to top |
|
 |
sean
Joined: 01 Feb 2005 Posts: 1392 Location: Kirkland WA
|
| |
Posted: Sun Feb 24, 2008 1:28 am Post subject: |
 |
|
| casey wrote: | | and the talk operated using two MIP levels. |
I'm not sure what you mean by that. |
|
| Back to top |
|
 |
casey Site Admin
Joined: 18 Dec 2004 Posts: 1768 Location: Seattle
|
| |
Posted: Sun Feb 24, 2008 1:40 am Post subject: |
 |
|
| sean wrote: | | I'm not sure what you mean by that. |
You first gave the detail-free version of the pixel shader and the manager (two pages in your one-reduced MIP). Then you gave the full detail version of them (the same two pages in your full res version).
No?
- Casey |
|
| Back to top |
|
 |
sean
Joined: 01 Feb 2005 Posts: 1392 Location: Kirkland WA
|
| |
Posted: Sun Feb 24, 2008 1:43 am Post subject: |
 |
|
Hahaha, ok, yes, coarse and then fine. I totally never thought of it that way.
That structure was suggested by Chris Hecker after I rehearsed my first draft and it was shit, not to get a mipmapping effect, but because if I covered ALL the pixel shader stuff first, then ALL the texture management stuff, it was too confusing since people would be wondering about the general stuff for too long, not having a clear picture in their head. At least, I don't think he thought of it as mipmapping. |
|
| Back to top |
|
 |
Won
Joined: 21 Sep 2005 Posts: 506 Location: New York
|
| |
Posted: Sun Feb 24, 2008 7:56 am Post subject: |
 |
|
Since I haven't said it already, thanks alot for posting this! You have me excited about computer graphics, which hasn't happened to me for a really long time. This is awesome, and I think you should brag more that this was your first pixel shader!  |
|
| Back to top |
|
 |
jai
Joined: 10 Apr 2007 Posts: 247
|
| |
Posted: Mon Feb 25, 2008 12:21 am Post subject: |
 |
|
| very nice demo. thx. |
|
| Back to top |
|
 |
sylefeb
Joined: 28 Feb 2008 Posts: 1
|
| |
Posted: Thu Feb 28, 2008 4:26 pm Post subject: Some more references |
 |
|
Hi All,
I am also a big fan of this method and I have been working with it quite a lot. I just wanted to point out a few refs which could be useful for those interested in the topic:
The paper which I think introduced the idea (at least this is where I discovered it ):
http://www.vis.uni-stuttgart.de/eng/research/pub/pub2002/hwws02-kraus.pdf
Adaptive Texture Maps., M. Kraus and T. Ertl.
My own work on it:
ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-5210.pdf
Unified Texture Management for Arbitrary Meshes, S. Lefebvre, J. Darbon and N. Neyret
=> It is a big aging and many things could be done better now
Work by A.Lefohn on sparse data structures:
http://graphics.cs.ucdavis.edu/research/glift
And also there is a chapter in ShaderX 6 on how to properly deal with filtering issues: "Filtered Tilemaps".
=> I am sure there are many other cool methods out there using this technique. This would be a nice place to try to list them all.
And here is the kind of crazy stuff you end up doing if you push the idea too far
(more at http://www-sop.inria.fr/reves/Basilic/2007/LD07/)
Best,
Sylvain. |
|
| Back to top |
|
 |
julian
Joined: 17 Oct 2008 Posts: 38
|
|
| Back to top |
|
 |
TomF
Joined: 18 Feb 2007 Posts: 107 Location: Seattle
|
| |
Posted: Fri Oct 17, 2008 10:25 pm Post subject: |
 |
|
A bit of a shame he dismisses per-mipmap streaming so quickly. His reasons are correct on PC right now (on consoles there's no problem - it works fine) - SetLOD is a disaster in terms of performance, as are Create() and Release(). The obvious answer is to fix SetLOD so it doesn't suck. This isn't actually too difficult, it's just that nobody on the DX/driver side have ever given it any love, so performance sucks, so nobody uses it, so it never gets any love, etc.
You can work around it by having a pool of differently-sized physical textures and you copy the virtual texture into the right-sized physical one. Which is almost what SetLOD does internally, but in a really dumb way that causes GPU pipeline stalls. If you do it in the app you can get much better results (I did this in StarTopia, having discovered that SetLOD was so terrible).
That's obviously a bit of a hassle, but it's surely still less hassle than the full-on SVT? I question whether SVT is worth the effort for most discrete objects (e.g. people, cars, furniture, etc) - really only for landscapes and other significantly big things where part of the object is near the viewer and another part is distant. Of course once you have an SVT method implemented, you could argue you can use it everywhere, but it does still have significant restrictions (multiple layers, CPU cost, etc).
<gripe> No need to make up terms like "indirection textures" and so on. There's a completely standard name for something that caches the translation of a virtual address into a physical address - it's a TLB. </gripe>
He fails to mention prefetching when streaming data from a drive which makes me think he's never actually tried it - it's hugely important. Not that I've ever written about something I haven't actually tried - oh no. I would never do such a thing  |
|
| Back to top |
|
 |
AndyFirth
Joined: 06 Sep 2008 Posts: 74 Location: Sammamish, Wa
|
| |
Posted: Sat Oct 18, 2008 12:27 pm Post subject: |
 |
|
hey Tom... just an FYI... indirect textures wasn't "made up" per se.
its a hardware feature from gamecube.
I used them only for generating menu items (2d, no mip complications) way back when i was optimizing texture space for the peskiest memory hog ps2 games when 300kb could break the bank... i generated them by hand no less too... painstaking for sure... but i got my 300kb back :p
never since until this week when we needed to generate VERY large scale "decals" ala graffiti where the content is largely noise but when you look closer there is something real.
personally i called it indirect texturing within our engine.
Last edited by AndyFirth on Sat Oct 18, 2008 8:16 pm; edited 1 time in total |
|
| Back to top |
|
 |
sean
Joined: 01 Feb 2005 Posts: 1392 Location: Kirkland WA
|
| |
Posted: Sat Oct 18, 2008 7:55 pm Post subject: |
 |
|
| TomF wrote: | | <gripe> No need to make up terms like "indirection textures" and so on. There's a completely standard name for something that caches the translation of a virtual address into a physical address - it's a TLB. </gripe> |
No need to use the wrong term to describe something when the right term already exists. If something stores the translation from a virtual address into a physical address, and it's not a cache, it's a page table.
(There's nothing in the pixel shader path that is 'lookaside'-y.) |
|
| Back to top |
|
 |
MSN
Joined: 22 Oct 2008 Posts: 1
|
| |
Posted: Wed Oct 22, 2008 9:33 pm Post subject: |
 |
|
Hey, he references me too!
MSN |
|
| Back to top |
|
 |
|