Home   News   Concept   AMIGA-Compatible   Hardware   Forum   Questions+Answers   Pictures   Contact & Team

Welcome to the Natami / Amiga Forum

This forum is for AMIGA fans interested in the new NATAMI platform.
Please read the forum usage manual.



All TopicsNewsQAFeaturesTalkTEAMLogin to post    Create account
Do you have ideas and feature wishes? Post them here and discuss your ideas.

API's and Other Abstractionpage  1 2 
Marcel Verdaasdonk
Netherlands

Posts 3991
31 Oct 2011 05:47


Samuel is right and here is the topic.

Rotation.
For the Natami this can be a hardware feature with a abstraction.
Why the abstraction layer because this is going to be part of the 3Dcore eventually this doesn't mean another unit can't handle this untill then.

Updating the classic AGA API to fit the AROS needs this means mostly a intergration of the SDL API into the OS API and using a clean room approch.

sorry for the typo's

Thomas Richter
Germany
(MX-Board Owner)
Posts 1425
31 Oct 2011 07:26


Marcel Verdaasdonk wrote:

  Rotation.
  For the Natami this can be a hardware feature with a abstraction.
  Why the abstraction layer because this is going to be part of the 3Dcore eventually this doesn't mean another unit can't handle this until then.

What exactly do you have in mind, technically, and which use cases do you consider important for that?

(Hardware scaling, might be, for example interesting for video playback. With some engineering ingenuity, it might be possible to fit that into the blitter similar to the line mode since it is a linear transformation that can be solved by a variant of the Bresenham algorithm).

So long,
Thomas


Claudio Wieland
Germany
(Natami Team)
Posts 706
31 Oct 2011 11:01


Thanks, Marcel, for opening a new topic.

Some use cases for LQ/HQ scaling and rotating:
----------------------------------------------
o) Video playback (like ThoR pointed out).
o) Fast HQ font and image rendering for word processing.
o) Quickly change sound data pitch for audio processing.
o) BOB manipulations for games (and demos).

That's what first comes to mind.

Requirements:
-------------
o) Nearest-neighbor approach for LQ (indexed) mode, for best
    quality.
    o) Bilinear remapping in indexed modes to CLUT entries
      would otherwise slow down the whole thing and deliver ugly
      end results on average (probably).
    o) Interleaved planar bitmap format for fast internal P2C
      conversion On-the-fly to get the CLUT indexes.
o) Bilinear approach for HQ (chunky) mode.



Team Chaos Leader
USA
(Moderator)
Posts 2094
31 Oct 2011 11:16


My current use case for Rotation is this:

I have a 1792x64 pixel animation (30 frames of 32-bit color) of Dragon Breath that I need to 2D rotate so that it goes across the screen at the correct angle. 

Thomas Richter
Germany
(MX-Board Owner)
Posts 1425
31 Oct 2011 12:45


Team Chaos Leader wrote:

My current use case for Rotation is this:
 
  I have a 1792x64 pixel animation (30 frames of 32-bit color) of Dragon Breath that I need to 2D rotate so that it goes across the screen at the correct angle. 

Why don't you rotate it upfront and store the rotated graphics in memory? Memory is much cheaper than dedicated hardware.


Claudio Wieland
Germany
(Natami Team)
Posts 706
31 Oct 2011 12:57


1792 x 64 x (4 bytes) x (30 frames) = 13.125 MiB alone for one single rotation angle across the screen. If you consider maybe 1-degree rotation angles, you can see where this ends.. .
   
So, a realtime rotation/scaling rendering engine is an absolute must. For small images, I agree that a prerendering would make sense.
 
BTW, above assumption is basically "false" / overly optimistic, since depending on rotation angle, the image needs rather more than less space.

Team Chaos Leader
USA
(Moderator)
Posts 2094
31 Oct 2011 13:08



Team Chaos Leader wrote:

  My current use case for Rotation is this:
 
  I have a 1792x64 pixel animation (30 frames of 32-bit color) of Dragon Breath that I need to 2D rotate so that it goes across the screen at the correct angle. 
 

Thomas Richter wrote:

  Why don't you rotate it upfront and store the rotated graphics in memory? Memory is much cheaper than dedicated hardware.
 

I have been thinking about doing that.... but there are many of these breath weapon type fx.  Some of them are 240 frames @60fps and I would have to prerotate all these thousands of frames * all 75000 possibilities.  So that is around 400 Million frames.  At an average filesize of 50K per frame that works out to 20 GB of storage.

> 20 GB of storage is cheap these days.

Yes it is.  I agree 100%.  But Aminet will crash and burn when I put a 40GB game on it. :)



Marcel Verdaasdonk
Netherlands

Posts 3991
31 Oct 2011 16:47


I said rotation in a API since this could be a abstraction for both old and new systems.
On the Natami there could be hardware acceleration for it while older systems are stuck with a software implementation.
Besides that a Software Algorythm could be implemented in hardware if the team doesn't feel like doing a lot of work on it.(key here is parallelization of the said algorythm)

