I haven't touched the actual wallpaper engine implementation of this project in years... if I had the motivation to continue working on a project like this, I would probably start from scratch. I could have made much better use of available reverse engineering tools (mainly renderdoc) to avoid the tons of trial and error that produced the convoluted logic contained in this code. TODO: [ ] make gl_enabled toggleable in code (i.e. toggleable at runtime) [ ] objects with blendmode other than 0 have extra pass using blendpassthrough shader [ ] more acurate visualizer Not Implemented: [ ] mouse paralax [ ] camera shake [ ] particles [ ] javascript scripting And much, much more... Known Issues: ./mauri ../../../c/workshop_wallpapers/1703298496/scene.pkg - xray only works in the middle ./mauri ../../../c/workshop_wallpapers/2212570435/scene.pkg - eyes not positioned correctly ./mauri ../../../c/workshop_wallpapers/1829251189/scene.pkg - xray is flipped/flickering ./mauri ../../../c/workshop_wallpapers/2216609166/scene.pkg - left side not drawing? ./mauri ../../../c/workshop_wallpapers/2178257725/scene.pkg - rotate breaks it ./mauri ../../../c/workshop_wallpapers/1938288759/scene.pkg - visualizer not drawn correctly ./mauri ../../../c/workshop_wallpapers/2157658616/scene.pkg - parse error ./mauri ../../../c/workshop_wallpapers/1778616550/scene.pkg - first object has different blendmode, so we need to handle "combine" passes differently. The final pass should draw to the objects framebuffer as well as to the combine buffer, but using the "passthroughblend" shader. And many others that either crash or are completely broken.