far back in 1997, me and Corb tryed to build a volumetric pixel 3d shooter. I calculated that using 16megabytes of ram and using only one bytes per pixel, that I would have a 3d array for 256*256*256 pixels. Because I had roughly 512 megabytes per second memory bandwidth , I was able to scan it entirely 32 time per second then we reached gigahertz machines There were dwarffortress who used 3d array on a 3d roguelike There were minecraft who used box sized block in chunk (3d array 16*16*256 in a set) how much pixel may I store in a 3d array if I use my personal computer from 2016 (five years old i7-950 with 24gb of ram) If I allow it to use 16 gigabytes of ram, 2560^3 pixels are possible. it can scan the memory at theorical speed of 24 gb/sec, so in a second, it is plausible to assume it can read the entire memory. The cpu have 8 thread, the ipc is high. But not as fast as gpu. A ray trace would have a worst case scan length of 4434 pixels long. The memory bandwidth will limit the raytrace to (5811863) 5million lines per second. each line represent a pixel, that mean HD tv have (2 million pixel to scan 60 time per second). But the main idea was 640*480 who have 307200 pixels 12 times per second, (3686400 pixel per sec). only rendering 12 fps SD would require all computer ressources. Now that i am a better programmer, I would not use 3d array but Set of object. While every pixel take more space, I can a bigger area if I dont fill every thing. I would also consider sotring them in sqlite because it will releave me from managing memory/swap/scan. I will just scan for all pixel in front of me in a range of N then instruct opengl to show them. maybe filter some if it improve speed. Actually sqlite store all integer in 64bits, and all String with one bytes overhead for length, or two if longer. table definition do the rest.we can assume every poxel will weight 256bytes and only 65536 of them will be on memory.