Behind the pretty frames of #PRAGMATA. Breaking down many tricks and hidden gems of the renderer behind CAPCOM's RE Engine.
i hope you enjoy & find this few months worth of freetime article useful...
mamoniem.com/behind-the-p...
Posts by Froyok (Léna Piquet)
Assuming the world isn't plunged into an age of chaos, there's too goddamn many cool games coming out this month.
Industria was a cool, short-ish Half Life 2-inspired adventure and the sequel looks to build on that nicely.
Jolt Physics just hit 10K GitHub stars! What started in 2014 as a CPU vs GPU ray casting experiment became a full physics engine in 2021. Seeing what you’re building with it is amazing. Thank you!
We have both in Substance Designer, via the Distance node. 😄
NASA just dropped this image of Artemis II astronaut Christina Koch looking back at us. The first woman to ever see our planet in its entirety. I’m not crying you’re crying 🥹🔭🧪 📸: NASA
vertical image of a still retention basin and sunlit sky. the sky is split starkly down the middle, clear on the left, gray clouds on the right, sun at the center. the cloud line is reflected perfectly on the basin surface below the horizon. photo by Lindsay Schiel NEORSD
not ‘shopped. not cropped. not stock.
straight from the phone of stormwater inspector Lindsay Schiel snapped yesterday at a basin in Hudson.
Hi hi, Dear ImGui 1.92.7 is released!
50+ changes (e.g. tables reworked columns freezing with hidden columns, reorder from context menu, webgpu for emscripten 5 & wgvk native, nav keyboard/gamepad to open context menus, & many fixes/improvements)
github.com/ocornut/imgu...
How well, that's encouraging...
Ho well !
I did a bug report to Nvidia on my side, I wonder if they will reply now.
What is interesting is that depending what you do before hand, the corrupted/lost data partially differs and isn't always 100% of the data (in my tests ~15% of loss).
My workaround is to do a single glBufferData(target, size, data, usage) call with the same data, which works correctly every time.
Using glBufferData(NULL) + glBufferSubData silently loses data when used on GL_SHADER_STORAGE_BUFFER targets. The buffer reads back as partially or fully zeroed despite glBufferSubData receiving valid non-zero data.
Today it seems I found my first Nvidia driver bug (on Linux at least) with OpenGL.
I was able to reproduce it and make an simple isolated test case. :D
Next rework was the particle "system".
What existed was a crude hack via a transparent mesh.
I kept the idea of generated a texture containing the particle data for its animation, so it can be sampled without any extra cost.
NASA has a live stream of the Artemis II mission that will run for the entire duration:
www.youtube.com/watch?v=m3kR...
A walkthrough of a selection of Tomb Raider III’s rendering techniques, good read! medium.com/@reinigdavid...
My erosion filter is out! Video, blog post, and shader source.
It emulates erosion without simulation, so it's fast, GPU friendly, and trivial to generate in chunks.
Explainer video:
www.youtube.com/watch?v=r4V2...
Companion blog post:
blog.runevision.com/2026/03/fast...
#ProcGen #vfx #GameDev
(I meant "not", ho well)
Next rework was the particle "system".
What existed was a crude hack via a transparent mesh.
I kept the idea of generated a texture containing the particle data for its animation, so it can be sampled without any extra cost.
A screenshot of my engine showing a character viewed from the side inside the cone of a spot light. The light produces a foggy cone where the character cast a shadow in it.
Now 100% sold on the upscale pass for it yet, but current results are relatively good still. :)
(I support spotlights and my local directional lights only for now.)
Next rework was the particle "system".
What existed was a crude hack via a transparent mesh.
I kept the idea of generated a texture containing the particle data for its animation, so it can be sampled without any extra cost.
And finally, I properly added support for volumetric lights. I ditched the solution using mesh volumes (like shadow volumes) and went with a raymarching based approach.
Plenty of tweaks on my manipulator (gizmo) as well, such as grid snapping and supporting rotation.
I also did plenty of rework and improvements related to my scene and editor management.
It's simple, but now I can add and remove object in my levels. Until now I was editing a file on disk and reloading it.
Next rework was the particle "system".
What existed was a crude hack via a transparent mesh.
I kept the idea of generated a texture containing the particle data for its animation, so it can be sampled without any extra cost.
A screenshot of my game engine showing a particle entity. A simple smoke effects is visible inside a red sphere showing its volume. Three arrows showing the gizmo show that the element is selected. An icon in the center composed of several dots shows the object origin.
By hey ! Now I have a particle entity in my level ! :D
Next rework was the particle "system".
What existed was a crude hack via a transparent mesh.
I kept the idea of generated a texture containing the particle data for its animation, so it can be sampled without any extra cost.
So the huge chunk of the rework what moving from a hack toward a more generic system, planning for the future.
I don't have yet instanced rendering for example, but that's on the todo list.
However I migrated the whole logic into a dedicated "entity" object. With properties like managing play/stop, the bounding volume, the preset which define its behavior, etc.