![]() |
![]() |
#1 |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
How are the Demo scene people able to create very fast 3D polygon routines for OCS?
I know that making a Demo is completely different from making a game.
Having said that, I noticed that the 3D polygon routines in the Hologon demo by The Electronic Knights (2020) running on A500 is really fast and quite sophisticated (ie, not just solid color fill, but also using dynamic texture and some sort of lighting techniques). Honestly, it's something you'd expect from an N64 or SNES with SuperFX chip, not a 16-bit machine from the 1980s. (skip to 24 seconds, 1 min 6 seconds and 3 min 59 seconds to see what I'm talking about) [ Show youtube player ] Yet I keep hearing from everyone that the Amiga sucks at rendering Polygons, that using blitter to fill polygon is slow etc. etc. This statement is not wrong of course - as we all know just about all the games that use polygons are very slow on OCS, to the extent that they're almost unplayable. Games like Zeewolf for instance. 11:08 is rather painful to watch... [ Show youtube player ] So what exactly are these demo scenes people doing that enables them to achieve this kind of result. Or more precisely, why can't commercial game developers replicate the technique? Is the technique used in the Hologon demo not at all practical in real life gaming situation? Or is it because these 3D routines are closely guarded secrets, and since the demo scene people don't mix with game devs, the secret goes with them to their graves? If any one from the Demo scene can shed light on this mystery would be much appreciated! ![]() Last edited by carlosgod; 29 July 2024 at 15:57. |
![]() |
![]() |
#2 |
Registered User
Join Date: Oct 2012
Location: Italy
Age: 49
Posts: 2,988
|
Amiga demo scene rulez !
![]() |
![]() |
![]() |
#3 |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
|
![]() |
![]() |
#4 | ||
Registered User
Join Date: Feb 2010
Location: Espoo / Finland
Posts: 823
|
Quote:
Quote:
![]() |
||
![]() |
![]() |
#5 |
Registered User
Join Date: Jun 2015
Location: Germany
Posts: 1,961
|
Amazing demo indeed! The thing with demos is that a lot of the stuff gets precalculated while you are looking at stills or less demanding effects. A lot of effects also have a certain amount of "replay" in them (frames or graphics that were rendered and/or displayed before get reused). Then a lot is based on tables that only have a certain size and thus only work for objects within a certain very limited range such as tables used for 3D projection. In a game you need to be able to allow any kind of movement at any time and therefore need an engine that can display anything and not just scenes which are constructed to match the limitations of the hyperoptimised engine. (When you have eliminated all crappy coding, each further optimisation relies on an assumption which may break in a general setting). This said, a lot of demo sceners went into games coding. Probably less these days because there is so little need to actually optimise anything any more.
|
![]() |
![]() |
#6 | |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
Quote:
But in a 3D game (say, a space sim), because the engine is constantly waiting for movement input from the user, it means the CPU has to become heavily involved in figuring out how the polygon object will rotate based on the user's input/interaction, and this causes massive slowdown in the polygon movement to the level that we're seeing in games like Frontier or Hunter for OCS? |
|
![]() |
![]() |
#7 | |
Registered User
Join Date: May 2023
Location: Norwich
Posts: 529
|
Quote:
Demo coding is all about cutting the absolute maximum number of corners to make it look like you're doing something that you really aren't. Precalculations can play heavily into it, as can taking shortcuts that would break in the general case but work for very specific scenarios (f.e. not redrawing all of a polygon if you know it hasn't moved much and will never be obscured etc). In an actual game, you typically have a lot less control over things - not none, but less, Elite for example carefully constructs all the spaceship models to remove a bunch of difficult to render edge cases. |
|
![]() |
![]() |
#8 | |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
Quote:
But while we've seen some innovation for FPS type games like Dread/Grind (which I understand has to more to do with Blittler C2P techniques), do you know if there has there been any innovation in fast polygon rendering for the Amiga? Or are we pretty much at the same spot as when David Braben made Frontier? |
|
![]() |
![]() |
#9 |
Registered User
Join Date: Jun 2016
Location: europe
Posts: 1,096
|
cheating = specialization (in a very controlled environment, without user interaction) :P
|
![]() |
![]() |
#10 | |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
Quote:
Sorry, I am not a developer - what do you mean by 'tables' that are used for 3D projection? Is that like a pre-written array of vertices and coordinates for each points in the polygon that you tell the program to render for specific frames, instead of calculating them on the fly? |
|
![]() |
![]() |
#11 |
Thalion Webshrine
Join Date: Jan 2004
Location: Oxford
Posts: 14,645
|
Ambermoon 3D sections. Work well on A500. Written by Demo scene coders who were moving to the PC. (certainly not on par with the techniques in Dread/Grind)
|
![]() |
![]() |
#12 |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
Ah, so that was an example of a demoscene developer moving to game... and the result shows! Thanks for the info.
|
![]() |
![]() |
#13 |
Registered User
Join Date: May 2023
Location: Norwich
Posts: 529
|
In a simple case, yes. More complex effects might store tables of partial calculations etc that cut down the amount of maths required to produce the required result but the principle is still the same. It's pretty much always quicker to look something up rather than calculate it, unless the maths is trivial (since finding a lookup entry might well involve some maths itself).
|
![]() |
![]() |
#14 | ||
Registered User
Join Date: Jun 2015
Location: Germany
Posts: 1,961
|
Quote:
Quote:
|
||
![]() |
![]() |
#15 | |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
Quote:
|
|
![]() |
![]() |
#16 | |
Global Moderator
Join Date: Sep 2006
Location: Germany
Age: 46
Posts: 32,554
|
Quote:
|
|
![]() |
![]() |
#17 | |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
Quote:
|
|
![]() |
![]() |
#18 |
Registered User
Join Date: Feb 2008
Location: Northampton/UK
Posts: 537
|
It does look fantastic :-)
The scene at 1.06, I don't think it's texture mapped. I think the facets are looking through to other bitplane's that are scrolling a picture. Similar to how Da Jormas fake their Phong shading. Could be wrong though, I'm not a coder. |
![]() |
![]() |
#19 |
Registered User
Join Date: Oct 2021
Location: boston
Posts: 40
|
You're right - now that I had time to examine it more closely, it is indeed another layer of images scrolling around independent of one another. That is a really clever trick!
Last edited by carlosgod; 29 July 2024 at 15:16. |
![]() |
![]() |
#20 |
Registered User
![]() Join Date: Dec 2017
Location: Austin, TX
Age: 41
Posts: 418
|
An old scene trick I've reused very recently divides a bounding box (cube) into evenly spaced points, allowing polygon vertices only at these points. This is sufficient to represent many nice shapes with subdivision.
Instead of rotating/scaling every vertex of the object, which is expensive, rotate/scale three unit vectors only, one for each axis. Build a vector lookup table for each axis by successively adding this vector to itself. Finally, to rotate/scale any point of the object, look up its position in the three tables and sum the vectors together. I've also made extensive use of log/exp lookup tables to turn multiply/divide into add/subtract. And of course sin/cos tables. |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
3D Polygon fun Powerboat USA/Heat Wave? | Angus | Retrogaming General Discussion | 11 | 18 March 2024 13:08 |
Who wrote the 3D routines for Unreal and how is it done? | ImmortalA1000 | Coders. General | 11 | 08 July 2021 09:46 |
[Factory]3d polygon techniques | Samurai_Crow | project.Amiga Game Factory | 0 | 12 December 2017 09:06 |
People are looking to create video game company | Amiten | Amiga scene | 7 | 23 November 2011 12:50 |
scene people | Time Bandit | Nostalgia & memories | 8 | 09 December 2002 11:43 |
|
|