Rendering via CUDA

Started by PorcupineFloyd, October 01, 2009, 07:25:47 AM

Previous topic - Next topic

PeanutMocha

#60
Direct Compute is Microsoft's answer to Open CL and is part of Direct X 10 and 11.  http://www.nvidia.com/object/cuda_directcompute.html

Another option to consider when the TG team feels it's the right time to implement this.

Like many others that have kept this post alive for months, I'm very interested in this (eventual) feature!

Oshyan

We need something that will be cross-platform, which of course Microsoft's solution isn't. ;D OpenCL is though, and seems promising enough...

In any case, while I know many other renderers are adopting these features quickly, many are also based on standard techniques that are becoming fairly well known and "easily" optimized for massively parallel GPUs (e.g. raytracers). TG2 is a different sort of beast, so it's rather more difficult to do this, and it will be some time before we're able to tackle it, if we do. That being said, I agree the possibilities are very exciting.

- Oshyan

PG

well mac's and linux can use nvidia cards. there's rumour of a new mac with an equivelant GTX 2xx series that can run CUDA programs so that'll be good. well not the mac part but you know what I mean. I did eventually get an email back from the nvidia techs and they said that any kind of compute API (as they called it) would be best applied through an abstraction layer which CUDA provides already but it means you have to write everything in C#. Not terragen obviously but the plugin or whatever for GPU rendering would have to be done with C#, the only way to do it with C++ is to write the access driver in assembly :D I looked into that and it's feckin hard.
I don't really know the ins and outs of how tg2 computes and renders so they only had my lame description to go on but they said that a single GTX 295 or 2 tesla 10 series cards could render an example image I told them about in under a minute with the right memory optimisations, while it took 40 on my quad core. This is because CUDA can allow you to edit what's on the VRAM before it starts to use it, the the cache it uses for computation is used so fluidly that you can just edit the one it's finished with and chuck it straight back onto the core it was just on. Plus you can get a small secondary cache for iterative instructions to increment/decrement values, etc. to the data while it's still in the primary cache just before the next cycle. I think that might be with the access driver though.

Half of that I don't understand so if it's of interest to anyone it is probably worth downloading the CUDA guides from the developer zone at nvidia's website.
Figured out how to do clicky signatures

Kadri

I don't know what the plan is for TG2 ( TG3 ? ) in general . Cuda is nice maybe , but what about Ati users ?
I would wait 1 - 2 year for  OpenCL maturing . And the different nature of TG2 rendering
( ı don't know anything how different it is  to raytrace ) would be another thing to consider.

So guys i think before 2 years , i don't see this happen if at all :)

(Hint , we may hear maybe some more things when putting it this way ;) )

Kadri.

Oshyan

Kadri, I think your perspective is very realistic and sensible. I'd like to see things happen sooner of course, but there are a lot of other things to be working on. And everyone should keep in mind that almost no one is using CUDA or other GPU acceleration techniques for *final rendering*. So while a faster 3D preview would be great (remember that we have not yet multithreaded it, so it will already get faster), if it will not affect final rendering then perhaps it is not worth the tremendous time investment. But rest assured we are considering it heavily, regardless.

- Oshyan

Kadri

Thanks , Oshyan  :)
I know from Lightwave how much a very fast preview (and final render at the same time ) renderer ( Fprime : http://www.worley.com/E/Products/fprime/fprime.html )
had an impact on the user base . Something along this line or-and a GPU renderer would certainly benefit TG2 . But we see from your posts here , that you know this really well .
I think many users here would prefer this kind of addition to other ones . So it is not easy to choose the things to add . But i hope it is nearer then i think  ;)

Cheers.

Kadri.



Tangled-Universe

Thought I could bump this topic up since there has been an interesting presentation on V-ray RT CPU/GPU rendering at Siggraph 2010:

http://forums.planetside.co.uk/index.php?topic=10517.0

So in the "V-ray RT CPU/GPU" presentation the major reasons are being explained why GPU-based rendering is not feasible with TG2's rendering engine.

KirillK

I am using Octane gpu renderer for "final rendering" . It's quite raw yet but ready for static renders.  I previously used Terragen for in-game backgrounds and some textures  but now started to do it in Octane + Zbrush. Especially  all the kind of rock stuff. It's a mistake that a  gpu renderer is  not ready for anything "final" .
Still using Terragen for a sky although.  Think Planetside should take gpu and cuda opportunity more seriously and hurry up.



Oshyan

It's not that we're not taking it seriously or don't consider it appropriate for "final" renders. It's just that TG2 rendering technology is *necessarily* very different from many other renderers. The vast majority of renderers you see being put onto GPUs are fairly traditional raytracers (albeit highly optimized in some cases), which is inherently more easily converted for massively parallel rendering. TG2 uses raytracing for some scene elements but not for terrain. Raytracing is notoriously inefficient at rendering highly displaced geometry, which is critical for TG2's landscape rendering capabilities. As yet we're not aware of anyone else doing GPU-accelerated pixel-level displacement equivalent to what TG2 does. We'd love to be the first to accomplish this, but we're not inherently GPU experts, so while it's something we're researching, we're not in a position to make any promises about if or when we would be able to take advantage of it. As previously discussed in this thread, certainly a cross-platform solution that is stable and mature is a prerequisite for us given our product is cross-platform. We are watching OpenCL with particular interest for this reason.

