Skip to content

Instantly share code, notes, and snippets.

@dbechrd
Last active August 27, 2020 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dbechrd/b9f712b4e1e40a4b1774879fe93d001f to your computer and use it in GitHub Desktop.
Save dbechrd/b9f712b4e1e40a4b1774879fe93d001f to your computer and use it in GitHub Desktop.

RicoTech Engine (2016 - 2019)

Learning modern OpenGL. The first two quads I rendered on screen.

image

Five more quads (1 ground, 4 walls) added to scene. Added textures.

image

Loading a weird heptagon shape from .obj file, and more random walls.

image

Spheres, some debug UI with various edit modes (translate, rotate, etc.) Editor is entirely hotkey based.

image

I think this was Blinn-Phong lighting with specular. IMO, one of the best looking screenshots during the first year of development.

image

Translate widget, and a few additional properties in the read-only debug UI.

image

Hilarious rendering bug. Probably just some misalignment of vertex attribute pointers.

image

First time I added buttons you could actually click to the UI. I made some nice icons, but they didn't do anything. At one point the first button made a "ding" sound when you clicked it.

image

The first time I played around with colored lights. Three basic point lights; no shadows.

image

The first scene with working point light shadows. Dynamic shadows via shadow mapping to a cubemap texture.

image

A slightly more complex scene, with multiple colored point lights, a single directional sun light (no directional shadows it looks like), textures and point light shadows.

image

Talaria Engine (2019 - Present)

A single large level mesh loaded from .obj. First decent screenshot from the new Talaria engine, which is a from scratch endeavor. Inspiration from RicoTech but very little code sharing. Weird bar chart thing on the top; was going to use it to display FPS but it was never important enough. Top left is a second viewport with a different camera angle.

image

An incorrect bounding sphere, and incorrect normals (face normals) on sphere making it look faceted. Top left viewport also a weird top-down camera with incorrect aspect ratio.

image

Better bounding spheres; some basic rigid body properties (the small yellow spheres are debug viz for center of mass, and the small green spheres are debug viz for point of contact with the floor). The floor is represented as an infinite plane, which isn't a great idea in a real rigid body physics simulation. Top left viewport is a correctly scaled minimap or sorts.

image

I think this was the first decent-ish screenshot of the initial PBR material shader. Still looks quite awful at this point.

image

Hard edged point light shadows! Adds a ton of depth to the scene. The lighting in this screenshot is a noticeable improvement from the previous one.

image

Point light shadowmap (cubemap) debug viz in upper left corner. Demonstrating hard-edged shadows (comparison shot; see below).

image

Taken immediately after the previous screenshot, but with percentage-close filtering (PCF) enabled. First time I ever rendered smooth shadows.

image

First pass at a better UI framework. Four buttons, each of which has a 16 button child grid that pops out when the respectively menu button is selected (outlined in yellow).

image

Top left is a first pass at a very rough text edit field. Weird test material that has metallic letters on it. Looks cool.

image

The return of the debug text UI, but with an, albeit very primitive, menu. A kinda funky outline shader effect for the currently selected object (the blue sphere with yellow outline).

image

Editor UI evolving slightly. The tiny boxes are the top are actually the in-game HUD and each one represents a single bullet in the imaginary gun. You can also see a slightly better cubemap debug viz when a light is the currently selected object.

image

Editor UI has a background and some more colors. The green rectangles are button, some of which are toggle buttons (e.g. V-Sync). Different random test materials. This is the first normal mapped material screenshot. The debug text in the top right has also evolved to show slightly more information.

image

Top right UI evolved slightly more. Cameras now have "debug channels" you can enable which alters the shader output to display useful debug info like only vertex normals, normal maps, metallic values, etc.

image

Editor UI significantly improved in this screenshot. Started to actually be a real tool.

image

Editor even more complex here. Admittedly, I've let the layout slip a bit. It was more important to have access to the rigid body properties than it was for it to be perfectly aligned.

image

A new level mesh I made in Blender, inspired by a screenshot of a puzzle game I saw on Twitter. Shadows, and a light blue glClearColor to represent a sky.

image

Temporary editor and debuz viz for testing ray casting (ray vs. obb) and point of contact calculations.

image

Same as above, but for ray vs. quad.

image

More amusing bugs. Vertex attributes messed up again, rainbow UI.

image

Debugging and fine-tuning hitboxes for translate widget.

image

Proper skybox. Tinted the sun lamp blue to give a more moody feel. The little box and arrow above the gray sphere is a debug viz for the player camera (which folows the ball around). The scene is taken from the viewpoint of a free-flying debug camera.

image

OCD code formatting. Inspired by FMOD headers.

image

Translate widget video (I don't know if MP4s work in Markdown, visit link if it doesn't).

https://i.imgur.com/3iORSwU.mp4

Rigid body simulation of sphere vs. three OBBs and another sphere (the two columns, the floor, and the other ball).

image

Same as above but with physics engine debug viz enabled. Tight-fitting spheres and OBBs are narrowphase, loose-fitting boxes are broadphase AABBs. Broadphase is still O(n^2) brute force, but using AABBs to allow for a future AABB tree optimization.

image

"Dude" model and button model. Can't remember if .obj or .gltf at this point.

image

First "animation", in quotes because I'm manually setting the weight via a slider.

image

First morph weight "animation". Also manually animated via a slider (engine doesn't know how to do playback).

image

Another editor UI screenshot. This time with a texture selection view, inside of a scrolling panel and with a tooltip. All a custom UI lib.

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment