Oznámení

Sbalit
Aktuálně žádná oznámení.

Without Frontier (Frontier 3 ;- )

Sbalit
X
 
  • Filtr
  • Čas
  • Zobrazit
Vymazat vše
new posts

    #16
    Tak budu muset zamakat na optimalizaci...

    Tedy donutilo mě to přemýšlet. Na té emulaci jsem už překonal několik propadů výkonu když jsem tam něco přidal. Tak přemýšlím kde je problém. Rád bych se na 040 dostal na 25FPS na 060 aspoň na 35 a na 030 na 15. To by bylo pořád hratelné.

    Budu se muset mrknout na smyčku rasterizace a taky na to jak je nastavená cache. Je dost možné, že se píše rovnou do FAST ram místo do Cache a pak teprve přesypat.
    To by mohlo udělat klidně 6x větší zátěž.
    Když bude nejhůř místo mapování textůr po pixelech udělám tabulky a po vzoru PS1 to budu sekat celočíselně to by na 060 mohlo zdvojnásobit fillrate.
    Naposledy upravil Noro; 21.09.2026, 12:23:41.
    Dum spiro spero!
    Amiga 1200 x2, Amiga 600, Amiga 500, PowerMacek G5 (MorphOS), Amiga 2000. IceDrake (68080/192MIPS, 512 MB RAM, RTC)

    Komentovat


      #17
      Autorem citovaného textu je Noro Přejít na původní příspěvek
      Tak budu muset zamakat na optimalizaci...

      Tedy donutilo mě to přemýšlet. Na té emulaci jsem už překonal několik propadů výkonu když jsem tam něco přidal. Tak přemýšlím kde je problém. Rád bych se na 040 dostal na 25FPS na 060 aspoň na 35 a na 030 na 15. To by bylo pořád hratelné.

      Budu se muset mrknout na smyčku rasterizace a taky na to jak je nastavená cache. Je dost možné, že se píše rovnou do FAST ram místo do Cache a pak teprve přesypat.
      To by mohlo udělat klidně 6x větší zátěž.
      Když bude nejhůř místo mapování textůr po pixelech udělám tabulky a po vzoru PS1 to budu sekat celočíselně to by na 060 mohlo zdvojnásobit fillrate.
      Ahoj,

      ty FPS co zmiňuješ myslíš na Native chipsetu (ala AGA) nebo v RTG, nebo interní výpočet před posláním na "framebuffer"?

      Komentovat


        #18
        Optimalizácia 3D enginu pre klasickú Amigu (najmä pre procesory Motorola 68030 až 68060) je legendárne ťažká disciplína. Problém, ktorý opisujete — zapísanie priamo do RAM bez využitia cache, chýbajúci koordinovaný buffer či neefektívna rasterizácia — sú presne tie miesta, kde 3D enginy na Amige prichádzajú o väčšinu výkonu.

        Ak chcete získať plynulých 25 FPS na 040 a 35+ FPS na 060, tu sú najúčinnejšie techniky, ako to dosiahnuť: 1. Práca s pamäťou a Cache (Najväčšia brzda)


        Zápis po bajtoch alebo slovách priamo do Fast RAM zabil veľa projektov. Zbernica 68040/060 je najrýchlejšia pri celých 32-bitových / 128-bitových blokoch.
        • Zápis cez Line Push / Burst Mode (040/060): Namiesto zápisu po pixele do Fast RAM budujte obraz v reglistoch (pomocou MOVEM alebo zápisom do dátovej cache) a potom zapisujte celé riadky v 16-bajtových blokoch (Burst Mode).
        • Write-Allocate / Copy-Back Cache: Uistite sa, že framebuffer vo Fast RAM je nastavený ako Cacheable (Copy-Back). Kreslite kompletne v L1 Cache a až po dokončení riadku/bloku ju vyprázdnite (Data Cache Flush).
        • Zákaz čítania z Framebufferu: Do framebufferu sa iba píše. Akýkoľvek Read-Modify-Write (čítanie pixelu, úprava, zápis) zničí výkon zbernice.
        2. Rasterizácia a Mapovanie Textúr


        Ak mapujete textúry po pixele s presným (alebo aj skráteným) delení, 68060 aj 040 okamžite spomalia, pretože instrukcie delenia (DIVU/DIVS) sú drahé (a na 060 sa dokonca emulujú v kódovacom trape!).
        • Afínne mapovanie (Affine Texture Mapping): Rovnako ako PS1 robte interpoláciu len celočíselne po riadkoch (krok u, v je konštantný prírastok v fixed-point formáte). Pre väčšie polygóny stačí spraviť korekciu perspektívy len každých 8 alebo 16 pixelov (tzv. Sub-division).
        • Unrolled Loops (Rozbalené slučky): Vykresľovací cyklus pixelov pre daný riadok nesmie obsahovať žiadne podmienky (DBRA a skoky). Generujte dynamický kód (JIT/Self-modifying code) alebo použite rozbalené slučky prispôsobené dĺžke riadku.
        • Pre-calculated Look-Up Tables (LUT): Pre násobenie a skoky v textúrach majte všetko predpočítané v tabuľkách vo Fast RAM, aby sa zmestili do dátovej cache.
        3. RTG vs. AGA (Cesta do obrazovky)


        Otázka vo vašej správe je kľúčová: Ide o RTG (Chunky) alebo AGA (Planar)?
        • Ak RTG (Grafická karta / Chunky 8-bit / 16-bit):
          • Kreslite priamo do 8-bitového Chunky buffera vo Fast RAM.
          • Neposielajte dáta po pixele cez Zorro zbernicu do VRAM karty! Nakreslite celý frame vo Fast RAM a potom ho cez MoveMem / DMA preneste naraz do RTG framebufferu.
        • Ak AGA (Chunky-to-Planar / C2P):
          • Ak kreslíte pre originálny chipset (AGA/CD32), konverzia z Chunky (8-bit) do Planar (bitprajny) je obrovská záťaž.
          • Použite najrýchlejšie dostupné 040/060 C2P rutiny (napr. od Kalmsa / MGI), ktoré využívajú MOVEM a instrukčné kombinácie na konverziu priamo v cache.
          • Zvážte Double-Buffering: zatiaľ čo Akiko/Blitter alebo CPU prevádza Rámec A do Chip RAM, CPU už rasterizuje Rámec B vo Fast RAM.
        4. Optimalizácia rozlíšenia a rendera
        • Renderujte v nižšom rozlíšení (Double-Width / Low-Res): Hry ako Doom či Alien Breed 3D bežali v rozlíšeniach ako 160×100 alebo 320×100 (s zdvojovaním pixelov). Ak znížite počet vykresľovaných pixelov na polovicu (napr. 160×200 namiesto 320×200 roziahnuté cez Akiko/Copper), fillrate okamžite stúpne na dvojnásobok.
        • Bsp Trees & Portals: Využite striktné triedenie viditeľnosti zozadu dopredu alebo spredu dozadu (BSP stromy / Portály), aby ste nikdy nekreslili ten istý pixel dvakrát (nulový Overdraw).
        Zhrnutie pre získanie 35+ FPS na 060:
        1. Zmeňte mapovanie textúr na fixed-point afínne po riadkoch (štýl PS1).
        2. Kreslite výhradne do Fast RAM s Copy-Back Cache.
        3. Zápisy robte po 32-bitových / 128-bitových blokoch (vyhnite sa bajtovému zápisu do RAM).
        4. Ak ste na AGA, použite 160×200 rozlíšenie s rýchlym C2P.
        --------------------------------------------------
        A1200 + Blizzard 1230/50Mhz + 32MB RAM, AMD RYZEN 9 5900x 32GB DDR4 RAM, ASUS DUAL Radeon RX 7600 O8G V2​, MAC OS X BigSur,

        Komentovat


          #19
          Vyzkoušeno na TF1260 hrát by to šlo. Klikni pro plné zobrazení obrázku

Jméno: 20260921_215504.jpg
Počet zobrazení: 0
Velikost: 253,2 KB
ID: 180750

          Komentovat

          Zpracovávám...
          X