Menù principale
 Notizie
 Grafica
 Forum
 Links
 Retro Trailer
 Recensioni
 Modelli Amiga
 Storia Amiga
 Retro-Gamers
 Lista Utenti
 Contatti
 Policy sito
Ricerca Google

Login

Nick


Password


26 Aprile 2024 Postato da: bubu7te
Realtime raytracing su Classic Amiga
Prendendo spunto dall'affascinante programma "Raytracing in 10 linee di codice BASIC", che è possibile trovare in rete sia per Atari 8 bit che per BBC Micro, ne ho iniziato il porting su Amiga AGA con l'idea di vedere se si riuscisse a raggiungere qualcosa vicino al realtime.
L'immagine finale è la seguente:
Immagine

Maggiori info qui: https://twitter.com/alimede_info/status/1782839116 062712132

E' disponibile una primissima versione compilata per 68020 + FPU: http://download.alimede.com/public/raytracer_128x9 6_fpu_0
(NB: è necessario avere la c2p.library 1.6 installata sul sistema, disponibile su Aminet)

NB: Questa versione non è ancora ottimizzata al meglio.

Sulla mia Blizzard 1230 IV con 68882 per un output di 128x96 pixel ottengo la bellezza di 0,52 FPS (AProf indica una media di 1920ms per frame)
Dal momemto che il coprocessore 68882 fa il suo lavoro, ma è pur sempre esterno alla CPU e spreca molti cicli di clock rispetto a un 68040 o 68060, chiedo a chi in possesso di una scheda acceleratrice con 040 o 060 e volesse essere interessato di eseguire un giro di prova per vedere quanti ms di media impiega il render su questi microprocessori.

