51

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Jest prosta metoda, jak znowu zrobić fillera na wybraną ilość planów (nawet uproszczą się halftony). W wolnej chwili zmodyfikuję źródło.

52

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Jednak dodałem oddzielne tablice dla masek blittera. :) Zmodyfikowałem makro na tryb współdzielony - teraz znowu mamy 90% wydajności trybu hog.
Edit: I jeszcze małe poprawki w kodzie. Wrzucam nową wersję na miejsce starej.

53

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Wrzucam ostatnią inkarnację kodu. Najlepiej byłoby wszystkie modyfikacje robić właśnie na niej. Tak na szybko udało mi się zamienić to:

    move.w    #-6,D0
    move.w    D3,D1
    subq.w    #2,D1
    lsl.w    #3,D1
    sub.w    D1,D0            ;    0-6+((xCount-2)*8)
    move.w    D0,dstYinc(a6)                ; DestYInc

na coś takiego:

    move.w    d3,d0
    add.w    d0,d0
    move.w    blitDstYIncTab(pc,d0.w),dstYinc(a6)  ;-6-((xCount-2)*8)

No i poprawiłem opis dstYInca, bo wartości tam maleją, a nie rosną. :)

Oczywiście można zamienić jeszcze tablicę offsetów i masek na tablicę lewą i prawą, dzięki czemu pozbędziemy się lsrów z początku, ale czekam na modyfikację zaproponowane przez Cypriana.

54

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Dzisiaj, najpóźniej jutro wrzucę kod bazowy do naszych dalszych modyfikacji. Trochę przekonfigurowałem liczenie linii - teraz jest wszystko czytelniejsze. Zostawiłem stary sposób liczenia linii, niestety nowy pomysł nie wypalił - głównie z powodu braku możliwości zastosowania mojego ulubionego addx'a.

55

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian napisał/a:

Jakby co to mam ideę na zmianę w fill_triangle_line_loop. BLiTTER, na podstawie leftEdge/rightEdge może wygenerować left mask/right mask. Koszt to 34 cykle szyny na inicjalizację rejestrów Halftone a potem tylko 2 cykle szyny na maskę.

Hmm... 2? A nie 4? A co z danymi do wypełniania zawartymi w halftonach?

Cyprian napisał/a:

to w fill_triangle_line_loop można by jednym zgrabnym "movem.w    (A0)+,D0-D3" ładować od razu wszystkie potrzebne dane.

Tylko pamiętaj, że na lsrze stracisz. Ja poszedłem w drugą stronę i zrobiłem oddzielne tablice dla prawej i lewej strony, dzięki czemu zamieniłem lsra na dwa addy. No i sam movem sporo zabiera.

56

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

W weekend powinienem mieć już jakąś działającą wersję. Jestem w trakcie realizacji pomysłu na wyliczanie współrzędnych do wypełniania bez wpisywania ich do tablicy i późniejszego odczytywania. Jeśli wszystko pójdzie po mojej myśli, to na bazie tego kodu będzie można wprowadzić już ostateczne zmiany do pętli wypełniającej o których właśnie wspomniałeś.

Edit: Kurrrrr.... Czasowo i jedna i druga procka wypadają podobnie. Szlag, szlag, szlag...

57

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Znalazłem metodę przygotowywania danych do wypełniania trójkąta, która jest szybsza od stosowanej dotychczas. Niestety mam kłopot z pewnymi rodzajami trójkątów. Kurde widzę już koniec, a zarazem go nie widzę. :P

58

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Trochę czasu mi na to zejdzie. Muszę całe liczenie trójkąta przepisać, a im więcej o tym myślę, tym mniej pewne wydają mi się oszczędności czasowe. :( Myślę, że do ostatecznej wersji fillera warto zaproponowane przez ciebie zmiany jeszcze wprowadzić.

59

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Szczerze powiem, że nie wiem co jest nie tak z moimi cytatami. :( Chyba nie ma nic złego w cytacie w cytacie? Czy naprawdę musimy być tak bardzo drobiazgowi?

60

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Myślałem. :) Jeszcze tylko procka na gourauda jakaś szybka i piękne intro może wyjść. Macie może jakieś fajne obiekty 3d składające się z kilkudziesięciu punktów? Przy dobrych wiatrach w 1-2 ramkach się zmieścimy. :D

61

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Z bitplanami będzie trudniej (szczególnie z przejściami kolorów na poszczególnych pikselach), ale chyba warto pochylić się i nad tym. Jak zrobimy najlepszego fillera ever :P, to proponuję pomyśleć nad gouraudem. :D Z tego co widzę, to facet na true kolorze jedzie - znacznie łatwiej zapalić punkt w takim trybie, a procka rzeczywiście (oczywiście, jak już wiadomo jak to zrobić :P) jest prościutka. Mam kilka pomysłów, które warto byłoby sprawdzić, ale jak zwykle moim największym wrogiem będzie czas. :)

62

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian napisał/a:
Tomasz Wachowiak napisał/a:

Myślę, że dzięki przekonfigurowaniu programu da się jeszcze z 5% uszczknąć.

pewnie tak. można jeszcze spróbować z rozdzieleniem linii - krótkie CPU; długie BLiTTER.

Myślę jeszcze o czymś innym :) Tyle, że dużo roboty i muszę cały kod napisać, żeby się przekonać, czy będzie szybciej. A krótkich linii bym nie ruszał, bo kod blittera jest zbyt piękny, żeby go prymitywną motorolą zastępować :P

