.[ ČeskéHry.cz ].
Fyzikální engine v C, non-float

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Fyzikální modely
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
frca



Založen: 28. 07. 2007
Příspěvky: 1552

PříspěvekZaslal: 18. leden 2023, 12:44:32    Předmět: Fyzikální engine v C, non-float Odpovědět s citátem

Neznáte nějaký fyzikální engine, který by byl v C a nepoužíval floaty? Chci si naportovat https://www.franticware.com/cgpinbal na Mega Drive, kde floaty samozřejmě nejsou a v SGDK není C++ kompilátor, jen C.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 23. leden 2023, 11:59:58    Předmět: Odpovědět s citátem

Nějaká transpilace, aby se hromadně nahradil kód pracující s floaty na kód pracující s int?
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1552

PříspěvekZaslal: 23. leden 2023, 13:08:46    Předmět: Odpovědět s citátem

Našel jsem tohle, je to ale v C++:
https://github.com/91Act/box2d_fixed

Asi by to šlo přepsat do C, ale bylo by to dost práce.

Edit: Ztráta přesnosti a rozsahu při použití fixed typu je tak choulostivá věc, že bych se vůbec neodvažoval jít směrem prostého nahrazení za fixed typ v knihovně, která je odladěná pro float.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 23. leden 2023, 13:48:47    Předmět: Odpovědět s citátem

Tak dřív se to běžně dělalo. Dělal to v pozadí jak Turbo Pascal (do programu přikompiloval detekční a emulační kód), tak Windows (emuloval FPU pro programy pracující s floaty).
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 23. leden 2023, 13:54:24    Předmět: Odpovědět s citátem

Vidím tam extern "C", takže to jde použít v C programech. A snad existuje i novější kompilátor pro tu zastaralou platformu, abys tu knihovnu mohl zkompilovat.
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 23. leden 2023, 14:06:00    Předmět: Odpovědět s citátem

Ladis napsal:
Tak dřív se to běžně dělalo. Dělal to v pozadí jak Turbo Pascal (do programu přikompiloval detekční a emulační kód), tak Windows (emuloval FPU pro programy pracující s floaty).

ano a taky to pak běželo o několik řádů pomaleji, což frca určitě na mega drivu uvítá Very Happy

jinak ano - fixed point je cesta, ale především cesta do pekla. např. fp16:16 rozhodně nestačí pro všechny use casy, pak je tu dreaded overflow/underflow a je potřeba být opatrný i u dělení - i tam může dojít k přetečení, není to jenom o dělení nulou - a ještě k tomu square root je dost tricky (i s lookup tably, ale pokud jsi navíc limitovaný pamětí...)

to C++ vadí přesně čemu - není nějaký compiler, co by to uměl cross-compile pro tu motorolu nebo co to tam je?

pak je tu ještě možnost custom řešení - kruh vs line segmenty by nemuselo být úplné peklo - a to i sweep testy by asi šly. tak nebo tak to bude extra práce
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1533
Bydliště: u Prahy

PříspěvekZaslal: 30. leden 2023, 20:09:54    Předmět: Odpovědět s citátem

Ta emulace floatu jde nechat na kompilátoru. Ty umí přímo, nebo s nějakým patchem, zkompilovat kód s floaty i pro architekturu bez podpory. Viz např https://stackoverflow.com/questions/39810751/how-are-floating-point-operations-emulated-in-software
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mar



Založen: 16. 06. 2012
Příspěvky: 602

PříspěvekZaslal: 30. leden 2023, 21:28:46    Předmět: Odpovědět s citátem

problém není emulace, ale rychlost: 100x slowdown u FLOPS není úplně cool (a to ani při startupu a počítání LUT i když pak v runtime jedeš fixed point)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
frca



Založen: 28. 07. 2007
Příspěvky: 1552

PříspěvekZaslal: 31. leden 2023, 19:06:35    Předmět: Odpovědět s citátem

Neplánuji použít emulaci floatu.
_________________
www.FRANTICWARE.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> Fyzikální modely Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna