Session 65

Synthwave is our Bob Dylan

Today, we’re once again joined by Stephen Foot, previously seen in Session 53 helping us out with our networking layer. Today, Steve does a deep dive with us on our OpenGL stack, and helps us brainstorm our wireframe rendering techniques.

At the end of the day, Steve left us with a question-slash-mantra for graphics thinking: “are there additional attributes that I can encode?”.

See our previous session with Steve here: https://jeffanddom.com/broadcasts/53/

Notes/highlights:

  • As Steve notes, OpenGL is falling out of favor with Metal, DirectX and Vulkan. We are in unanimous agreement: Vulkan is a complicated beast to even understand.
  • We’re glad to have our choice of GLTF validated as a good, modern format. Many other alternatives offering what we want come with proprietary/bulky baggage, like Autodesk’s FBX.
  • The chat-suggested (shout out to Dean!) replacement for our tank is this incredibly good boy: https://www.cgtrader.com/3d-models/animals/mammal/cartoon-shiba-inu. Chat is rarely wrong…we’re gonna have to add a dog-petting mechanic soon!
  • Pico-8 is a the “fantasy” console for making tiny retro games, and a true delight. It’s the origin of many excellent games, most famously Celeste! https://www.lexaloffle.com/bbs/?tid=2145). It’s worth checking out for novices and experts alike: https://www.lexaloffle.com/pico-8.php
  • For optimizing a rendering pipeline, it’s all about swapping the expensive things as infrequently as possible. “Draw” calls to the GPU are individually expensive, versus sending large batches of data in bulk to keep as many hardware pipelines fed as possible. Building the intuition around this comes from a combo of experience and deep-diving on technical papers.
  • Hardware instancing is a technique to pack more drawing into a single call by rendering multiple instances of the same model all at once. For instance, our trees could be a single draw call to the GPU instead of asking the GPU to render each object individually on each frame. https://en.wikipedia.org/wiki/Geometry_instancing
  • “Skinning” is the name for the technique of applying a mesh on top of a “skeleton” of vertices that can be used for posing and animation. Skinning can be applied on the CPU or GPU, with different performance characteristics for each. In our case, we’ve actually recreated a minimal version of CPU skinning with our basic rotation systems. https://en.wikipedia.org/wiki/Skeletal_animation