Jump to content

Photo

How was the object processor used?


65 replies to this topic

#51 VladR OFFLINE  

VladR

    Stargunner

  • 1,266 posts
  • Location:Montana

Posted Tue May 15, 2018 8:58 AM

The object processor is a very cool piece of hardware for its time, designed by some very smart people with no common sense.

I have to very strongly disagree. Designers of Atari jaguar actually pulled off an incredible engineering feat, considering the time they conceived it. Unfortunately, the market leaders pushed the technology elsewhere (towards texturing, which looked like shit for next half a decade). Jaguar is actually capable of creating very complex flatshaded 3D scenes, that totally beat any textured low-poly look. But, Sony went the way it did, so here we are...

 

 

 Had they not tried to squish all the data together in the object list and just used an extra 4 bytes to allow things to be on 8 or 16 bit offsets

From performance standpoint, on a HW level, 256-bit alignment makes a lot of sense. This has reminded me of DirectX 8.1 era 3D coding, where such aligning of your vertex buffers would result in incredible performance boost. We're talking GeForce-3 era here, so quite a beast compared to jag, yet at the lowest level, the alignment plays right into caching, so if you organized your vertices according to the L2-cache split-way algorithm, you were rewarded very handsomely.

 

That's just how HW works, you can never get away from this. Not even on PS4 - doesn't matter how many layers of indirection (driver -> DirectX -> Unreal engine -> Your App) you put in between, the alignment will always have to be taken into account.

 

 

... , all the software building the object list would be so much more efficient, ...

Exactly, how much time are you spending on OP List ? If you're using the unmodified Atari-sample code, don't expect more than about 25-30 bitmaps updated during interrupt on 68000. With modifications, it is much more, but there's an obvious limit due to 68000's cycle throughput.

 

if you need more than that, you have 3 choices:

1. Prepare the list during frame-time on 68000 (zero complications), just takes away the cycle for game, though the resulting triple OP buffering requires some time to get right...

2. Prepare the list on DSP - thus GPU doesn't have to waste precious cache on such menial task

3. Prepare the list on GPU - easier to do than on DSP due to certain undocumented DSP HW bugs, but there goes your 4 KB cache...

 

Regardless, coding on Jaguar in Asm requires some upfront effort. If you're doing it in high-level language, like C, that's 2-3 pages of code, so that's not a big deal...



#52 sh3-rg OFFLINE  

sh3-rg

    River Patroller

  • 3,365 posts
  • doge + tie = dothemath
  • Location:BOLTON, England

Posted Tue May 15, 2018 11:06 AM

Hmmmm, I wonder, why hasn't nobody, who might already be putzing around these 2D games on jag, attempted one ?

 

Oh, I know ! Nobody wrote one for Atari ST ! There's no pre-existing codebase to parasite on! Oh, shoot!

 

 

salty-as-fuckowpsj.png



#53 philipj OFFLINE  

philipj

    Moonsweeper

  • 425 posts
  • Location:Birmingham, Alabama

Posted Tue May 15, 2018 12:04 PM

While I haven't looked into how exactly does Project-M do the rendering, but from my experience with my 6502 flatshader, the scanline filling approach on Atari 800 is very fast because of the following:

- unrolled STA takes just 4 cycles

- at Antic $0D mode, that's 4 pixels, e.g 1 cycle / pixel

- you have 24,954 cycles available per frame (at 60 fps) (after Antic is finished with its highway robbery), so it's quite a number of pixels you can fill and retain 60 fps

- of course, interlacing halves the number of scanlines, and pixels, and increases the available cycle budget for 6502 CPU

- since you can program Antic (a precursor to the OP in jaguar), you can align each scanline at a page boundary, thus allowing you to jump across scanlines via a simple INC vidptrHi, that takes just 5 cycles

 

- of course, even a non-unrolled code is still fast - an indexed STA addr, X takes just 5 cycles (and INX takes 2c), so you can fill the scanline very fast

 

 

