Forum AmigaOne Zone
https://forum.amigaone.pl/

Turbo Voxel Heightmap Raycaster
https://forum.amigaone.pl/gry-f6/turbo-voxel-heightmap-raycaster-t1027.html
Strona 1 z 1

Autor:  amig_os [ piątek, 16 cze 2017, 10:40 ]
Tytuł:  Turbo Voxel Heightmap Raycaster

https://www.youtube.com/watch?v=TBlYk-_VlOA

--- Copy & Paste ---

Turbo Voxel Heightmap Raycaster:


This is my highly optimized voxel terrain raycaster engine for PPC Amigas running on a sam460ex with RadeonHD SI.
I'm still not 100% sure what type of game to use it for, so if you got any ideas, go on.

The "content" here in this tech-demo-video, namely the cockpit overlay and the terrain's height- and color-map, weren't drawn by me but were found on the web.
The tech-demo swallows any kind of maps / cockpits as long as the dimensions match and the bitmaps are provided as PNGs (with alpha-channel in case of the cockpit).

How comes I wrote this thing? Well, it somewhat fell into my lap ;)

A week ago some guy came to me with some ten-liner and asked me to optimize it so that it ran faster than less than 10 fps even on a X5000 (5 fps on my sam460). As it turned out he had found that code on some tutorial on the web.

It was a simple heightmap raycaster prototype. A very simple prototype actually. It lacked perspective stripe distortion compensation and also contained a bug that made you look somewhat to the left all the time, as if you moved forward with your head turned left a bit. And well, it was for a tutorial, so it was of course slow as hell but as trivial and short as it can be.

Alright, so I spent some hours to speed it up by about factor 2 to 3 so that it ultimately ran at about 15 fps or so on my sam460. I did so by replacing float by fixpoints, compacting and merging the height- and color-maps, optimizing the fog's color-mixer and some other things. For additional performance I also made a HiColor 16 bit variant because as we all know, uploading a fresh frame of pixels can become a bottleneck on Amigas.

So the guy was happy and since he planned to use a rather small visible area and only wanted to target higher end Amigas it was more than good enough for him. And I was happy to be credited for coding the heart of yet another game :)

However, I thought that it should be possible to make it even faster by doing some not so trivial optimizations. Some hours later the first turbo was working: from 15 fps to up to around 35. Some more hours later I was where I'm now, at up to 60 fps with visible area almost covering the whole window at 1280 x 960. Without any quality loss. Actually the contrary, because the persptive correction is correct now too ;) And all the engine's parameters can be modified during runtime instead of using hard-coded constants.

Anyway, those really manly optimizations and the final result I'll keep for myself ;)

Btw.: on an X5000 SI it runs at 110 to 130 fps.
And it has been reported to run smoothly on a Peg with a Radeon 9250 :)

Fun fact: a raycaster was pretty much my very first C(++) program. Back in 1996, right before studies, during a practicum in the robotics lab at the GMD (now Fraunhofer), I was told to write a small simulator for one of those robots. And it had to be C(++) which I didn't know at that time, so it was a crash course in that language resulting also in a raycaster (Wolfenstein-style without texturing though) to simulate and visualize the sonar sensors' input.
Loop closed ;)

--- End ---

