9 ms·
I think the original Toy Story could be done in real time with modern graphics cards. The Quora answer below was talking about CPUs in 2011, and it seems that p
by AboutTheWhisles 9y ago
I think the original Toy Story could be done in real time with modern graphics cards. The Quora answer below was talking about CPUs in 2011, and it seems that plenty of added time (relatively speaking) was due to network and disk infrastructure not having the same 1000x speedup.
A more subtle aspect to consider is that CPUs might have increased in raw computation by huge orders of magnitude, but memory latency means that the same programs from 20 years ago will run much faster, but not at the same multiple of the raw flops. This implies that to get the full effect of a cpu or gpu, the software would have to be rearchitected to an extent to get the full benefit of modern hardware.
Toy Story didn't use any ray tracing, Renderman at the time was reliant on shadow maps. Because of the lack of global access to the scene from shaders, the local illumination Reyes architecture should map extremely well to GPUs. I think it is possible that someone will do similar things with Vulkan or openGL compute buffers if they haven't already.
- dahart 9y agoFor raw compute cycles, I think you're right, but... The one place where today's GPUs aren't as good as Toy Story is filtering & anti-aliasing. The texture filtering and pixel (camera) filtering in software renderers is much higher quality and more expensive than GPUs can (typically) do still. You could roll your own high quality texture sampling in CUDA or OpenCL, but the texture sampling that comes with GPUs is not great compared to what Renderman does. BTW, textures & texture sampling are a huge portion of the cost of the runtime on render farms. They comprise the majority of the data needed to render a frame. The entire architecture of a render farm is built around texture caching. Just getting textures into a GPU would also pose a significant speed problem.
- AboutTheWhisles 9y ago> The one place where today's GPUs aren't as good as Toy Story is filtering & anti-aliasing This only makes sense if you are locked in to some texture filtering algorithm already, which isn't true. CPU renderers aren't doing anything with their texture filtering that can't be replicated on GPUs. Where the line should be drawn by using the GPUs native texture filtering and doing more thorough software filtering would be something to explore, but there is no reason why a single texture sample in the terms of a software renderer has to map to a single texture sample on the GPU. > BTW, textures & texture sampling are a huge portion of the cost of the runtime on render farms. They comprise the majority of the data needed to render a frame. I'm acutely aware of how much does or does not go into textures. Modern shaders can account for as much as half of rendering time, with tracing of rays accounting for the other half. This is the entire shader, not just textures and is an extreme example. > The entire architecture of a render farm is built around texture caching. This is not true at all. Render farm nodes are typically built with memory to CPU core ratios that match as the main priority. > Just getting textures into a GPU would also pose a significant speed problem. This is also not true. In 1995 an Onyx with a maximum of 32 _Sockets_ had a maximum of 2GB of memory. The bandwidth to PCIe 3.0 16x is about 16GB/s and plenty of cards already have 16GB of memory. The textures would also stay in memory for multiple frames, since most textures are not animated.
- dahart 9y ago> This only makes sense if you are locked in to some texture filtering algorithm already, which isn't true. I said you could roll your own, didn't I? If you don't roll your own, you most definitely are locked in. All GPU libraries (OpenGL, CUDA, OpenCL, DirectX, Vulkan) only come with a limited set, none of which match the filtering quality that Renderman & other film renderers have. If you do roll your own, your performance is going to suffer, and not by a little. > I'm acutely aware of how much does or does not go into textures. Modern shaders can account for as much as half of rendering time, with tracing of rays accounting for the other half. That ratio depends entirely on what you're doing. It's meaningless. That said, Pixar people have said 10:1 in the past (Toy Story time frame) for shading:rasterizing. You mention ray tracing, are you assuming ray tracing? Why? Toy Story wasn't ray traced. > Render farm nodes are typically built with memory to CPU core ratios that match as the main priority. That doesn't contradict what I said, at all. > The textures would also stay in memory for multiple frames, I doubt that was true for Toy Story, and it was not true for the films I worked on circa Toy Story. Textures usage was "out of core" at the time. Texture & MIP tiles were loaded & purged on-demand into a RAM cache during a frame of render. Each renderfarm node also had a local disk cache for textures, to minimize network traffic. The amount of texture used during the render of the frame often (and I believe usually) exceeded the amount of RAM in our renderfarm nodes. You certainly can load textures on demand on a GPU, you just don't get any performance gain over a CPU when you do that. Aside from Toy Story era assets, in-core GPU textures are not possible with today's film texture & geometry sizes. Film frames with good filtering can easily access terabytes of texture. GPU core memory size & bandwidth is the single main determinant of whether studios can use GPUs for rendering today. Getting large (film sized, not game sized) amounts of geometry & textures onto a GPU is the main problem.
- AboutTheWhisles 9y ago> You mention ray tracing, are you assuming ray tracing? Why? Toy Story wasn't ray traced. I actually said that in my first post. > I said you could roll your own, didn't I? If you don't roll your own, you most definitely are locked in The point is that this is not something that is so computationally intensive that it would prevent it from running in real time, even when matching the filtering quality of PRman. > > Render farm nodes are typically built with memory to CPU core ratios that match as the main priority. >That doesn't contradict what I said, at all. You said that render farms focus on texture caching, and I'm telling you that is not true. I've built large render farms and the topic never comes up. Textures aren't nearly the focal point you are making them out to be. > I doubt that was true for Toy Story, and it was not true for the films I worked on circa Toy Story. Textures usage was "out of core" at the time. If you were rendering in real time, there would be no reason to unload textures from GPU memory and then put the textures back into GPU memory, so this isn't relevant. Film is rendered one frame at a time, however if the Reyes architecture were running in real time, the same workflow used for 2 hour frames would not be practical, nor does it weigh on whether real time would be possible here. > You certainly can load textures on demand on a GPU, you just don't get any performance gain over a CPU when you do that. That assumes that GPUs' only advantage is due to memory bandwidth, which isn't true, though that is irrelevant here, since there are plenty of GPUs with much more memory than the computers used to render Toy Story. > Aside from Toy Story era assets, in-core GPU textures are not possible with today's film texture & geometry sizes. Film frames with good filtering can easily access terabytes of texture. > GPU core memory size & bandwidth is the single main determinant of whether studios can use GPUs for rendering today. Getting large (film sized, not game sized) amounts of geometry & textures onto a GPU is the main problem. I'm not sure why you suddenly focused on modern GPU rendering for film. This thread was about whether Toy Story could be rendered in real time on modern GPUs, not modern film assets.
- deleted 9y ago[deleted]