6502 is, indeed, for its time, a very fine technological achievement, as a lot of ops take just 2cycles (not easy to accomplish even on jag's RISCs with its pipelined architecture)

And to think I had a 1200XL and sold it... What was I thinking. It was the "Mr Wizard" Atari system of all systems. lol Well the info I got from the "M Project" came straight from the horses mouth/the guy who posted the YouTube in a comment some years back when he first posted it. At first I thought he was using some raycasting on the Atari 8 computer, which was done once before, but not quite the way this guy seemed to have pulled it off at that kind of resolution. I can't seem to find the actual quote, but no ray casting was used, it was full on scan-lines using interrupts to do all of the pseudo 3D effects; that much I do remember considering at that time I was looking at the Atari 7800 graphic chip able to use display-list, which is very different then the 130xl graphic chip, yet share some common ground with the Jaguar's OP able to display almost in similar manner. It seem like whatever the Jaguar OP lacks in comparison to the Atari 8s graphic ability, could be made up in speed, but then again, even the Atari 8bit computer had a little more ram to do more graphical things then the Jags GPU with only 4KB of internal.

 

My thing is this, the GPU is a 2D monster very capable of doing 2D display and manipulation in real-time without breaking a sweat, which I've always credited as the Jaguar's strength... If 3D can be done using the DSP or the M68K or both very minimally using low poly based 3D models, and I mean low poly to the bone for the sake of speed and broad view distance, the GPU can interpret 3D data and render fairly accurate pseudo 3D/2.5D based of real 3D math as a way to fake high polygon objects in a similar fashion a voxel height-map is used or 2D meta-balls are used to render high detailed 3D images to screen only in this case, pseudo 3D is faked to look like real 3D high poly objects when in reality no real polygon is used, it just looks that way. It doesn't have to be voxel or metaballs per-say; just a smarter way to convey high detailed 3D in a way that takes the polygon count out of the equation or "Limitless 3D" as I use to say back in the old JS2 days; only its a new day today, I have a better understanding on things today then I did back in the day. That's what I mean by faking the living daylights out of 3D if that make any since to anyone.



#54 VladR OFFLINE  

VladR

    Stargunner

  • 1,266 posts
  • Location:Montana

Posted Tue May 15, 2018 2:23 PM

it was full on scan-lines using interrupts to do all of the pseudo 3D effects

Well, he has to use DLIs, as he's displaying 256 colors (well, 16 lumas per base color). Note that in that particular resolution (you gotta set bit 6 in the PRIOR register), 1 byte covers 2 framebuffer pixels, but they're the widest one (4x wider in terms of video clock), so there's just 80 of them per screen (in standard screen playfield width, for narrow or wide playfield, add/sub one quarter accordingly). This means, only 40 STAs per scanline (to fill). Of course, that's fast at 4-5 cycles per STA.

 

 

It seem like whatever the Jaguar OP lacks in comparison to the Atari 8s graphic ability, could be made up in speed, but then again, even the Atari 8bit computer had a little more ram to do more graphical things then the Jags GPU with only 4KB of internal.

Totally agree. I can't express the same enough, as while I was working on 6502 flatshader, the ability to unroll functions to more than 4 KB feels absolutely incredible, after having spent so much effort on jaguar. No penalty for unrolled code whatsoever! Even 8 KB (like we have for DSP) is allowing for drastic performance improvements. If we had 16 KB...

 

And, given the recent memory expansions of Atari 800, you can have up to 4 MB of RAM. What's really neat is that due to the HW requirement, all that memory must be available in next cycle, after you select request bank (via PORTB register).

So, that's basically full-speed code execution from 4 MB on Atari 800 vs 4 KB on Jaguar :lol:

 

 

My thing is this, the GPU is a 2D monster very capable of doing 2D display and manipulation in real-time without breaking a sweat, which I've always credited as the Jaguar's strength... If 3D can be done using the DSP or the M68K or both very minimally using low poly based 3D models, and I mean low poly to the bone for the sake of speed and broad view distance, the GPU can interpret 3D data and render fairly accurate pseudo 3D/2.5D based of real 3D math as a way to fake high polygon objects in a similar fashion a voxel height-map is used or 2D meta-balls are used to render high detailed 3D images to screen only in this case, pseudo 3D is faked to look like real 3D high poly objects when in reality no real polygon is used, it just looks that way. It doesn't have to be voxel or metaballs per-say; just a smarter way to convey high detailed 3D in a way that takes the polygon count out of the equation or "Limitless 3D" as I use to say back in the old JS2 days; only its a new day today, I have a better understanding on things today then I did back in the day. That's what I mean by faking the living daylights out of 3D if that make any since to anyone.

Well, what if I told you, that I already have [recently] done initial research&testing (on jag) on one such particular poly-faking technique, that was used very heavily as late as in the Xbox 360-era. It just so happens that it especially favors driving games (due to the nature of post-transform clip-space and associated very low "pop"-style visual errors) :)

Granted, the associated bandwidth cost is not free on Jaguar, but definitely beats doing full-blown 3D pipeline and hand-holding the Blitter every single damn scanline (which burns a lot of GPU cycles, though I improved in that particular era 2 weeks ago).

 

Basically, you transfer the performance equilibrium from the limited MIPS power into more available bandwidth power. There's a polygon threshold (it does not make sense to us low poly count for the technique - the higher the poly count the better, actually :) ), where it starts to pay off. I found the best results in roughly 5x - 10x polycount that I am using currently. Of course, still keeping the same performance :)

 