Samuel D Crow
USA
(Natami Team)
Posts 1295
31 Oct 2011 18:32


If we have the Tami core done within a certain amount of time, we can use it's texture mapper as an image rotation engine.  Image rotation should be in the APIs of AROS for certain.
 
  Another one I was thinking of was 8-way tile scrolling.  Amiga has scrolling tricks that are built into the hardware as the autoscrolling feature proves.  But the methods of saving Chip RAM by using the Copper to wrap-around vertically and setting all but the first and last row of pixels to be only slightly larger than the screen width is great and well documented at EXTERNAL LINK on the Aminet.  I'm sure that should go into the OS as a shared library.
 
  Other candidates are for streaming audio and video from the hard drive using the custom chipset functions.  I've got an idea for making hard-drive streamed video by having the Copper set the "danger bit" and jam values into the Blitter control registers as fast as the Blitter can take them.  The Copper lists for doing so would be double-buffered from the hard drive access.  But the problem with this algorithm is that it can't be ported to other graphics chipsets since it would be raw Blitter and Copper accesses running from disk.  Maybe we should limit this to polygon rendering and make the PCs and friends do realtime rendering instead of streaming it from the hard drive.

Marcel Verdaasdonk
Netherlands

Posts 3991
31 Oct 2011 18:48


Samuel the real time rendering should be more important since the bottle neck in streaming would be the IDE interface not the itself disk nor the Blitter.

About 8 way til scrolling interresting i must read up on it but as long as it doesn't cause visual artifacts it's great. ;)

Thomas Richter
Germany
(MX-Board Owner)
Posts 1425
01 Nov 2011 10:24


Claudio Wieland wrote:

  So, a realtime rotation/scaling rendering engine is an absolute must.

I'm always surprised with which expectations people come here... (-; I wonder how could anyone ever develop games on the Amiga *not* having such an essential unit...

Ok, to be serious: There is still a lot of things to do here. And no, I don't consider such a unit essential. If your work requires one, I believe a PC will do just fine as OpenGL texture rendering will do it basically for free. The art of programming: Doing the impossible with as little as you have.

To give you something I consider essential: The line mode. It is really "bare basics" the Amiga had, and these should be working as otherwise existing software simply doesn't work. The ability to connect a modern LCD to it is also essential, as otherwise you don't see anything. The ability to play sound, and the ability to connect a HD that you don't have to steal from a museum, also the ability to connect a mouse and a keyboard.

Everything else is, at best, "extra".



Ray Couzens
United Kingdom

Posts 22
01 Nov 2011 11:29


Thomas Richter wrote:

Claudio Wieland wrote:

  So, a realtime rotation/scaling rendering engine is an absolute must.
 

  I'm always surprised with which expectations people come here... (-; I wonder how could anyone ever develop games on the Amiga *not* having such an essential unit...
 
  Ok, to be serious: There is still a lot of things to do here. And no, I don't consider such a unit essential. If your work requires one, I believe a PC will do just fine as OpenGL texture rendering will do it basically for free. The art of programming: Doing the impossible with as little as you have.
 
  To give you something I consider essential: The line mode. It is really "bare basics" the Amiga had, and these should be working as otherwise existing software simply doesn't work. The ability to connect a modern LCD to it is also essential, as otherwise you don't see anything. The ability to play sound, and the ability to connect a HD that you don't have to steal from a museum, also the ability to connect a mouse and a keyboard.
 
  Everything else is, at best, "extra".
 
 
 

Absolutely! We need the foundation in place before building the roof.  I see the Natami not as a machine requiring ultimate speed but as a new Amiga that can run Amiga software. Additionally, with it's improved spec able to go beyond the original machines.  Expectations are very high, and it's good that people look ahead, but I think it's even better that the Natami team are grounded in reality and undertaking the project in a very professional, methodical way.  I like the idea of a new Amiga machine being professionally developed and that will be released complete, not suffering from commercial dead-lines and short-cuts.  Let the extra features and improvements come after we have a solid working Natami.

Marcel Verdaasdonk
Netherlands

Posts 3991
01 Nov 2011 17:19


this topic is on API's and abstraction, last i checked that was away from the hardware.
real time done in hardware, there is no such thing as real time in digital computers since there is always some latency question is it acceptable?

Now people back to topic!

What is needed in the API?

Thomas Richter
Germany
(MX-Board Owner)
Posts 1425
02 Nov 2011 19:17


Marcel Verdaasdonk wrote:

  real time done in hardware, there is no such thing as real time in digital computers since there is always some latency question is it acceptable?

Guess what - the latency between your eyes and your consciousness is a lot larger. Or to put it differently, reality as you observe it is a nice fake by your brain, you're necessarely behind by many milliseconds. So don't be so harsh to computers, please.

As far as the API is concerned - there are probably many things wrong with the AmigaOs API, but it isn't terribly bad either. And you can certainly extend it by third party libraries like SDL, for example.



Marcel Verdaasdonk
Netherlands

