A program to simulate stereoscopic 4D vision, using a virtual 3D retina which is created by rapidly displaying all voxels at varying depths of a 3D volume.
Main Hypothesis
If we display a 3D object on a 2D screen by rendering multiple layers (or voxels) of its outer and internal textures (like an MRI) fast enough to refresh all voxels composing the object 10-20 times per second (aka VPS or volumes-per-second), then our brains may interpret and process this 3D voxel space as true 3D vision.
Reasoning: The voxels would simulate 4D photons hitting a 3D retina, and the brain should process this the same as it's already doing for the 3D photons hitting your 2D retinas as you're reading this.
Essentially, this is using time (via flicker fusion) to extend our 2-dimensional vision into 3D.
If this works, then not only will the brain perceive true 3D volume vision, but also we can create two virtual 3D screens which display from two different 4D angles (simulating two 3D retinas, or two 4D eyes), which the brain may process into 4D binocular vision, letting us perceive 4D parallax & depth.
Since this is my very first Rust project, the major steps to accomplishing this are
- Creating a functional window
- Rendering a colour
- Rendering a 2D surface (
squaretriangle) - Rendering a voxel (cube)
- Rendering a 3D volume containing multiple voxels
- Flickering the voxels at 1 plane of voxels per frame
- Expectation: Rendering will cause flicker fusion and brain to perceive true 3D volume
- Measurement: Refresh rate of 60FPS insufficient for flicker fusion; voxels disappear from screen, flickering like old fluorescent lights
- Evaluation:
- May need better hardware (240Hz monitor, better GPU, better CPU) to make progress on main hypothesis
- Will progress to phase 2, in the meantime
- Adding the ability to rotate the 3D volume in 3-space
- Ensuring all displayed voxels are fully visible at all times (voxels never obscure any part of any other voxels)
- TBD
- TBD
- Started following the incredibly difficult-to-understand Dr. Xu's guide up to video 3
- Encountered errors (eg1, eg2)
- I have no clue what the error (or help thread comments) mean, so I'm trying a different tutorial
- I've reverted back to launching a functional empty window, and am now following the official WGPU tutorial
-
done: Created resizeable window (commit)
-
done: rendering colour (commit)
-
done: rendering 2D surface (commit)
-
done: rendering 3D object
-
done:
optimizing camera controlsrendering multiple instances of cubes -
done: rendering cubes on y-axis
-
done: render voxels layer-by-layer
-
done: optimizing camera controls; used FrankenApps wgpu cube code as reference
-
todo: iterating through all visible voxels instead of plane-by-plane