It's amazing what the machine was designed to do. Shame, it basically never got used for more than 10-15% of its potential...



#55 CyranoJ OFFLINE  

CyranoJ

    Quadrunner

  • 5,187 posts
  • RAPTOR in LOCAL
  • Location:Adelaide, SA

Posted Tue May 15, 2018 4:12 PM

Awwwww, you're so sweet ! I love you too, darling  :lol:        I wouldn't however waste my breath on such a synthetic benchmark ;)

 

That benchmark does, however, show that a bullet-hell-style game is totally doable on Jaguar. With one caveat - it requires a tiny little bit of a new-code effort, though !

 

 

 

 

Hmmmm, I wonder, why hasn't nobody, who might already be putzing around these 2D games on jag, attempted one ?

 

Oh, I know ! Nobody wrote one for Atari ST ! There's no pre-existing codebase to parasite on! Oh, shoot!

 

 

 

 

Because if there actually was such an Atari ST game,

attachicon.gifGpuAccelerated.gif

 

About 10 years ago we were looking into this. We only managed rather quite a lot of sprites and bullets, 3 layers parallax plus audio and, gosh, some game logic and joypad input... but couldn't quite get it below 60fps.

 

How time flies when you are releasing stuff.

 

bullets.jpg

 

PS, I love you too, hunnybunny.



#56 VladR OFFLINE  

VladR

    Stargunner

  • 1,266 posts
  • Location:Montana

Posted Tue May 15, 2018 8:26 PM

I love you too, hunnybunny.

Ya throwing Pulp Fiction at me :lol:  ?

 

IDareYouMF.gif

:lolblue:



#57 sh3-rg OFFLINE  

sh3-rg

    River Patroller

  • 3,365 posts
  • doge + tie = dothemath
  • Location:BOLTON, England

Posted Tue May 15, 2018 10:58 PM

Never thought it possible. Vlad memes orders of magnitude less effective than Vlad games.



#58 LinkoVitch OFFLINE  

LinkoVitch

    River Patroller

  • 2,448 posts
  • Location:Manchester UK

Posted Wed May 16, 2018 1:39 AM

Never thought it possible. Vlad memes orders of magnitude less effective than Vlad games.

 

At least they exist outside of the numberwang universe of theoretical nonsense.

 

I wonder why with all his apparent knowledge, skills and sheer awesome coderness, why have there been a total of 0 releases in public demonstrating his awesomeness??  It's almost like nothing has any actually ever been produced beyond walls and walls of text.

 

weird.



#59 CyranoJ OFFLINE  

CyranoJ

    Quadrunner

  • 5,187 posts
  • RAPTOR in LOCAL
  • Location:Adelaide, SA

Posted Wed May 16, 2018 6:02 AM

 

At least they exist outside of the numberwang universe of theoretical nonsense.

 

I wonder why with all his apparent knowledge, skills and sheer awesome coderness, why have there been a total of 0 releases in public demonstrating his awesomeness??  It's almost like nothing has any actually ever been produced beyond walls and walls of text.

 

weird.

 

There was that Hero binary that produced a stunning 60fps black screen.



#60 LinkoVitch OFFLINE  

LinkoVitch

    River Patroller

  • 2,448 posts
  • Location:Manchester UK

Posted Wed May 16, 2018 6:22 AM

 

There was that Hero binary that produced a stunning 60fps black screen.

 

Did you confirm the frame rate of the black screen with the industry standard YT of the screen?



#61 VladR OFFLINE  

VladR

    Stargunner

  • 1,266 posts
  • Location:Montana

Posted Wed May 16, 2018 9:12 AM

Truth be told, unlike certain individuals here, I have much higher standards as to what I release to public ;)

 

Could I have initiated a code freeze on the engine a year ago ? Sure, it was plenty fast then and certainly a respectable 3D scene complexity would be delivered.

 

I'm glad I didn't, as I keep discovering new tricks and features jag's capable of. I'll just keep pushing the 3D scene complexity further for my first game.

 

Jag's not going anywhere, anyway.

 

 

 

Besides, I really, really enjoy how it pisses you off and it reeks off your all such posts (as much as you - totally unsuccessfully - try to disguise it in "irony" and "sarcasm")  :lol:

So, please, by all means, continue doing so - thank you for the provided priceless entertainment  :rolling:



#62 phoenixdownita OFFLINE  

phoenixdownita

    River Patroller

  • 3,000 posts

Posted Wed May 16, 2018 10:57 AM

Awwwww, you're so sweet ! I love you too, darling  :lol:        I wouldn't however waste my breath on such a synthetic benchmark ;)

.....