Posts 3991
02 Nov 2011 19:37


I know Thomas, but that doesn't matter what does matter is that the abstraction we have between the hardware and the programs isn't too sluggish so that i would be aware of it with my high latency brain. ;)

I propose a horizontal API extension to what the OS currently has.
This means the API itself could commandeer the hardware away from the OS like hitting the hardware directly.(not passing through OS calls when it's not needed)
We could add a message port to the API so that AROS can intergrate it as a parallel extension and thus keeping what is good.(relative low latency)
And allowing modernizing of the AOS concept without adding to abstraction.(which would add latency)

Oh Vertical extension would be building ontop of the OS like any normal program would do.(OS friendly)


Asaf Ayoub
United Kingdom

Posts 332
03 Nov 2011 16:50


I think we should aim for system API independent programming.

Similar to a Framework, easy access to functions without being buried in opening thousands of libraries.

1,2,3 - three lines to get access to function for gfx, menu, network etc.


Claudio Wieland
Germany
(Natami Team)
Posts 706
04 Nov 2011 20:01


Thomas Richter wrote:

   
Claudio Wieland wrote:

      So, a realtime rotation/scaling rendering engine is an absolute must.
     

      I'm always surprised with which expectations people come here... (-; I wonder how could anyone ever develop games on the Amiga *not* having such an essential unit...
     
      Ok, to be serious: There is still a lot of things to do here. And no, I don't consider such a unit essential. If your work requires one, I believe a PC will do just fine as OpenGL texture rendering will do it basically for free. The art of programming: Doing the impossible with as little as you have.
     
      To give you something I consider essential: The line mode. It is really "bare basics" the Amiga had, and these should be working as otherwise existing software simply doesn't work. The ability to connect a modern LCD to it is also essential, as otherwise you don't see anything. The ability to play sound, and the ability to connect a HD that you don't have to steal from a museum, also the ability to connect a mouse and a keyboard.
     
      Everything else is, at best, "extra".
   
   

   
Regarding your first paragraph, maybe the question should be different: Would people not have used such a unit, had it existed at that time just to prove it can be done without? (^^)
   
My opinion is equivalent of yours, if one needs a powerful machine, buying a modern PC is a wise choice.
   
Considering what's "extra".. I need a reason to buy a comparably expensive machine like Natami (it's no mass market after all..), and if there are no extras that make it worthwhile that "make it cool" I will probably not buy it.
 
Also, if there is still considerably much logic space left in the FPGA, it can or can not be put to use. I prefer the first. The silicon is there (and what's important (!) it's already paid for), whether it is being used or not. So (forgive my wording) let's f***ing use it :D .
   
And of course, I agree that the essentials are line mode, video out etc and they need to work. Period.

Przemyslaw Szeremiota
Poland

Posts 25
04 Nov 2011 23:46


Thomas Richter wrote:

  Guess what - the latency between your eyes and your consciousness is a lot larger. Or to put it differently, reality as you observe it is a nice fake by your brain, you're necessarely behind by many milliseconds. So don't be so harsh to computers, please.

Ha ha, but when I move my head, and I know I moved it, because I see different part of room, it feels pretty snappy, from my desire to seeing other wall :D. It is really fun to imagine that latency, so I've just measured my reaction time, from visual signal to actuating (mouse click, and i have cumbersome mouse buttons); its 201 ms best after 5 tries, and tested population average is reported as about 215 ms. Well, so how much latency there is between my eyes and my consciousness?

- there was some latency in trigger event (screen goes green); don't know how much, but maybe even 16 ms (screen refresh rate). + multitasking, potential page faults, etc.
- there was some latency in timer stopping, after my reaction; don't know how much, but maybe even 8 ms (mouse polling rate, 125 Hz?) + multitasking, potential page faults, etc.

If you consider also that actuating (pressing mouse button) is magnitudes slower than information processing... maybe we are not that much outdated in our minds? Be it 2 or 3 ms, it is really good real-time system :-).

BTW, "real-time system" in my language is defined as "system with rigorous timing requirements", not necessarily 0ms latency requirement :) So yes, we have real-time consciousness even if it is few (but I would not say "many") miliseconds behind :-).

Team Chaos Leader
USA
(Moderator)
Posts 2094
05 Nov 2011 02:10



So yes, we have real-time consciousness even if it is few (but I would not say "many") miliseconds behind :-).

+1

Under normal circumstances my brain runs between 200 fps and 1000 fps.  When it is running at 1000 fps I only have a 1 ms delay at "reality perception".

And I can easily press and release the mouse button 5 times in 1 second.

WTH?!  I just pressed my shift key 5 times in 1 second and my firewall popped up and said "Replacing Application Windows NT High Contrast Application"  What on Earth is that about?  I am on Windoze XP.



Marcel Verdaasdonk
Netherlands

Posts 3991
05 Nov 2011 03:54


Windows XP is a NT version.
On Topic

We're not gonna have a system that will do 200 frames a second for the simple reason i don't see a team member making the monitor file for it.

posts 27page  1 2