|
|
|
|
|
by djtango
903 days ago
|
|
I've always wondered why games didn't implement that but now that I think about it, I can't imagine a neat solution (in 30 seconds) Imagine a 3rd person action game. A and B split up and have two perspectives. They end up facing in opposite directions, how do you reconcile the camera views? Maybe you can have some heuristic that only does it if their perspectives are "close enough" but what value does it bring? For some kind of topdown/isometric type game I could see how that might work. EDIT: actually read the article after getting curious. All of this is covered, extremely cool article. Don't quite understand ray tracing enough to understanding exactly why it is faster. Is it because rasterisation starts from the camera but ray tracing starts from the light source? so you can amortise more calculations if you start from a light source rather than individual perspectives? |
|
The problem is Rasterization is a bastard Raytrace. A camera view, represented as a trapezoidal prism, is transformed into a cubic prism and flattened. Every pixel is a parallel "raytrace" along the flattened cube. To get multiple viewports Rasterization creates an entirely new rendering scene, complete with the boilerplate code and API calls, as if it were its own game with its own screen. A four way split was akin to brute-forcing four bastardized raytraces.
Raytracing simplifies this by admitting this is terrible, and thus giving every pixel its own official transform (Raytrace) rather than the ugly pile of hacks above. I think of it as a "Camera Shader", sitting with pixel and vertex shaders as a way to dynamically change a given pixel.