Per eseguire il test è sufficiente lanciare il programma tramite il profiler AProf (disponibile anch'esso su Aminet), farlo girare e alla fine vedere il tempo medio della funzione Execute.

Alla fine del progetto, ottimizzato, pubblicherò il programma su Aminet con i sorgenti in licenza MIT.

Ciao a tutti

Modificato il 26/04/2024 alle ore 15:39:10

Commenti: 14  Aggiungi  - Leggi

Indice: forum / Software Amiga in generale


SysAdmin Unix/Linux - fiero o folle possessore di un AmigaOne

Post inviati: 3225

Visulizza profilo Messaggio Personale
93.94.29.*** Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Commento 1
VagaPPC 30 Aprile 2024    16:18:56
È una strafigata, complimenti per il tuo lavoro.
Posso fare i test su Vampire V4, x5000, MOS e gli UAE integrati in esso.

WorkStation: Amiga x5000 AOS4.1 - MorphOS MiniMac - Vampire V4 - PC AMD Ryzen 9 7950X3D 64Gb RAM 5Ghz

Old System Amiga 500,1200, A4000/60 PowerPPC, CybervisionPPC, SUN Ultra5, PowerMAC G4 450Mhz 1Gb

Post inviati: 69

Visulizza profilo Messaggio Personale
185.232.88.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Commento 2
bubu7te 2 Maggio 2024    15:11:35
In risposta a VagaPPC
VagaPPC

È una strafigata, complimenti per il tuo lavoro.
Posso fare i test su Vampire V4, x5000, MOS e gli UAE integrati in esso.




Grazie

Il programma non gira su PPC ma su 68020 o successivo + FPU, per cui credo che un giro di prova sulla Vampire V4 potrebbe essere interessante.
Nel frattempo ho creato una nuova versione scaricabile da qui: http://download.alimede.com/public/raytracer_128x9 6_fpu_2

Questa versione è ancora scritta totalmente in C (VBCC per la precisione), ma sono presenti diverse ottimizzazioni sull'algoritmo.
Per avere un'idea, ora su Blizzard 1230 IV ottengo 875 ms per frame, ovvero 1.142 FPS

In questa versione c'è anche un conteggio automatico delle prestazioni (ms e fps), così si può fare a meno di utilizzare un profiler: basta lanciare via shell il programma.
(NB: è richiesta la c2p.library, la trovi su Aminet: http://aminet.net/package/dev/misc/c2plib )

Non so quanto riuscirò a migliorare le prestazioni ottimizzando il codice direttamente in assembly, è un po' una sfida personale..
La notazione a virgola fissa (che compilerò in seguito) potrebbe risultare migliore su macchine come la mia, che hanno la FPU separata (68882 nel mio caso).
Mi aspetto che su 68040, 68060 o Vampire sia più veloce la versione che utilizza la FPU integrata.

Fammi sapere quali risultati ottieni su V4, se sono buoni potremmo pensare anche a una versione full screen 320x240..

gfx3d.library, c2p.library and thread.library developer - A1200 tower, Blizzard 1230IV, 68882, 32 MB RAM, Picasso II, X-Surf, AmigaOS 3.0-3.9

SysAdmin Unix/Linux - fiero o folle possessore di un AmigaOne

Post inviati: 3225

Visulizza profilo Messaggio Personale
93.94.29.*** Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Commento 3
VagaPPC 2 Maggio 2024    15:17:09
Se usi VBCC il porting per tutte le altre piattaforme dovrebbe essere facile.
Sono in fase cambio lavoro e sto facendo gli straordinari domestici, vorrei provarlo appena riesco a ritagliare un po di amitempo

WorkStation: Amiga x5000 AOS4.1 - MorphOS MiniMac - Vampire V4 - PC AMD Ryzen 9 7950X3D 64Gb RAM 5Ghz

Old System Amiga 500,1200, A4000/60 PowerPPC, CybervisionPPC, SUN Ultra5, PowerMAC G4 450Mhz 1Gb

AfAOne

Post inviati: 5933

Visulizza profilo Messaggio Personale
79.41.39.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Commento 4
AfAOne 2 Maggio 2024    15:32:05
@bubu7te

Se può interessare questi sono i risultati ottenuti su WinUAE con il mio AfA One (OS3.9 BB4 RTG), la demo scorre velocemente su un angolo dello schermo in alto a sinistra.

Non sono uno sviluppatore, ma ogni tanto mi diverto a compilare qualcosa con il GCC di AROS One x86, secondo te potrei compilare i sorgenti senza ricevere errori, io credo che bisognerebbe adattarlo ad AROS x86.


raytracer
Copyright (c) 2024 Alimede Informatica
www.alimede.com - All Rights Reserved.

debug log:

GfxBase: 0x078077dc
IntuitionBase: 0x0781350c
C2PBase: 0x10b56120
Context: 0x10d3d364
Reference: 0x10d3f3d4
Context initialization: 0x00000000
Chunky address: 0x10d4244c
BitMap address: 0x10d4aa40
Bitplane 0 address: 0x0000aebc
Bitplane 1 address: 0x0000b4bc
Bitplane 2 address: 0x0000babc
Bitplane 3 address: 0x0000c0bc
Bitplane 4 address: 0x0000c6bc
Bitplane 5 address: 0x0000ccbc
Bitplane 6 address: 0x0000d2bc
Bitplane 7 address: 0x0000d8bc
Force use of scrambled buffer: 0
Reference buffer: 0x00000000
Reference buffer writeback: 0
Screen address: 0x10b51ac0
Error code: 0x00000000
Elapsed seconds: 1.301153
Average ms per frame: 20
Average fps: 50.000

Commento modificato il 02/05/2024 alle ore 15:32:35


Immagine AROS One x86/68k
- AfA One - AfA One PPC - Amilator AfA One - Amithlon AfA One - WinUAE OS 4.1


SysAdmin Unix/Linux - fiero o folle possessore di un AmigaOne

Post inviati: 3225

Visulizza profilo Messaggio Personale
93.94.29.*** Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Commento 5
VagaPPC 2 Maggio 2024    15:43:27
Se è scritto con VBCC devi compilarlo con quello, anzi è il compilatore che garantisce maggiore portabilità.
Se vuoi compilarlo con GCC devi cambiare un po di include e mettere mani al codice per usare la sua sintassi.

I test con uae sono fallaci in quanto l'emulazione quando accede alla matematica lo fa con meno overead di Excel e poi si parlava di HW reale.
Penso che avrà anche lui un PC con cui testare

WorkStation: Amiga x5000 AOS4.1 - MorphOS MiniMac - Vampire V4 - PC AMD Ryzen 9 7950X3D 64Gb RAM 5Ghz

Old System Amiga 500,1200, A4000/60 PowerPPC, CybervisionPPC, SUN Ultra5, PowerMAC G4 450Mhz 1Gb

AfAOne

Post inviati: 5933

Visulizza profilo Messaggio Personale
79.41.39.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Commento 6
AfAOne 2 Maggio 2024    15:46:54
I testi su WinUAE sono variabili e da prendere con le molle infatti i vaolri descritti possono aumentare notevolmente come diminuire notevolmente, tutto dipende da cosa fa il PC in quel momento e le applicazioni che sta utilizzando, incluse quelle in background, come Antivirus, servizi avviati etc..

Immagine AROS One x86/68k
- AfA One - AfA One PPC - Amilator AfA One - Amithlon AfA One - WinUAE OS 4.1


SysAdmin Unix/Linux - fiero o folle possessore di un AmigaOne

Post inviati: 3225

Visulizza profilo Messaggio Personale
93.94.29.*** Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Commento 7
VagaPPC 2 Maggio 2024    15:58:20
AfaONe ti sei perso il senso della domanda,
voleva sapere come si comportava sugli altri Amiga.

Sappiamo tutti che uae è più veloce, non c'è bisogno che lo ricordi pedesiguamente a ogni occasione, post, opinione e thread di tutti i forum forum amiga del mondo.

winuae non è un Amiga è un emulatore

WorkStation: Amiga x5000 AOS4.1 - MorphOS MiniMac - Vampire V4 - PC AMD Ryzen 9 7950X3D 64Gb RAM 5Ghz

Old System Amiga 500,1200, A4000/60 PowerPPC, CybervisionPPC, SUN Ultra5, PowerMAC G4 450Mhz 1Gb

amiwell79

Post inviati: 12296

Visulizza profilo Messaggio Personale
95.246.162.*** Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0
Commento 8
amiwell79 2 Maggio 2024    16:04:16
ma penso che già i test con winuae erano stati effettuati, appunto si chiedeva di testare il programma su hardware reale

AfAOne

Post inviati: 5933

Visulizza profilo Messaggio Personale
79.41.39.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Commento 9
AfAOne 2 Maggio 2024    16:08:15
Su WinUAE si possono fare una miriade di configurazioni, quella di AfA One è particolare e potente, configurazione che pochi utenti Amiga utilizzano !

Immagine AROS One x86/68k
- AfA One - AfA One PPC - Amilator AfA One - Amithlon AfA One - WinUAE OS 4.1


SysAdmin Unix/Linux - fiero o folle possessore di un AmigaOne

Post inviati: 3225

Visulizza profilo Messaggio Personale
93.94.29.*** Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Commento 10
VagaPPC 2 Maggio 2024    17:29:59
In risposta a AfAOne
AfAOne

Su WinUAE si possono fare una miriade di configurazioni, quella di AfA One è particolare e potente, configurazione che pochi utenti Amiga utilizzano !



Bravo, ma non è quello che è stato chiesto.

WorkStation: Amiga x5000 AOS4.1 - MorphOS MiniMac - Vampire V4 - PC AMD Ryzen 9 7950X3D 64Gb RAM 5Ghz

Old System Amiga 500,1200, A4000/60 PowerPPC, CybervisionPPC, SUN Ultra5, PowerMAC G4 450Mhz 1Gb

Post inviati: 69

Visulizza profilo Messaggio Personale
185.232.88.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Commento 11
bubu7te 2 Maggio 2024    18:32:41
In risposta a amiwell79
amiwell79

ma penso che già i test con winuae erano stati effettuati, appunto si chiedeva di testare il programma su hardware reale


Esatto, la mia sfida è cercare di tirar fuori qualcosa di nuovo su macchine reali.
Sarei curioso di vedere come si comporta su 68040 e 68060, considerato che hanno la FPU integrata e migliore rispetto al 68882.
Anche Vampire e MiSTer mi incuriosiscono, sebbene l'hardware classico abbia la precedenza (...sarà l'età?)

PS: Io sviluppo su PC con un'estensione per Visual Studio Code, e ogni volta che compilo e faccio partire una sessione di debug il programma viene eseguito sotto WinUAE.

gfx3d.library, c2p.library and thread.library developer - A1200 tower, Blizzard 1230IV, 68882, 32 MB RAM, Picasso II, X-Surf, AmigaOS 3.0-3.9

Post inviati: 69

Visulizza profilo Messaggio Personale
185.232.88.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Commento 12
bubu7te 2 Maggio 2024    18:43:23
In risposta a AfAOne
AfAOne

@bubu7te

Se può interessare questi sono i risultati ottenuti su WinUAE con il mio AfA One (OS3.9 BB4 RTG), la demo scorre velocemente su un angolo dello schermo in alto a sinistra.

...OMISSIS...
Elapsed seconds: 1.301153
Average ms per frame: 20
Average fps: 50.000




Ciao, grazie..
La schermata è piccina in alto a sinistra perché si tratta di uno schermo 128x96 px
Su macchine veloci vorrei usare una risoluzione almeno 256x192

20 ms significa che tutto il calcolo è stato fatto dentro al VBLANK, infatti hai ottenuto 50 FPS, più veloce non può andare perché tra un frame e l'altro faccio una chiamata alla funzione WaitTOF(), per cui su sistemi PAL si viaggia al max a 50 frame per secondo, su sistemi NTSC a 60 FPS

Commento modificato il 02/05/2024 alle ore 18:44:18


gfx3d.library, c2p.library and thread.library developer - A1200 tower, Blizzard 1230IV, 68882, 32 MB RAM, Picasso II, X-Surf, AmigaOS 3.0-3.9

AfAOne

Post inviati: 5933

Visulizza profilo Messaggio Personale
79.41.39.*** Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Commento 13
AfAOne 2 Maggio 2024    18:50:42
Ok grazie per avermi risposto, WinUAE in ogni caso è un punto di riferimento dove è possibile testare ogni CPU ed ogni modello Amiga, inoltre come sistema RTG è il più compatibile rispetto alle Schede Super Espanse che circolano in rete.

Certo mi sarebbe piaciuto testarlo sul mio A4000/060 RTG che dorme in garage da 30 anni e mai fatto riparare!

Commento modificato il 02/05/2024 alle ore 19:00:28


Immagine AROS One x86/68k
- AfA One - AfA One PPC - Amilator AfA One - Amithlon AfA One - WinUAE OS 4.1


Post inviati: 69

Visulizza profilo Messaggio Personale
185.232.88.*** Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Commento 14
bubu7te 2 Maggio 2024    18:56:19
In risposta a VagaPPC
VagaPPC

Se usi VBCC il porting per tutte le altre piattaforme dovrebbe essere facile.


Una volta completo lo pubblicherò su Aminet con tanto di sorgenti, così chi vorrà potrà portarlo su altre piattaforme.
ciao

gfx3d.library, c2p.library and thread.library developer - A1200 tower, Blizzard 1230IV, 68882, 32 MB RAM, Picasso II, X-Surf, AmigaOS 3.0-3.9


Utenti Online
Utenti registrati: 1206 dal 1 Gennaio 2006
di cui online: 0 registrati - 
28 non registrati

Benvenuto all'ultimo utente registrato: zulu

Buon Compleanno a koala982 - 

© Amigapage 1998 - 2007 - Sito italiano dedicato alla piattaforma Amiga ed evoluzioni varie.
Struttura del sito interamente ideata e realizzata da Marco Lovera e Alessandra Lovera - Tutto il materiale inserito all'interno del sito è dei rispettivi autori/creatori.
E' assolutamente vietata la riproduzione o la manipolazione di tutti i contenuti o parte di essi senza l'esplicito consenso degli amministratori e degli autori/creatori.

Eseguito in 0.17097401618958 secondi