| |
cobbpg
Registered: Jan 2022 Posts: 6 |
Earliest examples of EOR fillers?
What are the earliest known instances of vertical EOR fill routines either in demos or in games? I know that at least Stunt Car Racer uses the technique to draw the sky under the opponent four pixels at a time. |
|
| |
Martin Piper
Registered: Nov 2007 Posts: 698 |
Elite uses EOR for its line draw: https://www.youtube.com/watch?v=CcGdH4jXGJo&t=1725s |
| |
Krill
Registered: Apr 2002 Posts: 2940 |
Never looked at the code, but Encounter (1984) has some impressive filling going on. =) |
| |
Martin Piper
Registered: Nov 2007 Posts: 698 |
Cybernoid II also uses an EOR based draw into its bitmap: https://youtu.be/3SvsElGt3Hc?t=1556
Not a fill though :) |
| |
cobbpg
Registered: Jan 2022 Posts: 6 |
The only thing that's filled in Elite is the sun, and that's drawn one scanline at a time, which makes sense since the endpoints can be calculated independently for each line. Elite also deserves bonus points for the nice shimmering effect, but sadly it's indeed no EOR fill, especially not a vertical one. ;)
Encounter is really cool, since it's using character mode with dynamically updated charsets. From a quick glance at the code, it doesn't look like EOR magic either, just standard AND/OR masking.
I also did a cursory check in the code of The Sentinel, since it's another filled-poly game by Crammond, but it's also just rendering polygons line by line the traditional way as far as I can tell. |
| |
WVL
Registered: Mar 2002 Posts: 889 |
I've always wondered if The Sentinel could be made faster, and maybe it can.. |
| |
Krill
Registered: Apr 2002 Posts: 2940 |
Quoting WVLI've always wondered if The Sentinel could be made faster, and maybe it can.. In an idle moment months ago, i checked how much faster The Sentinel renders/plays on bigger platforms.
Result: Not much at all, it just scrolls the screen ever-so-slightly faster.
That's the brilliance of that rendering engine: you can simply pan around to look around. =) |
| |
trident
Registered: May 2002 Posts: 91 |
this is an interesting topic! would be interesting to hear what people think about when eor fillers started to appear in demos.
for me, the first demo i saw with an eor filler was The Last Traktor III from june 1992. but since the idea likely entered the c64 world from the amiga's blitter filling techniques, it feels like c64 demo coders would have attempted the technique earlier. particularly given that the amiga had been around for a few years already at that time. |
| |
Mixer
Registered: Apr 2008 Posts: 443 |
Might I boldly propose:
Elysion - the Requiem |
| |
trident
Registered: May 2002 Posts: 91 |
very cool! so that may be the first instance of an eor filler in a c64 demo!
@mixer: do you have any insight into the thinking behind bx's code? such as if the idea or incorporating the eor fill came from experience with amiga coding? |
| |
Ninja
Registered: Jan 2002 Posts: 411 |
trident: read the production notes of that demo |
| |
Mixer
Registered: Apr 2008 Posts: 443 |
@trident, the production notes have some details on it as Ninja mentioned. |
| |
trident
Registered: May 2002 Posts: 91 |
awesome! this is the relevant part from the production notes:
> Idea for EOR filler was inveted by CLF when he was doing his Amiga 3d routines.
so i guess that confirms the hypothesis that the eor filler technique that got popular in c64 demos originated with the amiga's blitter fill techniques.
the eor fill technique from stunt car racer was quite a bit earlier though, but since the game was released on the amiga as well as the c64, it isn't impossible that the amiga inspired the c64 eor fill in that case as well.
does anyone know where the amiga blitter designers may have picked up idea for the eor fill? it feels like there should be a siggraph paper from the 1970s that pioneered it, but they can be difficult to find since the early terminology wasn't always consistent with later uses. |
| |
Mixer
Registered: Apr 2008 Posts: 443 |
A lot of the CG stuff was imagined or demonstrated late 60's and early 70's(cool demos in Youtube), but I would not be surprised if the origins of rasterization goes back all the way to the time of the loom. |
| |
cobbpg
Registered: Jan 2022 Posts: 6 |
As far as I know, Stunt Car Racer was developed on the C64 first, then Crammond did the Amiga port, which renders the world in a completely different way. It's possible that knowing about the blitter was an inspiration, but in the end there are many innovations in that engine that are a lot more complex than the EOR trick, so he could have just figured it out in isolation to solve that particular problem.
One very relevant paper I found was "The Edge Flag Algorithm—A Fill Method for Raster Scan Displays" (Ackland and Weste, 1981), which basically describes the idea of plotting edges with just one pixel per scanline, then applying the EOR transformation horizontally. Apparently they even built a hardware implementation.
All earlier papers I could find with a cursory search usually talk about other methods (mostly generating spans from ordered edges or flood filling variants). The above paper does refer to an earlier publication discussing "parity check" algorithms, but those are also more complex and have to look at other neighbours as well to handle various corner cases. |
| |
Mixer
Registered: Apr 2008 Posts: 443 |
Those Agkland and Weste seem to be Bell Labs employees, so this may be relevant:
https://www.youtube.com/watch?v=98EyJG-xmu4 |
| |
trident
Registered: May 2002 Posts: 91 |
that ackland and weste paper definitely sounds like it could be the original origin! unfortunately i can't seem to find a pdf copy right now (and don't have ieee xplore access either). |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1402 |
Effluvium was very late (2004), but it does use a horizontal EOR fill, which apparently isn't the "usual" way to do it - so I've no idea how much prior art there is there. |
| |
cobbpg
Registered: Jan 2022 Posts: 6 |
Quoting tridentthat ackland and weste paper definitely sounds like it could be the original origin! unfortunately i can't seem to find a pdf copy right now (and don't have ieee xplore access either).
Yeah, I could only find the paper through the popular alternative route...
So we have one example of monochrome fill from as early as 1989, and multicolour with glenz from 1992. I wonder how far back the latter idea goes. Is megademo 8 the earliest one from the Amiga scene? |
| |
Bansai
Registered: Feb 2023 Posts: 40 |
Good youtube link. Neil Weste wrote this book that I remember from my undergrad days, so he was probably involved with the hardware design as well. Those guys in the research labs back then had their fingers in everything.
https://www.amazon.com/Principles-CMOS-VLSI-Design-Weste/dp/020.. |
| |
Jetboy
Registered: Jul 2006 Posts: 265 |
Quote: Quoting tridentthat ackland and weste paper definitely sounds like it could be the original origin! unfortunately i can't seem to find a pdf copy right now (and don't have ieee xplore access either).
Yeah, I could only find the paper through the popular alternative route...
So we have one example of monochrome fill from as early as 1989, and multicolour with glenz from 1992. I wonder how far back the latter idea goes. Is megademo 8 the earliest one from the Amiga scene?
Amiga Demoscene Archive lists Wild Copper as the only demo released in 1988
https://ada.untergrund.net/?p=demos&y=1988&c=0&h=0&v=0
So according to them it is the oldest. Is it? Definitely one of the first i have seen. Megademo 8 was released in 1990, so there were some major demos released prior to it, ie. RSI Megademo, Budbrains, etc.
Of course very first was BOING! But it was made by the Amiga Developers - so i'm not sure if it qualifies as Amiga scene production, but maybe it should?
As for EOR fillers, i'm not sure who was first, but in the second half of 90's it was a common knowledge that EORfill is the way. |
| |
Oswald
Registered: Apr 2002 Posts: 5074 |
the game REVS (also geoff crammondbtw) has a sideways eorfiller kinda trick. only the edges of the objects are plotted, and then each byte is fed into a lookup table, and overwritten, if empty then continues with last color.
the track is stored in extremely detailed fashion, and is fully 3d, in many ways Revs just as innovative if not more than SCR. |
| |
cobbpg
Registered: Jan 2022 Posts: 6 |
Yeah, the Revs method is a cool trick, it's kind of like a weird RLE that's used to compress time, not space (which reminds me that the Apple IIGS has hardware support for a pixel-level variant of this idea called fill mode). And I agree, being pretty much the first 3D racing sim in history is a level of innovation that's difficult to surpass. |
| |
zscs
Registered: Sep 2010 Posts: 46 |
This is a super interesting read!
I also did some research on the topic and found an interesting .pdf, Line Rasterization by Frédo Durand and Seth Teller. However, topic might need further information to understand fully (at least to me). |
| |
HCL
Registered: Feb 2003 Posts: 727 |
Very entertaining! Damn it that 3D-demo stuff from 1981 displaying convex vector-gfx like no problemo.. Looks a little like they were using z-buffer, but can not really tell. And we were like 10+ years behind and still are :D. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: Very entertaining! Damn it that 3D-demo stuff from 1981 displaying convex vector-gfx like no problemo.. Looks a little like they were using z-buffer, but can not really tell. And we were like 10+ years behind and still are :D.
Definetly z-buffer it seems. There were alot of z-fighting in the hand-scene, where the thumb self-intersected the hand. Looks 8-bit per pixel or so. |
| |
Krill
Registered: Apr 2002 Posts: 2940 |
Quoting HCLDamn it that 3D-demo stuff from 1981 displaying convex vector-gfx like no problemo.. It's not like they did it on some home computer of the time... =) |
| |
tlr
Registered: Sep 2003 Posts: 1762 |
There was this by Sensible Software, I guess 87ish: Sensible 3d |
| |
cobbpg
Registered: Jan 2022 Posts: 6 |
Never seen this before. Looks like a standard scanline renderer, there are no EORs in sight. It even seems to fall back to plotting one pixel at a time if the endpoints are within the same byte.
By the way, what was the earliest EOR fill with patterns (e.g. checkerboard) instead of just solid colours? I presume most old engines rendered horizontal scanlines like Freescape. |