Autor:  adam [ piątek, 16 cze 2017, 11:37 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Kiepsko to wygląda. Przypomina Comanche na pierwszych Pentium (486 był ciut słaby do niego).
Tu mamy procesor 1 GHz, Radeon HD 7700 i 2 GB RAM. I 50 fps w porywach przy takiej niskiej rozdzielczości terenu, i do tego w oknie. To jest jakiś dramat a nie powód do dumy.
Uprzedzając ewentualną napaść na mnie za wyrażenie niezależnej opinii ;) - nie będę szukał żadnych linków z Comanche. I tak, oglądałem filmik w 1080p i 60 fps.
Pod filmem widzę "highly optimized"... słaby żart :(

Autor:  amig_os [ piątek, 16 cze 2017, 11:45 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

adam napisał(a):
Kiepsko to wygląda. Przypomina Comanche na pierwszych Pentium (486 był ciut słaby do niego).
Tu mamy procesor 1 GHz, Radeon HD 7700 i 2 GB RAM. I 50 fps w porywach przy takiej niskiej rozdzielczości terenu, i do tego w oknie. To jest jakiś dramat a nie powód do dumy.
Uprzedzając ewentualną napaść na mnie za wyrażenie niezależnej opinii ;) - nie będę szukał żadnych linków z Comanche. I tak, oglądałem filmik w 1080p i 60 fps.
Pod filmem widzę "highly optimized"... słaby żart :(


Daniel został poproszony o zoptymalizowanie "obcego kodu comanche" który oferował 2 klatki.
Dzięki swojej wiedzy udało mu się wyciągnąć 130 klatek i tyle w temacie.

A jak powstanie "amigowy Comanche" to będę się bardzo cieszył i chętnie kupię.

Autor:  adam [ piątek, 16 cze 2017, 12:00 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Cytuj:
Dzięki swojej wiedzy udało mu się wyciągnąć 130 klatek i tyle w temacie.

Nie, to nie jest "tyle w temacie". Jest to kunszt wyciągnąć tyle klatek, ale to nie jest koniec tematu. Chyba że tak, no to faktycznie ta gra jeśli wogóle wyjdzie będzie dla nikogo. Sztuka dla sztuki, doskonalenie wartszatu programisty, dla graczy - bardzo niska wartość.

W międzyczasie patrzyłem na YouTube za filmikami - większość była w 240p i spod DosBox-a, a te lepsze - widać było niską rozdziałkę kokpitu. Z tym że ja odnosiłem się do terenu, bo to mnie raziło.
Żeby sprecyzować swoje oczekiwania - pokażę bodaj ostatni Comanche 4 z 2001 roku - myślę że "fory" dla amigi prawie szesnastoletnie powinne wystarczyć.


Oczywiście super że dzielisz się ploteczkami i nowościami. Ale realnie to co podałem w filmiku - to powinien być taki poziom.

Autor:  amig_os [ piątek, 16 cze 2017, 14:19 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

adam napisał(a):
... Ale realnie to co podałem w filmiku - to powinien być taki poziom.


Nie mogę doprosić się update Heretica II dla RadeonaHD a Ty wymagasz komercyjnego Comancha w wersji 4.
Źródła zapewne nie są dostępne więc nici z tego :(

Autor:  amig_os [ piątek, 16 cze 2017, 15:52 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

adam napisał(a):
... Ale realnie to co podałem w filmiku - to powinien być taki poziom.


Nie mogę doprosić się update Heretica II dla RadeonaHD a Ty wymagasz komercyjnego Comancha w wersji 4.
Źródła zapewne nie są dostępne więc nici z tego :([/quote]

PS.
Jest taka posucha w oprogramowaniu, że cieszy mnie cokolwiek co wykorzysta na X1000 i RaedeonHD.

Niestety aplikacji pisanych w Hollywood jakoś nie mogę strawić.
Natomiast bardzo podoba mi się to co robi Entwickler-X - wszytko ładnie napisane, systemowo z osobnym launcherem do wyboru rozdzielczości.

Autor:  swinkamor12 [ piątek, 16 cze 2017, 16:53 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

To wygląda, tak jak ma wyglądać.
Pisze przecież Voxel Heightmap Raycaster.
Programista zrobił coś co chciał zrobić dwadzieścia lat temu, ale się nie dało.
Nie dało się z oczywistej przyczyny AGA była zbyt wolna.
Wyszło super.
Jak to wygląda na klasyku, na copperscreenie można zobaczyć w Magazynie Amiga.
Miklesz opisywał w jednym ze swoich artykułów jak zrobić ten efekt.
Comanche 4 to inny algorytm i zupełnia inna gra.

Autor:  adam [ piątek, 16 cze 2017, 18:17 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

amig_os napisał(a):
Nie mogę doprosić się update Heretica II dla RadeonaHD a Ty wymagasz komercyjnego Comancha w wersji 4.
Źródła zapewne nie są dostępne więc nici z tego :(

Nie wymagam komercyjnego Comanche, pokazałem co jest realne do osiągnięcia - mieć po sportowaniu. To są stare rzeczy i nasze komputery to pociągną. Chodziło mi o poziom.
Comanche 4 był przykładem bo pokazałeś grę opartą o voxele a z tego właśnie Comanche jest znany. Najwięcej ciupałem w "Overkill", w "czwórkę" nie grałem.
Ten filmik który zapoczątkował wątek - przykro mi ale nie widzę w tym potencjału.

Jest bardzo dużo rzeczy fajnych które będziemy mieć - ale pewnie porty. A co do gier ze źródeł - jest tego dużo. Wiele smakowitości które wcześniej czy później Huno PPC nam poda.

Cytuj:
Niestety aplikacji pisanych w Hollywood jakoś nie mogę strawić.

Może nie tyle Hollywood co Designerze. On jest dobry do wyklikania interfejsu programu, ale jak chcieć zrobić w tym całą aplikację to będzie troszkę toporne. Wiem o co ci chodzi. Ale to właśnie Hollywood jest tym programem który ma szanse być takim współczesnym AMOS-em, czyli umożliwić programowanie każdemu.
Cytuj:
Natomiast bardzo podoba mi się to co robi Entwickler-X - wszytko ładnie napisane, systemowo z osobnym launcherem do wyboru rozdzielczości.

Tak, pełna zgoda. To jest poziom profesjonalisty.

Autor:  Radek Cz [ piątek, 16 cze 2017, 22:28 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Czepiasz się Adam. Jak jeden człowiek może zrobić silnik i grę, która będzie wstanie konkurować
z komercyjnym programem, nawet jeśli jest z przed kilkunastu lat? To co on zrobił jest ważne
bo na naszym sprzęcie trzeba optymalizować co się da, bo nie wyskoczysz za róg i nie kupisz nowej
płyty z nowym prockiem. Dlatego powinni wyciskać co się z tego co mamy. A że to wygląda jak wygląda
to inna sprawa.

Autor:  adam [ piątek, 16 cze 2017, 23:36 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Przeczytaj drugie swoje zdanie (Jak..). No właśnie. To nie ma ani potencjału ani szans.
Ja się nie czepiam faceta, ja zwyczajnie nie widzę sensu żeby rzeźbić w tym czymś. To masz po optymalizacji, a gdzie reszta gry? Za bardzo mi to przypomina z jednej strony podziemia Crisota, z drugiej tę strzelankę od Cheerly Darling.

Autor:  newhousik [ sobota, 17 cze 2017, 17:40 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Ale optymalizacja starego Engine, to nie to samo co napisanie nowego. Zresztą to mi wygląda na grafikę fraktalową terenu, tego chyba nie wspomaga żadna grafika ? Nie wiem czy to nie ślepy kierunek, może lepiej zostać przy wektorach w których można wykorzystać moc grafiki.

Autor:  amig_os [ poniedziałek, 19 cze 2017, 10:17 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Wszystko jasne :)

Więcej informacji odnośnie Comanche dla AmigaOS4 w nowym wątku:

gry-f6/amigatec-i-comanche-over-the-top-t1030.html

Autor:  parallax [ poniedziałek, 19 cze 2017, 11:00 ]
Tytuł:  Re: Turbo Voxel Heightmap Raycaster

Na pewno ruch kamery do poprawy, bo idzie zbyt jednostajnie.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/