All the 3D around the web is low-resolution, low-polygon, low-antialiasing based solution. In an other side off line CG rendering is all about high-resolution hight spec image processing. Between those two limits nothing exist. Well, not exactly, game engine and their more and more accurated renderer exist. There is a big deal of matter and market to get a solution balancing well the good and the bad of those two bounds. This lab is about a good compromise between low/real time CG and high-end off line CG.
In many case high-end Cg are asked to be display on a website. Not quite a big deal until customisation enter the game. What does the production pipeline become when a hundred or thousand possibilities have to be displayed? Here in Skylink we developped an off-line automation that allows all pre-rendered scenario to be display as simple image. This solution was adopted for the PENTAX K-r, K-x and now K-30 series with some 21,000 high resolution frames on-demand for the K-r for exemple. Obviously a real-time solution would allow more customisation but high-end rendering is not yet part of the client-side paradigm.
Is a 100% client-side HD rendering a dream?
Hint are out there that the web-browser may one day allow high-end rendering. Thanks to the Shader Language of the WebGL technology. A such solution mean that all the rendering happens in the Shader part of the rendering pipeline. And yet the rendering pass is quite long but the solution is there: a client-side high-end CG engine. Right now a lot of bottleneck make this technology out of reality for a market-oriented solution, expecially looking at how much it depends of the graphic-board of the viewer. But it will not be long until thing change and this state-of-art CG rendering become a main 3D online solution.
Or server-side rendering. What does that mean? We are not talking about the rendering farm that many giant CG companies are offering online. We are talking about server-side rendering for real-time solution. Quite different. How would this be possible. Well, let’s think about game engine renderer. Their accuracy is not as well defined as their off-line renderer counterpart but they are close. Very close in fact as sawn in the demo played during the last E3 event. In fact their accuracy is far enough for web-like content. Much better than any real-time client side solution out there. And their renderer execute a frame at 120 fps. Here is the point, 120 fps means a 3D scene is calculated in 8.3 millisecond. Add a few more millisecond for the GPU-to-CPU memory transfert and we have rendering time close to a database query. This solution is not limited to polygon or shader language. It can also include post-rendering filter and effect. The only down side of it is that all game-engine like renderer pre-compute data at initialisation. This means that one renderer have to be dedicated to one website (or one 3D scene). But this is exactly the case for online 3D display.
In other world, it would be THE perfect solution for onlien 3D catalog and customisation.
Technically, render would occur completely on GPU. They render, post-process, then write to a frame-buffer which will be forwared to the server output with an image header. So simple. Thinking about what GPU optimisation using CUDA can execute in a procedural point of view, we can only be excited about such a solution. Scaling it may be tricky but for a bunch of hundred query a second, which is an average use of a website using 3D element (we are not talking about game there as you guested), it definitely worth to be tried.
Which is exactely what we are doing here in Skylink. We will keep posting about a prototype.