AAAAAAAAAAAARRRRRRRRRRGGGGGGGHHHHHHH ..... now I will never know if it's really 60fps ..... please please take a crack at it on the YT video?



#63 phoenixdownita OFFLINE  

phoenixdownita

    River Patroller

  • 3,000 posts

Posted Wed May 16, 2018 10:59 AM

Truth be told, unlike certain individuals here, I have much higher standards as to what I release to public ;)

 

Could I have initiated a code freeze on the engine a year ago ? Sure, it was plenty fast then and certainly a respectable 3D scene complexity would be delivered.

 

I'm glad I didn't, as I keep discovering new tricks and features jag's capable of. I'll just keep pushing the 3D scene complexity further for my first game.

 

Jag's not going anywhere, anyway.

 

Neither are we (unless health steps in the way that is) ... at your current release pace we'll see a Jag game from you once hell freezes over .... with any luck by then we will have an FPGA Jag to admire it with.



#64 LinkoVitch OFFLINE  

LinkoVitch

    River Patroller

  • 2,448 posts
  • Location:Manchester UK

Posted Wed May 16, 2018 3:20 PM

Truth be told, unlike certain individuals here, I have much higher standards as to what I release to public ;)

 

 

If only that extended to the text you posted as well, and the buzzword bingo walls of pseudo science and code.



#65 CyranoJ OFFLINE  

CyranoJ

    Quadrunner

  • 5,187 posts
  • RAPTOR in LOCAL
  • Location:Adelaide, SA

Posted Wed May 16, 2018 4:01 PM

Besides, I really, really enjoy how it pisses you off and it reeks off your all such posts (as much as you - totally unsuccessfully - try to disguise it in "irony" and "sarcasm")  :lol:

So, please, by all means, continue doing so - thank you for the provided priceless entertainment  :rolling:

 

You are confusing "pisses you off" and "makes me look like a bitter moron".

Please, carry on.

 

[edit]

 

I honestly don't know what your problem is, dude.  Out of the blue, random attacks lately. I thought you just wanted to work on your 3D engine?  Will you ever finish it? Who knows.. tbh, I hope you do, and I hope it will be all you claim it to be, and that you write a great game with it for the system.  All I've done for the Jaguar for the last -nearly decade- is produce code, release code, release examples, games and now an API, in order to further development and improve the situation.  If your 3D engine adds to that mix of possibilities for people, then all the better.

As stated -many- times: 3D for me holds no excitement. I love 2D arcade games. The Jaguar is a dream machine at that. I have no interest in making 3D games, and probably never will.

 

If you want to continue behaving like a 3 year old, do carry on.  It has no impact on my life at all, but it does reflect on you.



#66 VladR OFFLINE  

VladR

    Stargunner

  • 1,266 posts
  • Location:Montana

Posted Wed May 16, 2018 8:31 PM

 

You are confusing "pisses you off" and "makes me look like a bitter moron".

Please, carry on.

 

[edit]

 

I honestly don't know what your problem is, dude.  Out of the blue, random attacks lately. I thought you just wanted to work on your 3D engine?  Will you ever finish it? Who knows.. tbh, I hope you do, and I hope it will be all you claim it to be, and that you write a great game with it for the system.  All I've done for the Jaguar for the last -nearly decade- is produce code, release code, release examples, games and now an API, in order to further development and improve the situation.  If your 3D engine adds to that mix of possibilities for people, then all the better.

As stated -many- times: 3D for me holds no excitement. I love 2D arcade games. The Jaguar is a dream machine at that. I have no interest in making 3D games, and probably never will.

 

If you want to continue behaving like a 3 year old, do carry on.  It has no impact on my life at all, but it does reflect on you.

Darling, I'm not confusing anything. Your post only confirmed that - you sure you read it before submitting ;) ?

 

 

As for the "3-year old" reference - it's incredibly ironic especially coming from you, as let me remind you that it was you crying to mommy (e.g. moderators) like 3-year old who banned me from the ST thread (when I posted something that didn't correspond with your version of perceived reality).

 

But, that's of course, to be expected, from somebody like you - there's no doubt in my mind about your absolute lack of integrity. But, it's not a capital offense, merely a character trait (or lack thereof), so...

 

 

 

I'm pretty sure this one thread is more mine than yours, as I'm exchanging ideas and experience about 3D algorithms. There's nothing you (or your minions who are spamming the shit out of this thread) can contribute here. Your recent 15-fps "GPU-accelerated" port more than sufficiently confirms that, anyway...

 

 

 

But, by all means, like you did recently (remember your "3-year old" reference?), go and execute your [friendly/intimate/dark/whatever/really don't care what kind of] relationship you have with mods and put an end to this creative brainstorming we're having here with philipj :!:






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users