Slashdot Mirror


Carmack On 'Infinite Detail,' Integrated GPUs, and Future Gaming Tech

Vigile writes "John Carmack sat down for an interview during Quakecon 2011 to talk about the future of technology for gaming. He shared his thoughts on the GPU hardware race (hardware doesn't matter but drivers are really important), integrated graphics solutions on Sandy Bridge and Llano (with a future of shared address spaces they may outperform discrete GPUs) and of course some thoughts on 'infinite detail' engines (uninspired content viewed at the molecular level is still uninspired content). Carmack does mention a new-found interest in ray tracing, and how it will 'eventually win' the battle for rendering in the long run."

149 comments

  1. Does carmack still check slashdot? by walshy007 · · Score: 2

    Years ago he posted here on occasion and I even remember seeing small active discussions on rendering technique technical points etc.

    It has been ages since I've last seen this, which makes me ponder if he even reads slashdot these days when topics related to him are posted.

    1. Re:Does carmack still check slashdot? by Stradenko · · Score: 4, Funny

      Yeah, anyone still around here is obviously a real loser.

    2. Re:Does carmack still check slashdot? by elsurexiste · · Score: 1

      It's hard sometimes to wade through hordes of trolls and misinformed people, I guess...

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    3. Re:Does carmack still check slashdot? by Baloroth · · Score: 1

      It's hard sometimes to wade through hordes of trolls and misinformed people, I guess...

      Well then, it's a good thing he works in the video game industry, which is troll and misinformation free!

      --
      "None can love freedom heartily, but good men; the rest love not freedom, but license." --John Milton
    4. Re:Does carmack still check slashdot? by drsquare · · Score: 2

      Doubt he'd bother coming, Slashdot barely has a games section anymore. Unless you want to read about Apple and Google over and over again, every day, there's not much point in visiting.

    5. Re:Does carmack still check slashdot? by sortius_nod · · Score: 1

      Congratulations on demonstrating GP's point expertly. You earn +10 slashdot troll points to spent in the store.

  2. Why can't we have both. by Anonymous Coward · · Score: 0

    Ray Tracing has been around for a long time. The problem it just takes so long to render well. It is much better then it use to be, because we have more processing to do it. But... Still it slow, and Poligons or now the "Infinite Detail" seems to be a reasonable shortcut. To realtime raytracing, as they offer graphics fast enough and good enough for our needs... One day I hope for real time Ray Tracing... However that is still down the lines. Once Pixar doesn't need server farms for their final quality output then I will be happy.

    1. Re:Why can't we have both. by Skarecrow77 · · Score: 1

      I know, right!

      Next, he'll be asking for real time mpeg encoding.

  3. Ray Tracing != Ray Casting by Suiggy · · Score: 5, Informative

    It should be noted that John Carmack believes that Ray Casting, not Ray Tracing, will win out in the long term.

    Unfortunately, many people outside of the graphics field confuse the two. Ray Casting is a subset of Ray Tracing in which only a single sample is taken per pixel, or in other words, in which a single ray is cast per pixel into the scene and a single intersection is taken with the geometry data set (or in the case of a translucent surface, the ray my be propagated in the same direction a finite number of times until an opaque surface is found). No recursive bouncing of rays is done. Lighting is handled through another means, such as with traditional forward shading against a dataset of light sources, or using a separate deferred shading pass to un-hinge the combinatorial explosion of overhead caused by scaling up the number of lights in a scene.

    John Carmack has been quoted on saying that full-blown ray-tracing just isn't feasible for real-time graphics due to the poor memory access patterns involved, as casting multiple rays per pixel, with multiple recursive steps ends up touching a lot of memory in your geometry data set, which just thrashes the cache on CPU and modern/future GPU hardware alike.

    When people talk about real-time ray-tracing, they almost always invariably are referring to real-time ray-casting.

    1. Re:Ray Tracing != Ray Casting by Vigile · · Score: 1

      I think he has come full circle on that though and thinks ray TRACING will win. Did you listen to the full interview?

    2. Re:Ray Tracing != Ray Casting by AvitarX · · Score: 1

      Does that mean you miss out on the reflectivity though?

      Because I thought that was one of the main benefits to ray tracing.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    3. Re:Ray Tracing != Ray Casting by QuasiSteve · · Score: 2

      When people talk about real-time ray-tracing, they almost always invariably are referring to real-time ray-casting.

      Developers of dozens of realtime raytracers are lining up to disagree with you.
      e.g. VRay RT, Octane, etc.
      http://www.youtube.com/watch?v=6QNyI_ZMZjI

      Raytracing is extremely straight-forward and parallel. The only thing you have to do to make it feasible for use in games is either A. throw more power at it, B. cheat where you can, C. combination of A&B.

      Not to mention companies that make dedicated hardware, almost invariably treating raytracing less as a raycasting problem and more as data access problem.

    4. Re:Ray Tracing != Ray Casting by AvitarX · · Score: 1

      It looks like even basic movement causes trouble.

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    5. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 2

      Yes, you do lose out on reflectivity, so you have to handle reflections through other means. If you use deferred shading, you can handle it in a separate reflective lighting pass in combination with something like cube-mapping. Even though you do a second pass to handle it, it'll still end up being faster than had you tried to implement fully recursive ray-tracing.

      Ray-casting would still have the benefit in providing better scalability than polygonal rasterization as there is a fixed cost per pixel, whereas with polygon rasterization, as you scale up the complexity of the geometry, you increase the computational cost. And that's why Carmack thinks it will eventually win out against rasterization: ray-casting becomes a better use of the available computational resources you have at your disposal once you get past a certain level of detail in your scenes.

    6. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 3, Informative

      The video you posted is not real-time frame rates, it's interactive frame rates. It takes a few seconds to fully recompute the scene once you stop moving the camera. And note how there's only a single car model. imagine scaling up the amount of geometry to a full world. With ray-tracing, as you scale up the complexity of the geometry, you end up scaling up the required computational complexity as well due to radiosity computations. Full real-time ray-tracing on huge worlds in real-time is a pipe-dream. What you will be able to do with ray-casting or rasterization with deferred shading composition to simulate things like reflections or radiosity will always be more than what you can do with ray-tracing, and so games developers will always choose the former.

    7. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 2

      I also forgot to mention that conventional rasterization and ray-casting is also just as parallel in nature as ray-tracing. In fact, more so because it has much better memory access patterns as I mentioned in a previous post. Memory-access is the biggest limiting factor in building scalable, parallel systems. If you don't have good memory-access patterns, you might as well being doing sequential work, because it's getting serialized by the hardware memory controller anyway.

      And this situation isn't improving, it's actually getting worse on each subsequent hardware generation... memory access is increasingly becoming a bigger and bigger bottleneck. I suggest you educate yourself on how memory works on modern cache-coherent hardware.

      https://lwn.net/Articles/250967/

    8. Re:Ray Tracing != Ray Casting by Rockoon · · Score: 1

      Unfortunately, many non-programmers such as yourself dont understand algorithmic complexity and as such fail to realize that O(P log N) will eventually beat O(PN) once N is large enough, even though the constants in the first are much larger than the constants in the second.

      Carmack knows that raytracing will eventually be superior in performance to rasterization because it is inevitable.

      The thing is that when the critical N is reached, O(P log N) isnt just going to be slightly better, its going to be enormously better from then on out. It is similar to how for small N that Bubble Sort beats Quick Sort but once the critical N is reached, Bubble Sort is left in the dust with absolutely no hope of beating the better-scaling algorithms.

      --
      "His name was James Damore."
    9. Re:Ray Tracing != Ray Casting by loufoque · · Score: 1

      John Carmack has been quoted on saying that full-blown ray-tracing just isn't feasible for real-time graphics due to the poor memory access patterns involved, as casting multiple rays per pixel, with multiple recursive steps ends up touching a lot of memory in your geometry data set, which just thrashes the cache on CPU and modern/future GPU hardware alike.

      It's not good for a vector processor, but it's still pretty good for a many-core processor.

    10. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      I can't tell if you're trolling or you just wrote up a reply without fully reading my post. I never said rasterization is better. I alluded to the fact that ray-casting will win out over rasterization, and in the very near future. What I said was the ray-casting will win out over ray-tracing. The algorithmic complexity of ray-casting + deferred-shading is better than recursive ray-tracing.

    11. Re:Ray Tracing != Ray Casting by Pinky's+Brain · · Score: 1

      The data access problem of backward rendering is unsolvable ... it will always access data without regard to object coherency. For primary and shadow rays forward renderers will always be able to be more efficient when efficient occlusion culling is possible and subsampling isn't needed.

      The video you linked has a realtime preview ... in 1/60th second it probably doesn't get that much further than the raycasting solution (primary rays).

    12. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Real-time != instantaneous. That's not possible.

      You'd also get more brownie points by using big boy words like 'recursion' instead of 'latency', but barely.
      Learn some shit before you shit-talk.

    13. Re:Ray Tracing != Ray Casting by Sycraft-fu · · Score: 3, Insightful

      I think part of the problem is that you get a bunch of CS types who learned how to make a ray tracer in a class (because it is pretty easy and pretty cool) and also learn it is "O(log n)" but don't really understand what that means or what it applies to.

      Yes in theory, a ray tracing engine scales logarithmically with number of polygons. That means that past a point you can do more and more complex geometry without a lot of additional cost. However that forgets a big problem in the real world: Memory access. Memory access isn't free and it turns out to be a big issue for complex scenes in a ray tracer. You have to understand that algorithm speeds can't be taken out of context of a real system. You have to account for system overhead. Sometimes it can me a theoretically less optimal algorithm is better.

      Then there's the problem of shadowing/shading you pointed out. In a pure ray tracer, everything has that unnatural shiny/bright look. This is because you trace rays from the screen back to the light source. Works fine for direct illumination but the real world has lots of indirect illumination that gives the richness of shadows we see. For that you need something else like radiosity or photon mapping, and that has different costs.

      Finally there's the big issue of resolution that ray tracing types like to ignore. Ray tracing doesn't scale well with resolution. It scales O(n) in terms of pixels, and of course pixels grow in a power of two fashion since you increase horizontal and vertical resolution when you get higher PPI. Then if you want anti-aliasing, you have to do multiple rays per pixel. This is why when you see ray tracing demos they love to have all kinds of smooth spheres, but yet run at a low resolution. They can handle the polygons, but ask them to do 1920x1080 with 4xAA and they are fucked.

      Now none of this is to say that ray tracing will be something we never want to use. But it has some real issues that people seem to like to gloss over, issues that are the reason it isn't being used for realtime engines.

    14. Re:Ray Tracing != Ray Casting by Pinky's+Brain · · Score: 1

      Real time in it's common technical meaning is mostly nonsensical when talking about rendering, it would mean you could guarantee a maximum delivery time ... real time rendering most often used as synonymous to interactive rendering (with interactive being a fuzzy concept, but lets say >10 fps in honor of Carmack's famous turtle in Quake).

    15. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 2

      I admit, I made my post before watching the video. Now that I've watched it, I think my position still holds. He talked a lot about using ray-tracing in content preproduction and preprocessing tools during development, and he talked about building ray-tracing engines in the past to experiment with the performance characteristics. This is the same research he did where he came to the conclusion that ray-casting will be better than ray-tracing. Where his position has changed is in that he used to think it would only be feasible using voxel as your input data set, but he's starting to come around on ray-casting against analytical surfaces... polygonal meshes, curved surfaces, etc. in real time.

    16. Re:Ray Tracing != Ray Casting by NoSig · · Score: 2

      Everything you wrote is mathematically accurate, yet the actually interesting thing is exactly how big N has to get. The mathematics of big-O notation tells you nothing about that, yet that is the crux of the matter. For example, if N has to be bigger than 10^123478234897298, the apparent better asymptotic complexity has no impact on the real world. The point is that if I tell you that one algorithm is O(1) and the other is O(2^n), you haven't actually learned anything useful about which algorithm you should use for your program - you also need to know the point at which one becomes better than the other. But if you know that, you don't have to know the complexity to choose which algorithm will work better for you! So you see, big-O notation can be useful for understanding how your program behaves. It is never by itself (!) useful for deciding between two algorithms at any size of input - it doesn't give you enough information. So don't just tell me the complexities, tell me that one method is better than another at X multiple of current performance.

    17. Re:Ray Tracing != Ray Casting by billcopc · · Score: 1

      The only thing that makes it "realtime" is that it has a relatively high redraw rate (for a raytracer). That's why there is a lot of fuzz when the camera pans around. It might render only a few thousand rays between redraws, which does give fast feedback but also slows down the rendering process overall. Most raytracers will churn 100k rays before updating the preview.

      This is analogous to progressive jpeg decoding, where you start with a very chunky low-res preview and gradually work your way up to the full detail image. I don't see how this could be usable in games, unless you're specifically going for that TV-static effect :P

      --
      -Billco, Fnarg.com
    18. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      You still run into the same problems regardless of whether you're using a vector processor with no branch-prediction and no cache, to if you're using a bunch of in-order cores with cache coherency, or full-blown out-of-order cores with cache coherency. You end up pulling in a combinatorial explosion (ie. exponential number) of cache lines or memory accesses per recursive ray tied to the complexity of your scene.

      People like to talk about how you can just throw more cores and distributed computing architectures to increase the performance of ray-tracing graphics. Yes, it works, but only up to a point. You can cut the number of days or weeks or months off of fully rendering a CG movie by building out a distributed render farm, but it's not going to hold for when you get single shared-memory machines with enough cores and you expect it to be able to do it all in real time.

      It'll still be a much better use of those hardware resources if you go with algorithms which are much more orthogonal in nature when it comes to memory access patterns. Ray-casting + deferred shading should scale better than fully recursive ray-tracing, even on many-core shared-memory CPU architectures.

    19. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 2

      Yeah, not to mention that with full ray-tracing, as you add more lights to a scene, it increases the overall complexity per pixel per ray bounce linearly as well. That's why doing deferred shading is so nice because it unbuckles the lighting from the rasterization or ray-casting/tracing step and lets you scale up the number of lightings independently with a fixed amount of overhead and linear cost per light for the entire scene, instead of per pixel or per ray or per polygon.

      Going with pure ray-tracing doesn't let you take advantage of that.

    20. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Scumbag Rockoon. Says parent doesn't understand the difference between O(P log N) and O(PN), and then advocates an O(c * 2^backtraces * N) algorithm over the O(c * N) algorithm described by the parent.

    21. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Thank you. I am so damn tired of people that takes a list that will never hold more than 10 items and tries to optimize it for >1000.
      "Yes, because of the extra memory allocation it has a setup equivalent of sorting 100 elements but after that it is faster!!!1!11"

    22. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      And if you include lighting into the equation, with N = L lights + S geometric surfaces, he's advocating for O(c * 2^backtraces * N) over O([c1 * S] + [c2 * L]) that you would get with ray-casting + deferred shading&lighting, where it could be proven that c2 c1 c, seeing as how you also have to cast multiple rays per recursive back-trace to get a decent approximation of lighting in your scene, where you only need to perform a single sample per pixel with what I'm advocating for.

    23. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      That should read c2 < c1 < c.

    24. Re:Ray Tracing != Ray Casting by Rockoon · · Score: 1

      Everything you wrote is mathematically accurate, yet the actually interesting thing is exactly how big N has to get.

      You know that this very question has been researched, right? I am amazed that you are intent to discuss this issue without having actually done any research in this matter.

      You might want to start with this 2005 paper from Intel where they do some performance comparison for both hardware rasterization and software raytracing for various scene complexities.

      That paper in particular illustrates how close we are. We are approaching the crossover point with the number of on-screen primitives right now. GPU's have done a lot to decrease the need for more primitives since then (hacks like parallax mapping and so forth,) but they are doing those things precisely because the demand for more scene detail is outpacing the ability to deliver higher primitive counts on GPU's. Piling on shaders (stream processors these days) only goes so far in delivering higher primitive counts, because their real choice is latency or bandwidth.. pick only one, even though you need both.

      --
      "His name was James Damore."
    25. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      Actually, now that I think of it, that should be O(c * 2^backtraces * log N) vs O([c1 * log S] + [c2 * L]) given that you would normally use spatial data structure such as an octree with logarithmic look-up times.

    26. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Neither of you know what N is! Lol!

    27. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Actually I meant log(polygons) <= c (because you budget for a fixed # of polygons), and N pixels (so N grows as O(display-resolution^2)).

    28. Re:Ray Tracing != Ray Casting by NoSig · · Score: 1

      Everything you wrote is mathematically accurate, yet the actually interesting thing is exactly how big N has to get.

      You know that this very question has been researched, right? I am amazed that you are intent to discuss this issue without having actually done any research in this matter.

      What I'm discussing is what can and cannot be concluded from big-O asymptotic complexity. You were drawing a mathematically correct conclusion that "for big enough N, raytraycing is better." You then made an incorrect further conclusion that "eventually, raytraycing is better." Big-O notation never guarantees that you'll ever be able to solve an input so big that the complexity estimate becomes accurate as to which algorithm is better. You then chose to heed my advice and present data on what actually matters - which algorithm is better in practice for which inputs. Good on you, even if the quote above is a very dickish way to accept advice.

    29. Re:Ray Tracing != Ray Casting by Rockoon · · Score: 1

      Yeah, not to mention that with full ray-tracing, as you add more lights to a scene, it increases the overall complexity per pixel per ray bounce linearly as well. That's why doing deferred shading is so nice because it unbuckles the lighting from the rasterization or ray-casting/tracing step and lets you scale up the number of lightings independently with a fixed amount of overhead and linear cost per light for the entire scene, instead of per pixel or per ray or per polygon.

      I highlighted the key thing that you overlooked. They are both linear to the number of lights.

      --
      "His name was James Damore."
    30. Re:Ray Tracing != Ray Casting by ShakaUVM · · Score: 1

      It gets even worse when you realize you have to do subsurface scattering to get realistic looks for a lot of surfaces (like, oh, skin). Then you no longer can terminate a photon when you reach most surfaces, but then have to further reflect and refract photons from that point.

      It does make for nice looking materials, though... without it, you get those iconic hard and shiny surfaces in ray traced images, like the famous metal balls.

      (http://en.wikipedia.org/wiki/Subsurface_scattering)

    31. Re:Ray Tracing != Ray Casting by Rockoon · · Score: 0

      What I'm discussing is what can and cannot be concluded from big-O asymptotic complexity.

      ..and what I'm discussing is the reality of rendering engines as they are today and the near future.. you know, like the fucking article and interview.

      --
      "His name was James Damore."
    32. Re:Ray Tracing != Ray Casting by loufoque · · Score: 1

      You still run into the same problems regardless of whether you're using a vector processor with no branch-prediction and no cache, to if you're using a bunch of in-order cores with cache coherency, or full-blown out-of-order cores with cache coherency. You end up pulling in a combinatorial explosion (ie. exponential number) of cache lines or memory accesses per recursive ray tied to the complexity of your scene.

      GPUs have no cache.
      (Fermi has one, but it doesn't really work, so we might as well not count it)

    33. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      Again, your ability to comprehend fails to you. Scaling linearly per ray cast (and you doing multiple ray casts per pixel with ray-tracing) and scaling linearly with respect to the entire frame buffer are entirely different.

      Ray-tracing: O(2^b * L * log N)
      Ray-casting + deferred shading: O(log N) + O(L)

    34. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      GPUs eventually will get working caches. AMD's next-generation GPUs are shipping with stuff comparable or better than Fermi, and nVidia's Kepler is getting something better than Fermi.

      Furthermore, Intel's Larrabee, Knight's Ferry, and Knight's Corner HPC compute products have cache, yet feature just a bunch of simple in-order, non-speculative x86 cores.

      There's a wide spectrum of what's out there, and yes, you can have vector processors with cache, there's nothing saying that you can't do that.

    35. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      Ahh, okay, gotcha, now what you original said makes sense. There's more than one way to scale it. Generally, on a given project you have fixed budgets for pixels and polygons, but over the years as you target each subsequent generation you get to scale up both categories--however, scaling up the number of pixels beyond 1920x1080 or 1920x1200 doesn't really make as much as much sense as say continuing to scale up the complexity of your geometry, so I guess my brain assumed that's what you'd want to scale up rather than the output resolution.

    36. Re:Ray Tracing != Ray Casting by loufoque · · Score: 1

      Anyway, the point is that of course ray casting is better suited to that hardware, but a lot of raytracing applications, like in medical or semiconductor imaging, already benefit from GPUs greatly.
      And those things actually run in real (or interactive) time.

    37. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Sounds to me like it's a storage problem if you're *really* thinking about the future.

      If detail is complex, rendering must be complex. That's a TRUTH. Anything less is a fancy example of lossy(quite) compression.

      You can pre-render a scene with a farm right? Why the hell do we need to do it real time?

      A long time ago sending a rendered image was not possible due to storage. So they sent small programs on floppies or whatever that rendered to the screen. It's really compression if you think about it hard enough.

      So render *every single possible rotation of these complex ass 3d worlds*, IN ADVANCE and ship Yottabytes worth of data. http://en.wikipedia.org/wiki/Yottabyte
      Then render the most dynamic of things on top of that in the proper place and make minor adjustments with all that cpu power.

      Thank me later!

    38. Re:Ray Tracing != Ray Casting by QuasiSteve · · Score: 1

      I won't go into what constitutes realtime vs interactive, as I can make even the fastest game engine out there 'interactive' as long as I run it on low enough hardware with all the features enabled and running it across multiple HD screens.

      But the converse is also exactly my point - raytracing is something that scales very well, you just throw more computational power at it.

      I did also mention 'cheats'; in that a game engine doesn't necessarily rely on any one single technology to begin with. We've now got on-hardware tessellation and mesh displacement - but that doesn't stop most games from still using bump maps, normal maps, parallax maps, etc. for the vast majority of surfaces (having to support older hardware factors in to it as well, of course).

    39. Re:Ray Tracing != Ray Casting by Creepy · · Score: 2

      I'd hope he is talking about ray tracing - I'm basically doing ray tracing inside of polygons in shaders today, and I'm sure he has, too. I really don't think ray casting has enough advantages over polygons that would make it worth it, and has significant disadvantages that would need to be worked around (no reflections, shadows, etc). Back in the 1980/1990s, programmers used the painter's algorithm instead of zbuffer because it was significantly slower to use zbuffer up to a certain number of polygons, and right as zbuffer was becoming practical consumer hardware became available that used it, killing the painter's algorithm. Ray tracing actually falls into a similar category - as the number of objects in a scene grows, it scales linearly, so at some point it will be cheaper or as cheap to use ray tracing as it is to use polygons. If monitors had stuck with 640x480, we'd easily be there today.

      Not that ray tracing doesn't have issues - it needs access to the entire scene in memory (GPU memory optimally - GPU parallel processing is ideal), creates hard shadows only (without photon mapping or similar - I'd say Radiosity, but I doubt we'll see that full scene in realtime anytime soon - O(n^5) I believe), requires a lot more processing power for larger monitors (640x480 is 307200 rays, 1920x1200 is 2304000 rays or 7.5x more expensive - in contrast, polygons don't increase in cost by monitor size), and displays reflective lighting far better than diffuse.

      All of the problems above are solvable by lots of GPU horsepower and memory - we're not there yet, but in 10 years, who knows?

    40. Re:Ray Tracing != Ray Casting by NoSig · · Score: 1

      You don't like it when you make mistakes, do you?

    41. Re:Ray Tracing != Ray Casting by Rockoon · · Score: 1

      Amazingly, you think that lighting can be handled without respect to scene geometry.

      You do realize that the deferred lighting passes must deal with the actual scene geometry, and not just the frame buffer, right?

      --
      "His name was James Damore."
    42. Re:Ray Tracing != Ray Casting by Rockoon · · Score: 1

      My conclusion was not incorrect as you claimed, and in fact I gave a citation to prove otherwise, and after reading that proof you decided my conclusion was incorrect on "general theoretical grounds" even though the paper proves it "in actual practice."

      The mistake is clearly yours in thinking that the metrics involved havent been well researched. You go on about the theoretical.. I'm sure that will impress some other guy that doesnt actually do shit.

      10^123478234897298 indeed.... right out of your ass.

      --
      "His name was James Damore."
    43. Re:Ray Tracing != Ray Casting by Daniel+Phillips · · Score: 2

      The thing is that when the critical N is reached, O(P log N) isnt just going to be slightly better, its going to be enormously better from then on out

      Obviously, but many commenters seem to gloss over the fact that polygon rendering can also be reduced to O(N log N) by multi-resolution rendering.techniques.

      --
      Have you got your LWN subscription yet?
    44. Re:Ray Tracing != Ray Casting by Suiggy · · Score: 1

      Wrong again.

      With deferred shading, lighting is done in a second pass (or multiple passes for different types of lights) directly against the g-buffer. The g-buffer contains a surface normal, depth value, and lighting & material coefficients for each pixel and is populated by rasterizing or ray-casting/tracing your scene geometry into it. With rasterization, each of your polygonal meshes are rendered into the g-buffer once without regard for lighting, during the lighting stage, each light is applied to the g-buffer without regard to the different primitives that were used to create the initial g-buffer. Thus you can scale up the number of lights independently from the scene geometry.

      I'm really starting to think you're a troll looking for a quick fix.

    45. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      There are a few examples of real time raytracing demos within the demo scene.

      Federation Against Nature - Still Sucking Nature from 2003
      Video: http://www.youtube.com/watch?v=Q8RXo0KOJ90
      Download: http://ftp.de.scene.org/pub/parties/2003/breakpoint03/demo/stillsuckingnature_by_fan.zip

      Exceed - Heaven Seven from 2000
      Video: http://www.youtube.com/watch?v=tCMo-bJQC8A
      Download: http://http.hu.scene.org/parties/2000/mekkasymposium00/in64/h7-final.zip

      Federation Against Nature also tried to push their realtime raytracing engine as a game engine under the company name realstorm, but they seem to have gone defunct since and their domain is squatted. However, they released one bowling game called Bowl X-treme and a computer benchmarking application called RealStorm Bench 2006. Both utilzed their realtime raytracing engine.

      Demo version of Bowl X-treme: http://www.gamershell.com/news_18055.html

      The only mirror I manageed to find for RealStorm Bench is what looks to be a russian FTP site (yikes)
      90.157.26.90 in the directory /soft/_ /CPU/ /!RealStorm_Bench2006

    46. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      I suggest you educate yourself on how memory works on modern cache-coherent hardware.

      What makes you think that ray tracers need cache-coherent hardware? They don't.

    47. Re:Ray Tracing != Ray Casting by DrKnark · · Score: 1

      Then there's the problem of shadowing/shading you pointed out. In a pure ray tracer, everything has that unnatural shiny/bright look. This is because you trace rays from the screen back to the light source. Works fine for direct illumination but the real world has lots of indirect illumination that gives the richness of shadows we see. For that you need something else like radiosity or photon mapping, and that has different costs.

      Forgive my ignorance, but I don't quite understand why ray tracing can't handle indirect illumination. Wouldn't the traced ray modify the intensity and color of the (eventually found) light source with each bounce? Or is the problem that when you cast one ray per pixel you only get the contribution from a single light source in the end?

    48. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0
      The apostrophe in its common technical usage is mostly used to denote a contraction or possession.

      "Real time in IT IS common technical meaning"

      Make sense? No? Then you want ITS. Why is this so baffling? You nerds can memorize mountains of boring useless trivia but the simple apostrophe overpowers you?

    49. Re:Ray Tracing != Ray Casting by Sycraft-fu · · Score: 1

      You basically have it right. You trace a ray for each pixel, starting at the monitor, and it bounces back to the light source. To deal properly with indirect illumination and thus get good shadows and so on, you'd have to do it the other way, you'd have to trace rays from the light source, bounce them off materials, and see where they end up. That, of course, gets real CPu intensive since you can be tracing rays that never intersect with the display.

      That strategy is more or less what radiosity is. It simulates indirect lighting to a certain number of bounces (the more the better it looks). The Wikipedia article on it is decent and the picture is good. Compare their little room that is direct and radiosity illuminated. Notice not only the soft shadows, but the way the red carpet colours the walls.

      At any rate there's all sorts of various solutions out there, the problem is they just take a lot of power. Using something like photon mapping along with ray tracing gets you a very realistic setup with good caustics, indirect illumination, subsurface scattering, and so on. However it takes some serious computation to do right.

    50. Re:Ray Tracing != Ray Casting by smallfries · · Score: 1

      At 13:30 he seems to be talking about path-tracing. That accumulation step that he describes with an arbitrary cut-off to make the frame deadline and the random jitter makes it quite certain. The random jitter in time reusing previous pixel results somes like a very bizarre and trippy form of "motion" blur - it would look similar but blurring would be proportional to path length casting from that pixel. I might have to hack that up and try it...

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    51. Re:Ray Tracing != Ray Casting by kvezach · · Score: 1

      It's possible to make a low-res realtime version of photon mapping. See https://www.youtube.com/watch?v=GckOkpeJ3BY for an example. It isn't as good as proper photon mapping, but it *does* give indirect lighting.

    52. Re:Ray Tracing != Ray Casting by smallfries · · Score: 2

      Raytracing is extremely straight-forward and parallel.

      If only.... In the real world that would be an exclusive or, so pick one of the two. On small uncomplicated scenes it is straight-forward to make the tracing of each ray happen in parallel. As you add more geometry though it begins to behave differently. You will need a giant cache of rays to handle all of the bounces otherwise all of the recomputation will kill your performance. This was well known in the graphics community prior to GPUs and the same scaling issues were seen on clusters used in rendering. Working out how to implement that cache so that it scales nicely with the number of nodes is a really difficult data-structures problem.

      Say that you avoid this problem (for now) by only looking at a low number of bounces per ray, and you favour performance over fidelity by only casting a few (or just one) ray per pixel. You certainly don't want an O(n) intersection test with your geometry, and to hit some kind of O(log n) you will need a spatial subdivision tree of some kind. The problem that you will now face is that every ray traverses the tree in a slightly different order. This means that memory locality amongst your cores is a absolute bitch.

      Either replicate *all* of your geometry into huge local memories for each thread (not feasible). Or try and cover the latency with throughput. Of course high-throughput on a GPU depends entirely on memory coalescing (not possible because the access patterns diverge in each thread) and a high arithmetic to access ratio (not really going to happen during tree traversal). Then you have the smaller issues like the SIMD restrictions that mean every thread in a workgroup must execute the same trace, so both sides of branches are run and recursive traversal functions are pig-slow.

      There is some really, really nice work out there. But it is hideously inefficient because the problem does not map onto the architecture. The Sparse Efficient Volumetric work from (siggraph 2 years ago?) shoots about 140Mray/s on a GTX-580. It looks pretty gorgeous, but it expands out all of the geometry into 2.7GB on the card to make the approach a little bit closer to brute-force and spend less time on processing acceleration structures. But that card can hit 800Gflop/s so each ray is still costing 6000 arithmetic instructions (or more likely their equivalent as they are memory bound). They are not computing hundreds of bounces per ray on average, that huge cost is because their arithmetic to access ratio is so bad, and that is a direct result of it being so difficult to parallelise the ray processing.

      Of course dynamic scenes are much, much harder than these minor problems that you get for static scenes...

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    53. Re:Ray Tracing != Ray Casting by smallfries · · Score: 1

      What do you think memory access coalescing is, and why do you think it needs to be on aligned boundaries? Exploiting spatial locality of reference is still a cache, even it only has a single line. Given the huge impact of non-aligned access within a warp it seems silly to pretend that a GPU is not a cached architecture.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    54. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Many people also dismiss the complexity of supporting algorithms and other operations that the dataset might require.

    55. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      Did you just like skip the summary?

      He considers ray TRACING to winning out eventually. He has been using ray casting since wolfinstien.

      The big bottleneck is ray tracing is memory bandwidth. Things newer cpus are just *starting* to address.

      Currently memory goes over a big blocky bus that is external to the CPU. As the CPU ends up consuming memory other memory methods become available. Instead of simple 2x2 or 4x4 switches. They can have 64x64 switches and very wide bandwidth.

      It is just a matter of speed and bandwidth. It will work eventually. But it will be a *long* time from now. Eventually there will be *no* cache. Memory will be fast/close enough for the cpu/gpu to use it.

    56. Re:Ray Tracing != Ray Casting by Anonymous Coward · · Score: 0

      We CS types know about memory, and know that complexity is not only about processing time, and that processing time is not only about cpu time. Only an idiot or a freshman would ignore that.

    57. Re:Ray Tracing != Ray Casting by MBraynard · · Score: 1

      In the long term, it is not Ray Casting or Ray tracing that will win out, but Ray Charles because you got the right one baby!

    58. Re:Ray Tracing != Ray Casting by NoSig · · Score: 1

      That is a misunderstanding - the objection is not that the conclusion is wrong, it's that your argument for it was wrong. Your original argument is not helped by coming up with a different argument that shows the same thing. I told you to use practical evidence instead of incorrectly applying theory, and then when you did that, you think that that shows that what I said was wrong.

  4. Does anyone actually listen to him by Osgeld · · Score: 0

    outside of the quake supernuts? Yes he revolutionized video games by taking a then decade old trick and using a faster pc to redraw it in real time, his company ended up making a FEW ok but nothing spectacular games, and had made a few engines that the competition blew away a month later

    Why after all this time do people still hang on to his every word? Its just some dude, not Jesus.

    1. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 0

      Id rater listen to him than jesus, what does that tell you?

    2. Re:Does anyone actually listen to him by discord5 · · Score: 1

      Why after all this time do people still hang on to his every word? Its just some dude, not Jesus.

      By all means, feel free to do something more noteworthy and become the new authority on the subject at hand. Until then, I think I'll continue feeding my Savior Reincarnate shrine its daily snackrifices.

    3. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 0

      Its just some dude, not Jesus.

      Duh, we know the difference between Carmack and Romero.

    4. Re:Does anyone actually listen to him by TehNoobTrumpet · · Score: 1

      To be fair, Jesus was also just some dude. Possibly.

    5. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 0

      To be fair, Jesus was also just some dude. Possibly.

      Dude I know Jesus, he does my carpentry work.

    6. Re:Does anyone actually listen to him by darkwing_bmf · · Score: 1

      To be fair, Jesus was also just some dude. Possibly.

      No, Jesus wasn't the dude. He was the dude's bowling rival.

    7. Re:Does anyone actually listen to him by ddt · · Score: 2

      There are a lot of reasons people still follow him closely.

      He's really smart, hard-working, and open with his opinions. If something blows, he doesn't sugar coat it out of fear for his relationship with the company whose product he's bagging on.

      He's also fiercely empirical. Moreso than a lot of his competitors, he doesn't buy into his own bullshit. If he has an idea, he makes an experiment to test it, and if it doesn't cut the mustard, he adjusts his view on the subject. He reverses his opinions over time and points out when he's been wrong. You'd think that trait would be common amoungst coders, what being lovers of science and engineering in general, and you'd be wrong.

      He's also open with his source code, and a lot of coders have actually learned how to write games by reading his source for Doom & Quake. In addition to being a fast coder, he writes very clean code with a very crisp style, and that code has been a really positive influence on the next generation of game programmers.

      But if you're looking for Jesus, you need look no further. I was one of the first coders John hired, and if you recall, Jesus is the *son* of God, and like Jesus, I was cast out from Heaven to muck about with mortals and spread the good word. Also, unlike John but more like Jesus, I believe my own bullshit without the need to test it. Crucially, if you look up "gamer" under Google images, I'm on the first page, and you'll see conclusively that I can rock the long Jesus hair. I am also skinny, emaciated, and have been repeatedly crucified. If you choose to become a disciple, I will welcome you with open arms. I just won't respect you.

    8. Re:Does anyone actually listen to him by Grizzley9 · · Score: 1

      Id rater listen to him than jesus, what does that tell you?

      That idiots post as anonymous cowards on Slashdot.

    9. Re:Does anyone actually listen to him by XanC · · Score: 2

      So how many games will the 'Horns win this year?

    10. Re:Does anyone actually listen to him by h4rr4r · · Score: 1

      Yeah, it is real person not some quite likely fictional historic figure. What exactly is your point?

    11. Re:Does anyone actually listen to him by MattSausage · · Score: 1

      Have you not read this?

      That's a pretty good reason to take him seriously.

    12. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 0

      You clearly don't know my pal, Jesus. Funniest little Mexican dude you'll ever meet. Anyone who wouldn't want to listen to him is just nuts.

    13. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 0

      He also does my lawn work! And I heard he does my friend's pool work! That Jesus sure does get around!

    14. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 1

      Shut the fuck up Donny, you're out of your element.

    15. Re:Does anyone actually listen to him by Desler · · Score: 1

      Great, but John Carmack admitted he didn't write the code and the derivation of the magic constant goes back many years prior to stuff SGI did.

    16. Re:Does anyone actually listen to him by Anonymous Coward · · Score: 0

      Oh look, it's someone who thinks it's super trendy to hate on popular figures.

      People don't "hang on his every word" but he does tend to be insightful and in general worth listening to. A lot more than some random guy on Slashdot trying to act cool.

    17. Re:Does anyone actually listen to him by Stormwatch · · Score: 1

      Crucially, if you look up "gamer" under Google images, I'm on the first page

      Lemme check... holy crap, is that really you? Man, you were awesome in '300'.

    18. Re:Does anyone actually listen to him by Daniel+Phillips · · Score: 1

      Judging from the Rage trailers it is safe to say that JC has set the bar higher once again. It still looks like Quake with cars so I'm not much interested in actually playing it, but interestingly you can see some intrusions from the Bethesda culture in the form of ambient banter and quests. It seems like a no brainer that John has already turned to the truly open world problem so Bethesda can realistically use his next engine for a proper walk-around.

      --
      Have you got your LWN subscription yet?
    19. Re:Does anyone actually listen to him by mikael · · Score: 1

      Still fascinating though.

      It's always amazing how there is a faster way of doing calculations in using a few simple instructions rather than one complex instruction. Swapping registers using XOR instructions, using SUB to clear registers, and using integer arithmetic to manipulate floating point data were the ones I heard about.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    20. Re:Does anyone actually listen to him by ifrag · · Score: 1

      At the time, it probably was faster, which is good because Quake III ran on some really old hardware. Unfortunately on the CPUs of today it's actually slower, at least with the 20k or so operations I benched with.

      --
      Fear is the mind killer.
  5. You can have both rasterization and ray-casting. by Suiggy · · Score: 2

    The Euclideon infinite detail technology was exposed in a recent interview to be efficient sparse voxel octree ray-casting with contours (instead of axis-aligned cubes), which was previously investigated by nVidia researchers and others.

    http://www.tml.tkk.fi/~samuli/publications/laine2010tr1_paper.pdf

    It's still not quite competitive enough with conventional rasterization techniques if you also try to do decent lighting with it along with all of the other stuff that goes into developing a game. Maybe in couple of more GPU generations. And in the Euclideon demos, you can see they're only getting 15-25 frames per second, and yet they're using a simplistic lighting model with a single global light.

    Also, you can merge polygon rasterization and voxel ray-casting under the same rendering architecture if you employ deferred shading and composition. That way you can have your static models as a voxel-octree that you ray-cast into your geometry-buffer, rasterize your dynamic polygonal models in a second pass into the same geometry-buffer, and then perform your lighting passes with the geometry-buffer as input, and then your final scene composition and post-processing passes. In fact, I bet you that in 5-6 years time, this will become a standard practice among PC game developers. Unfortunately, I think the upcoming next console generation, with hardware from Sony and MS due out next year, will miss out on being able to handle this.

  6. Hey! by toby · · Score: 4, Funny

    Speak for yourself! ;-)

    --
    you had me at #!
    1. Re:Hey! by davester666 · · Score: 1

      You must be new here...

      --
      Sleep your way to a whiter smile...date a dentist!
    2. Re:Hey! by Anonymous Coward · · Score: 0

      Ba-dum Kishhh.

  7. Best Yet by Kid+Zero · · Score: 1

    (uninspired content viewed at the molecular level is still uninspired content)

    Best quote I've seen yet about this.

  8. Too much dependence on drivers by loufoque · · Score: 1

    They rely too much on drivers, they should just attack the hardware and make their own renderer rather than relying on crappy OpenGL and DirectX...
    But of course, they don't really want to invest in R&D. Game development is more of a "do something dirty quickly and then throw it again" kind of thing.

    1. Re:Too much dependence on drivers by hedwards · · Score: 1

      That would be a tremendous step backwards. You can get away with doing that if you're programming for a console, in fact that's how it used to be done. The problem is that as soon as you've got any variation at all in the hardware you very quickly start to have to code for every individual unit that you're going to support.

      Need multiple resolutions? Well, you're going to have to make sure you code for them rather than handing them off to a 3rd party library. Unit have extra RAM? Well, you're going to have to adjust the code to deal with that as well.

      Sure, it is much faster to run code like that, but it's also not portable really at all and you don't get any of the benefits that come from using a library.

    2. Re:Too much dependence on drivers by NoSig · · Score: 1

      That is the bad old days of computer graphics and sound - if a given game wasn't written for your particular hardware, too bad. It's hard to write to the hardware when there is a proliferation of distinct graphics cards out in the world and many more are added every year. On top of that, the way to talk to a given graphics card is often secret. There's a reason that people use OpenGL and DirectX.

    3. Re:Too much dependence on drivers by SuiteSisterMary · · Score: 1

      Even a few years ago, hell, probably still, for all I know, there was the DX8 path, the DX9 path, the openGL-nvidia path, the openGL-ATI path, and so on.

      Or fifteen years ago, when part of the setup was picking exactly the correct video mode (hope your monitor and card support VESA 2.0 modes) and sound card, down to IRQ and DMA settings....

      --
      Vintage computer games and RPG books available. Email me if you're interested.
    4. Re:Too much dependence on drivers by LWATCDR · · Score: 1

      Let me make a guess. You don't program do you?
      1. AAA games already cost a lot to make. You want to spend $200 for a game?
      2. Hardware is changing fast. If you write for the hardware what hardware do you write for? Which card? All of them? What about the cards that come out while you are spending the three years developing the game?

      Now you may be confusing drivers with game engines but even then you would be wrong just not insane.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    5. Re:Too much dependence on drivers by loufoque · · Score: 1

      The problem is that as soon as you've got any variation at all in the hardware you very quickly start to have to code for every individual unit that you're going to support.

      If your software is of good quality, it is generic and easily retargetable.

      Also, if you just consider GPUs, the interfaces to program them (CUDA in particular) has been there for quite a few generations and probably will stay for a long time still.
      And all NVIDIA (and probably also AMD) drivers use the same code, with relatively few low-level details that change depending on model.

    6. Re:Too much dependence on drivers by loufoque · · Score: 2

      Let me make a guess. You don't program do you?

      I write software tools for high-performance computing that work on a variety of hardware, including all variations of x86, POWER, PowerPC and Cell, ARM, GPUs, multi-core, clusters... and other more confidential architectures (many-core, VLIW, FPGA, ASICs...)
      Supporting a lot of different hardware is not an insurmountable problem if you have a good design (and a good test farm).

      Now you may be confusing drivers with game engines but even then you would be wrong just not insane.

      What we call graphics drivers nowadays is not just the code that allows to interact with the hardware. It's an OpenGL and DirectX implementation.
      With the advent of programmable GPUs, this abstraction has become much too high-level. A C compiler is quite a better one.

    7. Re:Too much dependence on drivers by loufoque · · Score: 1

      You say this as if the market wasn't essentially restricted to two vendors, with one clearly preferred by gamers.

    8. Re:Too much dependence on drivers by 0123456 · · Score: 1

      You say this as if the market wasn't essentially restricted to two vendors, with one clearly preferred by gamers.

      But a game written for OpenGL or Direct3D in 2001 still runs on modern hardware. A game written to write directly to 2001 hardware does not.

      Writing directly to hardware without a standardised API is retarded and pretty much guarantees that in ten years time the software won't work or performance will be lousy if it does.

    9. Re:Too much dependence on drivers by NoSig · · Score: 1

      They make more than 1 graphics card each. Btw Intel sells more graphics cards than anyone else. You've probably got one integrated on your computer without knowing about it. There are also many flavors of each graphics card that the big companies come out with.

    10. Re:Too much dependence on drivers by RyuuzakiTetsuya · · Score: 1

      At first i thought you were insane because writing for individual vendors was kind of crazy. However, between Intel, nVidia and ATI, you've cast a pretty wide net.

      Then I realized it's even crazier wanting nVidia, ATi and Intel to all make their hardware communicate the same way through out the generations.

      --
      Non impediti ratione cogitationus.
    11. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      I think you have an unrealistic impression of what exactly is in a modern GPU. It's not the same as a CPU, there may in fact be multiple different processor cores, and several other blocks that have to be configured correctly, state that has to be managed between the blocks, control streams programmed, interrupt handling and so on.

      Yes, it's not an insurmountable problem, but a GPU driver is a significantly complex piece of software in its own right and expecting that work to be duplicated multiple times for each product from each vendor for a single game engine is a pretty hefty ask. It'll be out of date long before it's finished.

      Of course, what you could ask for is a much lower level API and therefore a leaner driver. This isn't an entirely unreasonable position, but who's going to drive this? There are also enough technical differences between the four major vendors that it's unlikely to happen any time soon.

    12. Re:Too much dependence on drivers by loufoque · · Score: 1

      But a game written for OpenGL or Direct3D in 2001 still runs on modern hardware. A game written to write directly to 2001 hardware does not.

      This is irrelevant, since the industry does not try to make money out of old games. What they want is to make money at launch, then milk the cash cow for some time with a couple of people working on DLCs, then move on.

      Also notice how your old Playstation games don't work without a Playstation (short of using an emulator). This is not a serious issue. Games are not meant to yield profits for life, so if they're limited to the lifetime of the platform it's fine.

      Writing directly to hardware without a standardised API is retarded and pretty much guarantees that in ten years time the software won't work or performance will be lousy if it does.

      What matters is that the game is groundbreaking and people want to buy it when it goes out.

      Back when the Cell was released, it was a very powerful (it still is, but to a lesser extent). Game developers could have used it instead of the graphics card to do very innovative things (and Sony actually supported this idea). They didn't, even though it was available in many homes.
      Game developers just can't handle doing serious R&D in graphics. They need hardware manufacturers or middleware people to do it for them. I know for a fact there are only a couple of Cell experts in the whole of Ubisoft.

    13. Re:Too much dependence on drivers by loufoque · · Score: 1

      All flavours of NVIDIA cards run the same base OpenGL implementation, likewise for ATI/AMD.
      Intel GMA cannot even start most recent games.

    14. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      All flavours of NVIDIA cards run the same base OpenGL implementation, likewise for ATI/AMD.

      Bullshit they do. Maybe within 1 generation but that is not true outside of generations.

    15. Re:Too much dependence on drivers by loufoque · · Score: 1

      CUDA and OpenCL should be all you need.

    16. Re:Too much dependence on drivers by NoSig · · Score: 1

      If you listen to the interview, you'll hear John Carmack saying that built-in cards might out-perform dedicated cards for some things in future if they grant better memory access by virtue if using system memory directly. How do you know that the hardware interface between graphics cards never change? That doesn't sound right to me, but if you have an inside source, feel free to enlighten us.

    17. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      If your software is of good quality, it is generic and easily retargetable.

      Or you could just skip the part where you reinvent OpenGL or Direct3D and just use OpenGL or Direct3D.

    18. Re:Too much dependence on drivers by RyuuzakiTetsuya · · Score: 1

      I wonder how much of a bitch a pure CUDA port of Quake would be.

      --
      Non impediti ratione cogitationus.
    19. Re:Too much dependence on drivers by hedwards · · Score: 1

      I spent a very small amount of time playing around with hamlib for the GBA and that's how things were done on it. If you wanted to draw something on screen, there'd be a particular set of registers to write to, same for most other things that you might want to do. All in all it was a pretty nice set up.

    20. Re:Too much dependence on drivers by LWATCDR · · Score: 1

      CUDA and OpenCL are driver dependent. That is still not writing to the hardware.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    21. Re:Too much dependence on drivers by chammy · · Score: 1

      All flavours of NVIDIA cards run the same base OpenGL implementation

      Nope, sorry. There is a reason why there exists a "legacy" Nvidia driver.

    22. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      This is slashdot, we all know whats in our computer.

    23. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      "Generic" and "easily retargetable" means "slow" when you are doing heavy numerical stuff like this.

    24. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      Is this "high performance" computing as in "optimized assembly language"? Because I find it hard to believe you would target that many platforms at that level. Look at how much effort ATLAS required to develop, and that is just the most basic stuff (linear algebra), trivial in comparison to the effects in a modern 3d engine. Keep in mind this stuff requires optimizations that compilers (currently) can't produce, like memory access patterns, so simply saying "include a compiler in the driver" isn't the solution.

    25. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      If your software is of good quality, it is generic and easily retargetable.

      So... by writing assembly code for video cards (Modern video cards execute their own mini-operating system which the driver installs when starting up) which varies per version (look at the open source ATi drivers on Linux for the 3000/4000/5000/6000 series of cards, there are about 15 different mini-OS versions) you can somehow be portable?

      The whole point of drivers was to abstract this crap away, in the old days of DOS you either had a SoundBlaster or you had no sound. The game either supported it or it didn't, an equal or better device didn't matter, no drivers meant that it only worked if it existed when the game was coded and the developer cared enough to support it.

      Also, if you just consider GPUs, the interfaces to program them (CUDA in particular) has been there for quite a few generations and probably will stay for a long time still.

      You clearly have no idea what you are talking about. CUDA is a C-like language which is compiled into per model machine code by the driver and support libraries. If you bypass the driver then you are at square one. Never mind the fact that CUDA is GPGPU and doesn't give you direct access to things like the framebuffer and ROPs, you have effectively bypassed the dedicated hardware that makes the whole process fast in the first place.

      And all NVIDIA (and probably also AMD) drivers use the same code, with relatively few low-level details that change depending on model.

      See the first quote. If there were "relatively few low-level details that change" then there would be no new versions of cards, they'd just keep selling the same ones over and over.

      Personally, I like my games to keep working on new hardware, if games were still written in the DOS style, do you believe that games written in 2000 would still work on Windows 7? (Remember that Voodoo was the big video card brand and that company is now defunct) There are enough problems with crap that actually used Glide (Voodoo specific hardware API) instead of DX/OGL that I cringe at the thought of it being more widespread.

    26. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      Supporting a lot of different hardware is not an insurmountable problem if you have a good design (and a good test farm).

      Sorry, design is proprietary and a Trade Secret so you don't get to have it.
      Test farm is expensive but possible... if you want to lag months or years behind the hardware and have to constantly test & revise on new equipment.

      What we call graphics drivers nowadays is not just the code that allows to interact with the hardware. It's an OpenGL and DirectX implementation.

      Well.... I suppose that's technically true, sort of. But you're confusing the issue- the implementation isn't in the drivers that run on your CPU, it's on the graphics card with the GPU. The only time the driver instance does any OpenGL or DirectX implementation is when you're missing the hardware support and that's a special case which isn't all that critical to this discussion.

      With the advent of programmable GPUs, this abstraction has become much too high-level. A C compiler is quite a better one.

      And this is how we all know you don't write code. What do you think most of us use when we're writing software that uses OpenGL or DirectX? Are you trying to say you really want to write hardware-specific microcode for every card you want your software to run on? And deal with all the architectural quirks each one has when interfacing with various memory/chipset layouts from a myriad of motherboard manufacturers?

      Good Fucking Luck with that, buddy. In fact, that's why you're trolling on slashdot instead of putting your money where your mouth is. Because there's nothing stopping you from going that route right now- you are fully free to ignore DirectX and OpenGL completely, and write your own implementations.

    27. Re:Too much dependence on drivers by edxwelch · · Score: 1

      Actually, he's only concerned about the overhead of texture upload, not the entire driver. Surely, that would be easy to fix with an OpenGL extension or something?

    28. Re:Too much dependence on drivers by gl4ss · · Score: 1

      Cell was seriously over hyped as platform for generic computing - as was ps3, which is seriously short on memory. dreamcast would make a fine example of using shitty general sdk(the wince based one) vs. doing native, because on it

      now, there's a difference between game engine developers and content-jockeys. content jockeys just create content on autodesk tools, totally dependent on old school artistic plot writing and art creation - thus, their games very rarely manage to amaze people on the virtual world side of things(elite 2 frontier first encounters is the direct opposite of this, for example, while a game like mass effect 1/2 is just that, a game where nothing amazes on how it was possible to execute because you know the game could have been created using original unreals udk - or even with halo's engine, except it would then have had better car physics).

      thing is, those content jockeys are a dime a dozen, because that's the sort of thing you can teach at courses and the things they create they can see as they create.

      however, just targeting modern cards with pure self-boot code would usually mean that your stuff wouldn't work even 2 months from release if it worked at even the release, now if gpu development stalled for a few years AND the gpu interface specs were available, we would start seeing those again, selfboot dvd titles(they would actually put a little dent on piracy, but just a little, interestingly the original pc pirates! was a self boot title, at least the version I had).

      also for reasons of not having to care that much of developer access enabling pirating of native titles these interpreted virtual machine environments are really tempting for hw manufacturers, since then they can just give the sdk to just about anyone(xbox live etc) so we're mostly seeing a move away from bare to metal development, making things go backward or rather seem like game complexity is stalled at the moment - it seems though that the actual problems lie along project management approaches to game development, since when did you last time see a virtual world that was as complete as ultima 6 had?

      --
      world was created 5 seconds before this post as it is.
    29. Re:Too much dependence on drivers by Anonymous Coward · · Score: 0

      I want to understand the context of your statement. You said, they rely too much on drivers. I want to know what you mean by that. Do you mean that a game could run faster if they wrote all the drivers? I'm willing to concede that it might be possible (though, who understands the hardware better than the company that designed and built it).

      Do you mean that a company that invested and wrote their own drivers could be more successful? Do you honestly believe that investing in R&D to support current hardware would be worth it? They'd have to re-write all their tools when new hardware was released.

      I also want to point out that you write tools for high performance computing. Would you say the same of your customers, that they should write their own tools? Because that is essentially what the drivers are.

      It may be possible and it might be faster. But why does that mean the should do it? Why would be a good investment?

    30. Re:Too much dependence on drivers by tempest69 · · Score: 1

      I'm going to agree, at least partially. I think we do rely too much on drivers to overcome the problem of a very diverse video card system.

      This bugs me.
      I see no compelling reason for the video manufacturers to postpone a more modern standard for video cards. Video cards have simple compatibility at a ~20 year old standard. It is really depressing to see that when I install an OS, the video is set to some horrible resolution. When I go to download the driver it's a mess, because the site is nearly unusable at the ancient resolution. Creating a card that could have limited functionality (up to 2560X2048 video DX 6/ OpenGL 1.0 capable) with the new equivalent of a "vga" driver seems like a reasonable possibility.

      I understand that it would add some minor cost to each video card, but it would make life so much easier.

      DirectX and OpenGL are really quite nice, and getting someone who has the skill/sanity to rebuild the graphics is not going to be cheap, and the results will probably look amateureish.

  9. id dosen't want R&D? by SanityInAnarchy · · Score: 1

    Really?

    I mean, the main criticism for id games has been that they are less games and more tech demos. Practically every game engine id ever sold has been used for much more interesting games by other people, but id still gets license fees.

    If they don't invest in R&D, why are they doing their own engine design at all, and more importantly, just what are they investing in?

    And even if you're right about OpenGL and DirectX being "crappy", which I highly doubt, the fact is that they are at least somewhat portable across hardware. Suppose he's right, and Intel integrated graphics suddenly win. If they went directly to the hardware, as you suggest, they'd need to port their game to Intel cards, or that game wouldn't work with those cards. We'd be back to the bad old days when you actually had to check the system requirements for your sound card and video card manufacturer.

    --
    Don't thank God, thank a doctor!
    1. Re:id dosen't want R&D? by loufoque · · Score: 1

      It wasn't a commented directed at Id in particular, but at the game developer industry in general.

      We'd be back to the bad old days when you actually had to check the system requirements for your sound card and video card manufacturer.

      Don't you have to do this anyway?
      It's true consoles have stopped PC games from requiring new hardware, but a few years ago, you needed to replace your graphics card every other year to play new games.

    2. Re:id dosen't want R&D? by Desler · · Score: 1

      Don't you have to do this anyway?

      No. Gone are the days were you have to make sure you have a Sound Blaster 16 vs some other card because the game was only written to that specific sound card. Games usually give what generation versions of a video card you would need if running on various manufacturers but with probably almost no exceptions are games written to a specific manufacturer's audio or sound card.

    3. Re:id dosen't want R&D? by Truekaiser · · Score: 1

      Directx is only 'cross platform' if you count different video cards and the xbox360 as different platforms.
      Opengl 'is' cross platform, you can run it on your pc, it's used on mac's, it's used in linux, it's used in most cellphones, it's used in most consoles(sans xbox and xbox360).

    4. Re:id dosen't want R&D? by loufoque · · Score: 1

      As I said in another subthread, it doesn't matter if you have choice since there are only two manufacturers anyway (with Nvidia being better supported by games in general).
      Games usually can't even run on Intel GMA even on the lowest settings.

      And if you need to replace your graphics card every two years to run new games, it's no different than buying a Sound Blaster 16 or whatever other fancy hardware a game at the time required.

    5. Re:id dosen't want R&D? by Lunix+Nutcase · · Score: 1

      Except that for unlike what you are talking about that I don't need to always keep around the Sound Blaster 16 to play that old game. Written to a portable API means I can use that same game on an old Sound Blaster or my new integrated sound card. This is what you seem to be missing.

    6. Re:id dosen't want R&D? by Lunix+Nutcase · · Score: 1

      Directx is only 'cross platform' if you count different video cards and the xbox360 as different platforms.

      I'm pretty sure that an Xbox 360 and a PC are different platforms. "Cross-platform" only means "runs on different platforms" it does not imply some minimum number of platforms. If I write something that works on both OS X and Windows it is "cross platform" even if it won't run on Linux or a cellphone.

    7. Re:id dosen't want R&D? by loufoque · · Score: 1

      This is irrelevant, game developers don't care about whether you can play old games on new hardware. That's not their business model.
      Again, I've already addressed this in another subthread. Go read it for more details.

    8. Re:id dosen't want R&D? by Lunix+Nutcase · · Score: 1

      Sorry, it's not irrelevant despite what you continue to claim. Your idea leads to more code needing to be written, far more testing is needed and programs are far more likely to break and have issues than what is written now. Basically your idea is fucking stupid on pretty much all counts.

    9. Re:id dosen't want R&D? by Truekaiser · · Score: 1

      It's not cross platform because xbox360 runs on windows built for the ppc chip inside. cross platform would be directx being able to run on mac os x.

    10. Re:id dosen't want R&D? by loufoque · · Score: 1

      The idea is to ditch that model of "write once then throw away" and replace it with "write a good engine and reuse it throughout all your projects".
      That's what the big game development companies are moving towards. The ones that can't do their own or can't license that of a third party will have to fall back to casual games that don't require much processing power.

    11. Re:id dosen't want R&D? by SanityInAnarchy · · Score: 1

      I didn't say "corss-platform", you did. I said "somewhat portable across hardware," which is true -- you can develop a game for nVidia, ATI, and yes, even Intel, and if you stick to the API, you don't need code specific to any of those cards.

      --
      Don't thank God, thank a doctor!
    12. Re:id dosen't want R&D? by SanityInAnarchy · · Score: 1

      a few years ago, you needed to replace your graphics card every other year to play new games.

      This is both irrelevant and untrue.

      Untrue, because any decent game at that point would be able to turn the settings down to where you could play on older hardware. You still had a quicker upgrade cycle, but it wasn't that bad, especially if you stay just behind the curve -- you could often buy at least a new video card for under $100, and when the PS3 came out, it was possible to build a new gaming PC for less.

      Irrelevant, because there were at least 5 or 6 different sound card manufacturers when we had to check for that. There seem to be even more now, but I'm not sure, because it doesn't matter -- sound has "just worked" for awhile, because we use higher-level abstractions like DirectSound and OpenAL, so your game can just play sound and it just works.

      So, even if I needed a new video card every few years, I can still play the original Half-Life with the same shiny new video card I used to play Portal 2.

      --
      Don't thank God, thank a doctor!
    13. Re:id dosen't want R&D? by SanityInAnarchy · · Score: 1

      game developers don't care about whether you can play old games on new hardware.

      Yet I can, whether they care about it or not. I'd like to be able to keep doing that, so...

      That's not their business model.

      ...I don't plan to be buying games which target a specific piece of hardware if I can avoid it.

      --
      Don't thank God, thank a doctor!
  10. ARM cores? by SanityInAnarchy · · Score: 1

    Did anyone else catch that?

    That's probably the most interesting thing he said all day. Throw an ARM core on the GPU, provide some sort of standard API for using it, and you eliminate all those pesky latency issues. Modern GPUs have enough RAM that one could potentially push the entire renderer onto the GPU, with the CPU and main memory only being responsible for game logic.

    Of course, he also seems to be implying that this might go the other way, with integrated graphics winning out...

    --
    Don't thank God, thank a doctor!
    1. Re:ARM cores? by Rockoon · · Score: 1

      I thought it was interesting that he said hes spent the last 1.5 years working on raytracers. Carmack is very much a research guy now, not a developer. He pays others to develop.

      --
      "His name was James Damore."
    2. Re:ARM cores? by gl4ss · · Score: 1

      pyramid3d.

      shit idea, computer on a board. yo dawg..

      anyhow, graphics AND game logic(game physics) are very closely connected. when they're not, you end up with stuff like nwn-engine derived shit(where the game is like a game from 386 era, but with plastered on super fancy graphics, while the game still just runs basically in a 2d field, or when a game is full of let's say grass thats shaded, but while that grass has no meaning to gameplay or even ai's field of view).

      --
      world was created 5 seconds before this post as it is.
    3. Re:ARM cores? by mikael · · Score: 1

      That was done 20 years ago with TIGA graphics boards. There was a simple BSP tree demo (flysim) which downloaded the scenery database and renderer into the cards memory. All the host PC did was to convert keyboard events into camera motion commands.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    4. Re:ARM cores? by SanityInAnarchy · · Score: 1

      shit idea, computer on a board. yo dawg..

      Too late. My current video card has many times more RAM than my first computer. It also has two GPUs, which can perform certain tasks ridiculously faster than my CPU despite "only" operating at a few hundred megahertz. Tons of stuff can be trivially offloaded to the point where the CPU is just coordinating things, and we hardly even need such a low-latency connection, at least for non-game-related task.

      ARM chips are so small, cool, cheap, such a small power draw that they're insignificant next to everything else on that board, but there are still things that even a modest ARM chip could do much better than a GPU. Still, it's not a replacement for a good CPU -- it's more a console on a card, and still not really, you still almost certainly want a decent CPU doing some of it.

      anyhow, graphics AND game logic(game physics) are very closely connected.

      I didn't say physics, I said logic. Physics is traditionally part of it, but it's getting to the point where it could be as external as graphics. There's a lot of stuff which doesn't need to impact gameplay, and would be problematic if it did. For example:

      ...a game is full of let's say grass thats shaded, but while that grass has no meaning to gameplay or even ai's field of view).

      Suppose the grass were treated as solid, so that it was difficult to walk through -- the player could easily be "stuck" between blades of grass. Obviously, you want to move past that to even more realistic physics, where the player simply tramples the grass. Still, as a player, I'm not in complete control of my avatar, so for a lot of situations, it makes sense to give me a relatively simple environment. Probably the cleanest solution is to treat the field of grass as a single surface with the special property of "has grass", so if we want it to have gameplay effects, do it from that perspective.

      Affecting AI FOV is similar -- tricky to do right, probably much easier to just say "Hey, there's grass there," and treat it as a solid block with a fixed value of translucency, so you're less likely to be noticed/shot if you're hiding behind it.

      Do that, and you avoid a bunch of hard problems, you hopefully avoid the NWN issue, but you can also have tons of individual blades of grass, so vivid you could smell them, waving in the wind. That's the kind of thing I would think you could do without the CPU, both to improve the eye candy and free the CPU up for more interesting things -- AI, maybe.

      --
      Don't thank God, thank a doctor!
  11. RIGHT by Anonymous Coward · · Score: 0

    Nice to see somebody who is RIGHT on the Internet for a change.

    Go John.

    Wish ID would stop publically supporting DirectX but I guess they have to watch the bottom line, and we all know they duplicate everything they do in the one true GL (the open one).

  12. Automata Engine 1.0 by SICKECHO · · Score: 1

    The Automata Engine 1.0 looks to be a step in the right direction, some of it's features:


    * multilayer 3D canvas, composed of pseudo-voxels
    * voxel-based sprites, composited via ink effects
    * 3D sprite-based lighting
    * cellular automata rule engine
    * multiple rendering paths for optimization
    * multithreading
    * audio engine, configurable via externally defined "rules."
    * time-sliced stats module -- allows sound to be tied to the number of voxels, for instance
    * game levels and level transitions
    * movers, colliders, streakers (objects that add cells into the environment)
    * two camera impementations: simple and "follow"
    * XBox, Windows, and soon Windows Mobile 7


    Relevant links:
    http://www.newlifeinteractive.com/main/
    http://www.youtube.com/watch?v=mOu9QhWGla0