Hi, first post, as I am new to the Irrlicht engine. Migrated from jMonkeyEngine.
I am seeking some advice/tips on a non-Euclidean portal-based rendering system. Let me explain with an example. See image below for illustration.
For the most part, consider this your standard portal-based rendering engine. However, I want the ability to include portals that lead to other cells which may not be directly adjacent to the current cell.
The top half of the image represents how the level is laid out in Euclidean space. The bottom half is how I want it to appear to the camera. The pink planes represent the portals that are connected to each other. In the left-hand image, the current player location is indicated by the (poorly drawn) camera symbol, which is facing toward you (out from the screen).
What I propose is, whenever a non-Euclidean portal is within the main camera's view frustum, I would generate a 2nd camera at the same relative position from the destination portal as the main camera is from the origination portal. You can see this in the right-hand image, in which the position of the 2nd camera (pointing away from you, into the screen), has been rotated 180 degrees around the portal. The first cell (the active cell, in which the player is currently located) would be rendered first from the vantage point of the main camera, and then the 2nd cell would be rendered from the vantage point of the 2nd camera, obviously cropped to the smaller view frustum bounded by the dimensions of the portal.
That is my idea, and I am looking for feedback/critique from those more familiar with Irrlicht or with non-Euclidean rendering. Do you think it would be possible to write this so that Irrlicht could render one scene using multiple cameras during the render process?