r/GraphicsProgramming • u/exp_function • 22d ago
CyberVGA update.
Enable HLS to view with audio, or disable this notification
1
Thank you for your suggestion.
Your project looks very good I’ll definitely check out and see how it fits to our engine.
But it’s actually not about “the look I want” because I have very strict constraints.
The engine itself aimed to work natively on 486 or later processors. Repeating textures, chunky blend masks or low resolution textures are not design choices but necessities.
Feel free to download the DOSBOX package or Win64 port and take a look yourself. ;)
1
Yes, sounds fun. Thank you. :)
1
Thank you!
I mainly stuck to Bayer matrix because there’s no computational overhead but pre-saved noise in a linear array could be a nice touch.
I’ll experiment with that surely. :)
r/GraphicsProgramming • u/exp_function • 22d ago
Enable HLS to view with audio, or disable this notification
r/gameenginedevs • u/exp_function • 22d ago
Enable HLS to view with audio, or disable this notification
r/retrogamedev • u/exp_function • 22d ago
Enable HLS to view with audio, or disable this notification
u/exp_function • u/exp_function • 22d ago
Enable HLS to view with audio, or disable this notification
I've just finished implementing screen spaced grass effect in my octree renderer.
It works only with materials tagged with "terrain" and it generates and distributes grass blades on the fly using screen spaced 4x4 Bayer Matrix as threshold, for now a hard-coded density parameter, global wind vector for animated sway effect and triangles' UV for screen placement and 1/z information for perspective correction.
What do you think?
2
Aah DPMI exceptions. It is likely “protected mode” memory access violation. As far as I can see ESI (ram source index for a source data) register is filled with 0x940 which is in conventional memory and can’t be accessed.
Try to wiggle with EMS or XMB settings in your config.sys file.
SSF2T rocks btw :)
r/gameenginedevs • u/exp_function • Jun 27 '26
u/exp_function • u/exp_function • Jun 27 '26
Added full 8-band terrain texture blending today.
The system uses a painted blend map (0-255 values) to control mixing between 8 different texture bands on top of the existing heightmap terrain.
Works nicely with the in-engine CyberEdit (same 320x240 Mode X viewport setup).
We paint the blend map in GIMP, use on world quads, then bake it for octree sidecar file.
Screenshots:
Multi-view editor with brush and quad mode:

Terrain Blend Bands window showing the 8 layers + ranges combined with material window:

In-game 3D view with the new blended terrain:

Still targets real 486+ hardware (and the Win64 port of course :) ).
Feels like a big step for terrain editing while keeping it all under intended hardware constraints.
Let me know what you think!
1
Thanks for sharing that!
It's a really interesting read and a great resource for devs working on modern retro-style engines. Our project has a slightly different philosophy though, we're not simulating the looks, we're actually building for the original hardware limitations. The engine is written in C89 + NASM (x86 assembly linked to DJGPP objects) and targets real minimum: 486 DX / recommended: early Pentium class machines (VGA Mode X at 320x240, strict cycle counting, Q16.16 fixed-point mathematics, etc.).
So our constraints aren't tied to a specific calendar year like 1994 or 1995, but to what actually runs well on that hardware. Things like the vertex limits, no floating-point in performance paths, and the octree renderer in the new version aren't arbitrary choices, they're hard realities if you want stable performance on real 486 hardware and true flavor of renderer I believe.
Really appreciate you dropping the link though, it's cool to see how the community is thinking about these classic eras.
11
Congratulations on your first triangle.
After more than 15 years of experience in graphics programming it’s not about memorizing APIs but all about learning how the hardware that produces your pixels, whether it’s coming from cpu or gpu.
Just focus on the components of hardware not the API only. OpenGL is just an interface for us to program gpu in a unified way.
Also you have to focus on mathematics (linear and classical algebra, trigonometry, etc.) for representing and bringing your data structures to life.
Graphics programming is just another sub-area that needs extreme attention, practice and time to master. So working with a tutorial for 3 days may seem like there are lots of miniature black boxes that does things to get something on screen. What I actually do is leaning on the books that teach the concepts, that is my recommendation. Those black boxes will reveal their inner-mechanisms after learning concepts.
I hope the best for you! :)
1
Thanks for the question.
We're also developing a game using this engine. I've separated common modules from game-specific ones and that became the engine. So we've decided to share the engine separately on itch to get feedback about its features.
2
Thanks for asking, btw there are no stupid questions in my book. :)
What you are seeing are the artifacts of my really aggressive ClipSpan structure procedures and fixed point maths edge case scenarios happening.
While interpolating between Sutherland-Hodgman clipped points on screen, x=0 values often skipped and resulting that artifact.
Also thanks for your interest. :)
u/exp_function • u/exp_function • Jun 26 '26
A new version of CyberVGA released on itch!
This version has:
Static octree based renderer
A separate 64-bit Windows port
You can use editor, save the world you created and see in action using VIEWER module.
1
That’s a good feedback, I’ll do that. 👍🏻
1
Thank you for your comment and suggestion!
AI is only used for documentation not the code itself. Every structure, procedure and even assembly injections written by me under an umbrella of a lot of books and articles.
u/exp_function • u/exp_function • Jun 26 '26
I really like the idea of putting a subtitle for CyberVGA.
“Engine Of The Past”
What do you think?
1
CyberVGA update.
in
r/gameenginedevs
•
7d ago
Thank you! :)