Update
[less_retarded_wiki.git] / pseudo3d.md
blobc07a261af9006e1183e6648b6afaf3a81c6753b0
1 # Pseudo 3D
3 The term pseudo 3D, also 2.5D or primitive 3D (preferred by [us](lrs.md)), is used for [computer graphics](graphics.md) that only uses the simplest techniques of [3D](3d.md) [rendering](rendering.md) (such as 2D [raycasting](raycasting.md), mode7 etc.) and so creates more of an "illusion of 3D" that poses many limitations (such as those on camera movement and rotation); genuine 3D rendering that uses more advanced techniques (typically triangle rasterization, [raytracing](raytracing.md) etc.) is then called [true 3D](true_3d.md). However it's crucial to realize that EVERY 3D rendering is in the end only an illusion and so there is eventually no objective line separating primitive 3D and true 3D -- by convention some techniques ended up being assigned mostly to one group or the other, but the line is in the end drawn just arbitrarily. In the mainstream using the traditional pseudo 3D techniques is nowadays mostly a thing of the past as everything including cell phones now has a powerful [GPU](gpu.md) capable or most advanced 3D rendering (and so it is even used to "fake" the simpler techniques for aesthetic reasons), nevertheless for [suckless](suckless.md)/[KISS](kiss.md)/[LRS](lrs.md) programming the techniques used in the past are very valuable, interesting and useful, considering we greatly prefer [software rendering](sw_rendering.md).
5 As an example [BSP rendering](bsp.md) rendering in early games such as [Doom](doom.md) is generally called pseudo 3D in the mainstream, however, as stated above, it is pretty debatable what exactly should classify as true 3D and what not because any computer rendering technique will inevitably have some kind of simplification of the true 3D reality of real life. And so the debate of "Was Doom really 3D?" arises. In the end this is the same debate as "Is Pluto a planet or not?", it's just a matter or settling for a definition of a word. One side argues that in Doom's BSP rendering it for example wasn't possible to look up and down or have rooms above other rooms, all due to the limitations of the rendering system which this side sees as "not real 3D". On the other hand Doom really internally worked in 3 dimensions, player DID have a height coordinate (without it it wouldn't be able to smoothly fall into holes), but most importantly: there will always be limitations in any 3D software -- even modern 3D renderers have limitations such as mostly being able to only render models made out of [triangles](triangle.md) (while reality can have completely smooth shapes), having a limited resolution of textures (while reality has infinitely detailed surfaces), being limited by resolution of [floating point](float.md) coordinates or neglecting relativistic spacetime deformations. If we rewrite Doom rendering in OpenGL while giving the camera freedom to look up and down but keep the technical limitations for maps, is it now true 3D or not? If we have a 3D game with complete freedom of camera but with all objects only being 2D sprites, is it true 3D or not? Is Minecraft true 3D even if it can't render anything sphere-shaped? If a game uses traditional 3D rendering on the GPU to output an isometric 2D image without perspective, is it true 3D or not? Where to draw the line for "true 3D" is subjective -- we see it as reasonable to say that **if it looks 3D, it IS 3D**, i.e. we think Doom's graphics WAS really 3D, albeit limited. For this reason we also advise to rather use the term **primitive 3D** rather than pseudo 3D.
7 Techniques associated with primitive 3D are for example [2D raycasting](raycasting.md), [BSP rendering](bsp.md), [mode7](mode7.md), [parallax scrolling](parallax.md), [voxel space](voxel_space.md) terrain rendering or perspective-scaled [sprites](sprite.md).
9 ## See Also
11 - [software rendering](sw_rendering.md)
12 - [bsp rendering](bsp.md)
13 - [raycasting](raycasting.md)