I started working on this project as a little 3D shader experiment back in 2015 (GMS 1.4), to see how far I can go. Right after implementing a traditional per-pixel lighting system I started replacing it by PBR (Physically Based Rendering) to achieve more realistic graphics. In 2017 after updating GMS my project didn't work anymore. I couldn't figure out why, so I took a break. In July 2019 I started porting my engine to GMS 2 step by step. At this point, everything works as intended, so I will continue on GMS 2 from now on. I will edit this post over time and go into detail on some of the features and techniques. Also I hope to find some help, since i regularly run into unexpected trouble. Screenshot: July 30, 2019 Download: Not yet. There's soo much to do. I'm going to provide a little material demo as soon as possible. Feel free to join my Discord to stay updated with this and other projects: https://discord.gg/bgbdGA8 Features (re)implemented: - Physically Based Rendering (PBR) with different approaches to choose from (for quality/performance balance) - Deferred Shading ("unlimited" light sources) - Materials based on Unreal Engine workflow (Base Color, Roughness, Metalness) - Reflections based on equirectangular images (360°) - Import .obj 3D models - Basic vertex buffers (at this point only planes, cubes and spheres) - Skybox (Skydome) - Mipmapping (done in GMS 2 now, had to use a DLL in GMS 1.4) - Displacement Mapping - And some stuff I probably forgot to mention... What's next? - WIP: Ambient Occlusion (SSAO) - Translucent objects - Shadow Mapping (included in GMS 1.4 version) - Emissive Mapping (included in GMS 1.4 version) - Depth Of Field (included in GMS 1.4 version) - Bloom (included in GMS 1.4 version) - Dynamic Reflections (not a huge fan of Screenspace Reflections though) - Anti-Aliasing - There's always something to do... Media: Spoiler: Screenshots Most of the textures were taken from https://freepbr.com. Great stuff! I will refresh these screenshots/videos every now and then to show the current progress. Spoiler: Videos Information: Spoiler: What is PBR? Physically Based Rendering is the most realistic realtime rendering "technique" today. Instead of making things more complicated, creating textures is a lot more intuitive. Pretty much every material found on Earth can be simulated by only setting a base color, a roughness value and a metalness value. "Physically based rendering (PBR) is an approach in computer graphics that seeks to render graphics in a way that more accurately models the flow of light in the real world. Many PBR pipelines have the accurate simulation of photorealism as their goal." From https://en.wikipedia.org/wiki/Physically_based_rendering PBR Guide: https://www.substance3d.com/pbr-guide An artist's perspective: https://wiki.jmonkeyengine.org/jme3/advanced/pbr_part1.html Spoiler: Windows only? Since I didn't want to limit the number of lights, I decided to use Deferred shading. It's a technique where lighting is calculated in screenspace. To use this technique the scene has to be rendered multiple times. In GMS only HLSL can do that in one pass. Doing that with the GLSL version used in GMS would be very slow. So, the performance is pretty good, but it works only on Windows.