- Oshyan

Cyber-Angel

#69
Would it be possible, theoretically at least, for Planetside to find a strategic technology partner with expertise in GPU rendering? That way the technology necessary could be developed in a more expedient fashion!

I can understand the need to develop things in house as a matter of business and technological control over what gets developed for any software product, however I also see nothing wrong with collaboration with others; such as when a software developer doesn't have a particular skill set in house, ultimately this sprite of collaboration is what drives (or should) the industry forward and not just the bottom line.

Yes, for a small developer things that become adopted else ware take time to implement; but been a small development house also presents unrivaled and unique opportunities for innovation.

From looking around different fora on the Internet the beast that is GPU based rendering seems to be the expectation form any render engine on the market today or at least the expectation is high that the next version of the software in question will have it! Further more, this expectation (Bordering on zealotry by some postings I've read) tends to indicate that GPU Accelerated Rendering is expected to be in the specifications of any renderer that wants as they put it "To be Respected".

Given this then, which sounds to me like the finest example of "Buzzword Bingo" I have come across for quite a while other than Cloud based rendering; I would urge continued efforts into Technologies integrating GPU Rendering in Terragen, but would also ask that consideration be given to seeking a technology partnership with others to develop such.

Regards to you.

Cyber-Angel    

Oshyan

#70
We have been exploring partnerships. The question with partnerships is always what each party gains from the deal. Working out something that is agreeable to both parties takes time and is not easy, especially when you can't just pay someone for their tech (as a small company that's not something we can afford right now).

If you can think about it from our position for a moment I think you'll understand that we're working as much as we can to add GPU rendering to our products, within the bounds of our resources, the other in-demand features, and the limits of the technology. The simplest way to see where we're coming from is this: we make our living through this company, so there is no one who is more invested in the success of our products than us. If there is a feature that can help our product gain significantly greater success, then obviously we'll try to implement it.

We're well aware of the technology landscape and keep a very close eye not only on our immediate competitors, but also on the wider computer graphics field. Matt, Lead Developer and Owner of Planetside, has extensive experience in the film special effects industry and is very familiar with the demands of high-end computer graphics professionals and production workflows, not to mention the current state of the art in rendering technology. We test and compare with other products on a regular basis, read up on new relevant graphics industry research, and ultimately we're our own worst critics as far as the capabilities of our products.

We certainly understand how exciting GPU acceleration is and how much potential it seems to offer for almost any graphics program. We want very much to be able to take advantage of it and I hope you can just trust that we're doing what we can to make that happen. In the 5 pages of this thread nothing has been said that has changed our perspective or approach to it, though it's certainly important to see how much interest there is from our customers in this feature (a lot! ;D).

- Oshyan

Jack

gpu acceleration isn't meant for production quality rendering atm its merely used for a quick preview of you project. Nvidia has the monopoly by far opencl is good but as far as i know furryball and smallux are they only renderers i know of which use this and furryball using opencl produces very grainy images compared to its cuda counterpart. People go on how great octane is but its still nothing compared to mentalray (lol owned by nvidia) in terms of quality.

really i think its not necessary atm to implement gpu acceleration I would rather have features such as 'OPENGL'
previewing of objects the ability to scatter objects on top of objects and the list goes on.........
My terragen gallery:
http://wetbanana.deviantart.com/

KirillK

#72
An advantage of Octane over Mental ray is an immediate feedback you get. That's especially important with any kind of complicated naturally looking material.  Yes, Octane have no caustics and displacement so for some things it's not good, but for many other tings it allow to reach almost perfect result just in a few tweaks while with Mental ray you would spend hours just for test renders.

I understand that the displacement is a key thing in Terragen but perhaps it would be a great feature to have an option to bake all this displacement to  normal ( and other) maps and a geometry  ( like in Zbrush) with a decreasing resolution on a distance.

When people talk about production quality they seems to mean film industry but there is a game development also which I think is probably biggest part of the whole CG already. The game industry have  specific needs which are mostly ignored by software developers. You already have huge virtual worlds there, huge scopes of work, and can't spend weeks for rendering each thing.

An environment software that would allow to create procedurally, by nodes, an environment scene with Lods levels and texture backing, and fbx or collada exporting features would have an immediate success in game industry.  I am waiting such a soft for years already  sharing my expectations between Houdini and Terragen.

Jack

mentalray doesn't take hours to render lol, if you know how to tweak the massive amount of settings you can render damn quick and if you use the script standalone version you render even faster.
My terragen gallery:
http://wetbanana.deviantart.com/

KirillK

#74
I meant not the render but rather shaders creation and set up, especially when you need something natural and not so simple and sterile as  arch&design materials.   I have nothing against Mental ray although.