63

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian napisał/a:

[Dzięki. Wyprodukowałeś naprawdę fajny kod, przy nim optymalizacja BLiTTERa to błahostka :)
Swoją drogą BLiTTER był mocno niedoceniany ale myślę że może on czymś nas zaskoczyć.

Nie bądź taki skromny... :) Te kilkanaście linijek jest przykładem na to, jak myśląc w nieszablonowy sposób można uzyskać świetne rezultaty. Jak dla mnie, to numer jeden od naprawdę długiego czasu.

64

(1 odpowiedzi, napisanych Programowanie - 16/32bit)

Kolejne znalezisko archeologiczne. Generator lądów i chmurek. Jest nawet dokumentacja... :) Chyba chciałem wszystko do 'ST formatu' wysłać :O. Zostawiam w formie oryginalnej, pomimo że miejscami jest napisane trochę niegramatyczną angielszczyzną... Nikt nie jest idealny w wieku nastu lat... :P

65

(6 odpowiedzi, napisanych Programowanie - 16/32bit)

Zgadza się. To z Godsów. :D Mam lewe ręce i do grafy i do muzy - dlatego jestem programistą (zawodowo i hobbystycznie)... :P

66

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Zachwycające. :D Poważnie. Świetny pomysł. Nie ma to, jak wyciskać ostatnie soki ze słabego sprzętu. Myślę, że dzięki przekonfigurowaniu programu da się jeszcze z 5% uszczknąć. Muszę tylko żonę przekonać, żeby mi trochę czasu na testy dała :P
I będziemy kurdę najlepsi.. :P

67

(6 odpowiedzi, napisanych Programowanie - 16/32bit)

Bober napisał/a:

A julia chodzi mi od jakiegoś czasu po głowie.....

Jeśli inteligentna i oczytana, to nie dziwię się... :P

68

(6 odpowiedzi, napisanych Programowanie - 16/32bit)

Odskocznia od triangle fillerów... :P Program jest już historyczny, ma chyba z 19-20 lat :), ale działa całkiem sprawnie. Generuje Mandelbroty i Julie. Naciśnięcie 'P' (po zakończeniu obliczania fractala) pozwala zmienić paletę kolorów, 'D' generuję kolejny fractal, 'Esc' powoduje zakończenie działania programu. Dopiski też historyczne, ale co tam... :)

69

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

O kurcze. Wygląda świetnie! To jest więcej, niż 10-15% o których myślałem! To rzeczywiście oznaczałoby najszybszą prockę na STeka. Mam nadzieję, że podzielisz się pomysłem.
Edit: Hmm.. Teoretycznie wypełnianie na halftonach powinno być mniej więcej tak samo szybkie, jak zerowanie lub wypełnianie jedynkami. Ciekawe, gdzie tkwi haczyk? :P

70

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian napisał/a:

Swoją drogą czy nie powinno to być ""IFGT    planes-1" ?

Tak, przyrównanie do 0 jest nadmiarowe. :)

71

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

erOS napisał/a:

Panowie, panowie...
Co chcecie publikować? kod na wypełnienie trójkąta? :)
Nie wiem czy ktoś to doceni :> Ludzie wolą oglądać efekty i gotowe produkcje. Kiedy wypuściłem nieskończone nasze demo
w postaci pojedynczych efektów w PRG (bo tylko to się nam ostało) to świat na pouecie generalnie nas 'zjeb...ł' a nie pochwalił, a to brak muzyki, że nie polinkowane w całość, itd. :>

Temat temu chłopacy sugerowali, żeby umieścić kod poza forum, więc się podpytuję... Ogólnie fillera napisałem, żebyście mogli go w swoich przyszłych zajebistych prodkach wykorzystać. :) Ostatnia inkarnacja kodu wygląda na kawał dobrej roboty, więc zachęcam do korzystania. :) Jak znajdę dosyć samozaparcia, to z tej obecnej wykroję jeszcze 10-15%, a to będzie oznaczać, że będziemy mieć jedną najszybszych procedur na STeka.

72

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

W programie są dziwne makra i opcje kompilacji warunkowej np. ifgt, być może VASM tego nie rozumie. Pusty ekran możemy otrzymać, jeśli podamy za duży indeks koloru w stosunku do ilości wypełnianych bitplanów.

73

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Cyprian napisał/a:

Problem z forum AA jest taki że osoba niezalogowana nie pobierze pliku. Czyli ograniczamy się tutaj do garstki osób z PL.

Rozumiem. Jeśli potwierdzicie, że działa - pomyślę o światowej premierze :P. Gdzie najlepiej wrzucić źródło?

74

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Dziwne. Trochę zmieniłem includy, więc jeśli wrzuciłeś tylko fillera do katalogu z poprzedniej wersji, to może rzeczywiście coś nie zadziałać. Wrzucę PRG, sprawdź, czy będziesz widział trójkąt.

75

(50 odpowiedzi, napisanych Programowanie - 16/32bit)

Dodałem kompilację warunkową dla jednego planu, pozbyłem się lsrów dzięki wprowadzeniu oddzielnych masek. Hmm... Panowie, czemu łatwiej jest wam ściągać plik z githuba, niż z forum, bo szczerze powiem żadnej różnicy nie widzę? :P