Procedural Textures the Future of Games?
An anonymous reader writes "bit-tech has posted an interview, with the head of Allegorithmic, Sebastian DeGuy. In it DeGuy again makes the statement that his software (which was used to make the Roboblitz game released on Steam recently) will be used to make games 90% smaller than what they currently are. He comments on why his procedural texturing technique is an evolution of the infamous .kkreiger. demo and how procedural texturing compares to Carmack's 'megatexturing'. The article includes some pretty extraordinary pictures of scenes rendered with just a few bytes as opposed to the ridiculous sizes of modern games." From the article: "Despite some similarities, technique-wise, we are quite different in several ways. First, the inner technology (the maths) that we use is based on modern maths. We use 'Wavelets', instead of classic maths method of 'Fourier Transform', which was the mathematical technique used in the past by all the procedural texturing techniques (including .kkrieger). Our technique works on a new mathematical model that I developed whilst studying for my PhD."
I use a program called animation master, that hsa supported procedural textures, (they call them materials). The file size for thee things is generaly around one or two k, and they can be amazing, I did a dirty tile floor using it and it was still less than 2k. The downside is render time. it drove my near realtime render to a 30min crawl. I can't imagine using procedural textures for a video game it would just kill the frame rate.
I used to have a cool sig, back when I cared
One thing the article doesn't quite touch on is the fact that procedural texturing can produce superior quality. We currently use tricks like trilinear mipmapping and ansitropic filtering to produce the best quality out of a resampling of a static image. However, this doesn't remove the fact that the textures are still of a fixed size, and will break up or look wrong depending on how close you come to the texture.
Procedural textures don't suffer from this. If greater detail is needed, it can simply be calculated from the texturing formula. As a result, a woodgrain will continue to look like a woodgrain (to the limits of the resolution), no matter how close or far away you get. Raytraced scenery has used this advantage to good effect in the last few decades. If procedural texturing finally makes the jump to gaming, the results could be incredible.
Of course, there is a downside. Real-time procedural texturing is costly. So if the hardware isn't up to it, the advantages of the texturing will go unrealized. It wouldn't surprise me at all if the first generation merely generates static textures on load, then uses them as if they were bitmaps included with the game. Still, once the box is opened, the potential will be too tempting to ignore.
Javascript + Nintendo DSi = DSiCade
Are there tools to create the texture? It's not going to take
the industry by storm if it requires a highly specialized programer
to create a proceedural texture. Is there a Photoshop plug-in?
Great images though!
Will this actually decrease loading times? It seems to be that as games get bigger, the loading times get longer, would the decrease in space needed make it require more or less time to load the game. Obviously reading the information off the disk would be faster, but I imagine you'd have a lot of computation to do to figure out what the texture is supposed to be. Kind of like how it takes less CPU power to decode a WAV file than to decode an MP3 file.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
They are trading file size for CPU performance. While the impact of reduced file sizes are clear, the impact on CPU is not. The question is, is our ability to add storage and bandwidth slower than our ability to add CPU and memory?
I think storage and bandwidth will start winning over CPU as we seem to have hit another Ghz wall and are throwing cores at the problem. While RAM, hard disk and flash are all getting cheaper and bigger at a faster rate.
Way back in 1984, the game "Elite" used procedural techniques to generate it's galaxy maps, allowing 8 galaxies with 256 individally named and described stars to fit in a tiny fraction of it's 32k memory. A derivative of the fibonnaci sequence saved the BBC's 1Mhz processor having to do FFTs. The idea of using procedures to generate 3D graphics has been around since another BBC game, "The Sentinel", where 9999 levels of 3D landscape were generated at up to 1fps (if you were lucky!)
Sony has been hyping procedural texturing recently, the PS3's Cell architecture is supposedly ideal for doing this kind of thing.
A pizza of radius z and thickness a has a volume of pi z z a
Watch the video's. Amazing. Infinity
Quality of texture is a huge advantage of procedural textures, not just for the fact that they don't pixelate as you approach them, but your ability to multisample is limited by computation speed, not bandwidth. Which brings up the biggest advantage of procedural textures: Bandwidth For every pixel that is written to the framebuffer, hundreds (if not thousands) of bytes are read from memory in texture sampling. Scaling the clockspeed and adding more processing cores is easy and cheap, increasing bandwidth is expensive.
You can batch texture generation to cores 2/3/4 while you are playing on core 1, assuming you are running on a game which, by nature, only utilizes the first core. That is a lot of rendering power.
Granted, Valve's engine now utilizes multiple cores and we will see multi-core engines emerge, but still a core or two (of a 4/8 core processor, speaking in the future) to batch textures is not unreasonable.
Interesting, but low on details.
Does anyone know just how much computing power the constant (re-)generation of textures takes? How long the load times are?
I guess procedural textures have their place. They look to have some fractals inside, and it appears they are great for wood, stone, grass, etc. - basically the same things that 3D animation software has been using procedural textures for since at least 1999.
Assorted stuff I do sometimes: Lemuria.org
will be used to make games 90% smaller than
Seriously, I've heard Microsoft talk about procedural texture synthesis for a while when designing the 360 and how they made certain stuff in the CPU to facilitate that kind of texture generation. Who needs Blu-ray to store high res textures when a mathematical equation will do? As for FMV, who really needs them? DVD9 might be ok for a long while after all.
What we're saying is that graphics can be small, good-looking, or fast... pick any two?
I've never heard of "tinny" graphics before.
Reality has a conservative bias: it conserves mass, energy, momentum...
It's slower to load, but in action it's just as fast as 'normal' textures. The only difference is the texture being rendered was generated on your machine during the game's loading sequence instead of in photoshop on some artist's machine. They're both just pixels when it gets to drawing.
Didnt they use these same techniques in Tron?
Some of us in the game industry have been using variations on these methods for years, I'm building a game now where most textures are procedural. Use of wavelets for this is nothing new either, I started playing with it myself ~ a decade ago, its always been the best approach for certain classes of image, especially for generating MIP levels. I hope the "new" idea here isn't trying to patent it...
One clarification w/r/t loading times, slow speeds, ect (simplified): With normal textures, you load your texture from disk, generally in one of the dds formats, then upload the desired subset of pregenerated MIP levels to texture memory. With procedural textures, you generate the texture (and the needed set of MIP levels), and upload them to texture memory. There is no need to regenerate and reload them unless someone decides to flush texture memory. The only time difference is disk load vs. generation, and you (generally) do that once.
I remember hearing that Spore is going to be highly procedural. Textures, models, walking animations, etc. There's a lot of room for this approach and it's not limited to just the graphics.
Hexy - a strategy game for iPhone/iPod Touch
"We have the most powerful, modern and patented approach and on the engine side, we are the only ones to propose an engine for next-gen consoles and PCs. In conclusion, the market exists, but as Torsten Reil (CEO, Natural Motion) says: "Allegorithmic is the leader in real-time texture synthesis"."
Let the patented math flamewar commence.
Note I did notice them talking about working on the XBox 360 already and talking to Sony about the PS3; my point was that it's too late for the consoles to get full hardware support, not that procedural textures are impossible. It may be impractical to use procedural textures on current hardware with games that are more demanding than a standard FPS, which in computational terms is almost negligible in most cases; the average FPS is pretty much all graphics, if the textures end up eating a lot of the CPU due to lack of hardware support.
Then again, it may not be so bad. Hard to tell without knowing more.
One of the things I like about procedural textures is the ability to cut down on the repetitive look of normal textures. In that vein, has anyone tried using multitexturing and scaling textures by prime numbers or otherwise modifying them so that the tile edges don't line up very often? I haven't gotten around to trying it myself, how did it look?
This debate, traditionally painted textures versus mathematically derived textures, reminds me of the feeling I got when I would use any one of the (in)famous Kai's Power Tool suite.
These tools were image processing tools with (to be polite) quirky user interface concepts. The output was always interesting, but never what you really planned. Throughout the literature and documentation, there were sprinkled sentences straight from my Jr. High School art teacher, about "happy accidents" and "explore" and "try a few different things to see what's exciting." The interfaces didn't explain themselves, you had to fiddle with them, and in the process of fiddling, you might get some image output that was astounding, exciting, bizarre, cool, inspiring. The creators of KPT saw that as a good thing.
However, there's a big difference between opportunistic art and production art. The opportunist is the lady on the edge of town who boldly wields an acetyline torch and welds together scraps of iron to sell as mobiles or unique garden fairies or whatever happens to come up. The production artist is told to make a Chanel No 5 ad, which entails a certain palette, a certain wispy but crisp attention to lighting, an interplay of gravity and weightlessness, and above all, black garments on gaunt 30-something models. Things are constrained very tightly for the production artist, and they let that constraint drive their creativity.
KPT is great for opportunity artists, but not for production artists. Write down a concept on a Post-It, and just *try* to achieve that concept with their tools. You can't figure out what the third blobdot widget from the left is doing, so you try to get it to where it is somewhat close. Then you hope the fourth blobdot widget from the left doesn't fuck up any progress you've made when you touch it. You may find a thousand really cool accidents on the way, but you will never really achieve that concept you wrote down on the note paper beforehand.
This comes back to procedural textures.
Which approach do you think will still be in use when they make Final Fantasy XXXIV?
[
Way superior image quality and way easier to controll.
f
Basically you take a existing texture and generate as much new texture as you like. On the GPU. With 80 fps. http://research.microsoft.com/~hoppe/apptexsyn.pd
Allegorithmics have been hawking their wares for a while now and still only one game uses it.
I like their tech but it's not what artists want. They want compression, not some new abstract way to generate really efficient textures which they don't have full control over.
It's like they bring a digital audio model to digital video (literally, compare their tool with Reaktor - it's the same basic idea). But the domains are too different. You have to synthesize (or sample) audio because that's where the conceptual space is - a waveform editor is useless for creating the sound you want, but filters and modulators make sense. But the conceptual space in video is in each pixel, not in some algorithm which relates them via abstract mathematical functions.
I've always thought this stuff would be useful if you didn't have any artists, but since artists are about 1/2 the cost of programmers I think it's an evolutionary dead-end.
So - future of video games? I doubt it.
I would imagine something like nvidias CUDA may do wonders for generating procedural textures.
'Feature', not 'future'! ;-)
Not only textures, but animations, models & sounds will eventually be generated procedurally. Everything natural around is procedural, with the laws of physics, evolution and genetics deciding the look, feel and sound of our environment. Having artists produce textures, animations etc manually has been just a hack & shortcut to better graphics; now that it is becoming infeasible to produce the art required by the most realistic games manually, we'll finally start to get procedural games. I look forward to seeing a rebirth of the industry, with small developers being able to compete with bigger studios thanks to the increased cost-efficiency gained from procedural art.
Before the 360 release, didn't Ars_technica have an article on this procedural synthisis? I remember reading about a forest where you defined basic principles of the forest, then it is randomized and created realtime in the architecture of the 360. I remember they talked about how they focused on this during the development. Am i wrong here?
Whether or not there is some sort of god, I'm not supposed to say/god is a word and the argument ends there-Smog
I'm not sure that 'procedural' is really what we want. Good textures often involve real source images, for instance.
Wavelets may be more useful to compactly encode textures generated more traditionally, and to provide better upsampling than traditional polynomial interpolation methods (bilinear, etc). Rather than generating points between samples using just the adjacent pixels, points are generated from a sum of wavelets generated by looking at all of the pixels.
An example of an image format that does just this is JPEG2000.
The interesting conclusion is that maybe graphics cards should be manipulating images in the frequency domain instead of as bitmaps.
Ever hear the saying, "Just because you can, doesn't mean you should?"
Actually, despite what a lot of replies are saying it's exactly <a href="http://en.wikipedia.org/wiki/Embarrassingly<nobr>_<wbr></wbr></nobr> parallel">the sort of thing</a> 3D graphics cards are designed for. Make it fast enough, and you might not even need to store the entire decompressed texture in RAM.
If you have used a 3D package (Blender, Maya, etc.) the first time you texture a model is probably done with a procedural texture. If you have special needs for a texture, then you might start thinking about UV mapping or projection mapping. If you just need rock, grass, water, wood or skin, reach for the procedural materials first and worry about overlays later.
Now there is a gap to be filled between the material properties available in a 3D editor and the rendering of the world in a game engine but it's hardly a wide one to fill. For an open source package like Blender, the gap is narrowed further by the ability to see precisely how the materials are calculated in the editor. I suspect that there already exist such capabilities in the high-end 3D graphics toolkits.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
In all these comments? Sheesh, and I thought you guys were nerds :)
.the .product by farbrausch for a pretty stunning example of the amount of compression you can get when you need it. They've also got a proof-of-concept FPS that uses all procedural textures and fits into a 96k binary.
Demos have been doing procedural textures for years... almost a necessity when you're trying to squeeze x number of minutes of... stuff into a 64k binary file. Take a look at fr-08:
They've even released a tool for procedural generation publicly.
Given the benefits of procedural generation in terms of space, I wish more games would look into using them... especially online MMORGS or other situations where bandwidth is an issue. It's probably faster and more efficient on a decent CPU/GPU to create procedural textures than it is to download a bzipped version thereof. (Nudge: Can someone at Cyan Worlds please hire these guys as interns?)
Hire a Linux system administrator, systems engineer,
At least it doesn't work right, or well like that.
Play Just cause and Oblivion. Which one uses Procedural generation.
Answer: both of them. Just causes uses it for almost everything, it has 300 square miles of land, that while it's all procedurally generated, they did NOTHING with. The ground looks like crap on the 360, the gameplay is about the same all over the place, and the buildings are.. well sparse and dull.
Oblivion has 16 miles of land. Oblivion doesn't use it for everything. However every tree is done with procedural generation and it looks good because trees arn't important. Have an important tree? You can toss it in there too along side procedurally generated trees.
The secret is to use Procedural generation in moderation, and to have a back bone of the game that works well with procedural generation. This technology isn't a new technology, it's just the new buzz word. However it isn't needed and hardly worth using most of the time unless in special cases (speed tree for instance).
The biggest problems with Procedural generation is it's "heavy" it takes up a decent (not large but hardly inconsequencial) amount of CPU time, and for the most part it produces lackluster items on large scale. It is all based off math, and for it too look good you need something with a very specific formula. For something to look unique you need a randomize or multiple formulas. This is hardly a beginner theory, and hardly something that every game company should devote resources too.
With expensive CPU operations, we can come back to "but we have 6 threads". And we do. But each thread isn't 3 gighertz, it's 1.5 gigs or less (forget the actual number). Walk into a new area it has to procedurally generate the area, which means a load time. It can be done on the fly but now that's a new complication that could go wrong. We already are throwing one or two processors to GPU functionality in many engines, another one should go to physics. another one to gameplay, one to interface, and then anything else special you want to do. With Procedural generation you're talking about a bigger bottleneck in the processor, lower DMA times, but the simple fact it won't save the day.
The bottom line is this. Procedural generation works, but needs a lot of work to look good, and even more work to work well. As such it should be used sparingly, though middleware like speedtree. Full scale games based solely on it are still a bad idea (such as Just cause).
Okay. Why would you do computations for 3d all the time, when you can just create a RGBA bitmap once, and move it around the screen/ zoom all you want? It certainly would cut down CPU usage. Why have 3d acceleration at all?
The answer is it looks better. The main reason it is in the "generate bitmap, upload to vid card" stage is more because enough programmers aren't experienced with using the GPU to render proc textures and such. Many probably don't even have access to the specs to program the GPU at all.
So, anyone know when the patent on wavelets expires?
Does anyone still care about algorithm patents?
"Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
Comment removed based on user account deletion