Version 0.9 is out now! It contains many new features. https://scratch.mit.edu/projects/888694096 ⚠️ I highly recommend that you run this on Turbowarp with a better resolution: https://turbowarp.org/850464724 Try plugging your computer in for better performance. CHANGELOG: - Added ambient occlusion - Added lightmap (smooth lighting) - Added high dynamic range (Reinhard tone mapping) - Added sprite vertical movement - Added mip-mapping (incomplete) - Added lazy rendering - Added basic ceiling collision detection - Added sprite direct-hit detection Arrow keys/wasd to move and rotate, space to jump, mouse to look up and down. I started with this tutorial: https://lodev.org/cgtutor/raycasting.html Mergesort implementation from the Scratch Wiki: https://en.scratch-wiki.info/wiki/Sorting_Values#Merge_Sort Credit to GarboMuffin for the stage size detector: https://scratch.mit.edu/projects/588493413/ Wolfenstein textures copyright by id Software. Skybox by Richy Mackro on OpenGameArt: https://opengameart.org/content/sky-box-sunny-day This page helped me to understand tonemapping in general and the Reinhard algorithm in particular: https://64.github.io/tonemapping/ This is still a work-in-progress; I'm going to add more features and eventually turn this into a fully-functional 3D game engine. Stay tuned for the next release! Known bugs: The box that you're standing on doesn't render To-do: Fully implement mip-mapping Better collision detection Vertically correct skybox(?) Better developer interface Different wall types (round, diagonal, flat) Variable ceiling heights Paper-like sprites Colored lighting Motion blur(?) Sun shadows Emissive textures Add bump mapping (normal map) Use visplane/mode 7 rendering for tops of boxes(?)