fenek pisze:
Ja tylko pytam z czystej ciekawości, rozumiem że wcześniej liczysz macierz 9 elementow ? Ja cos takiego robilem do obracania prostych obiektow, wektory "cartoon/crayon" w sweet infection.
Na mala ilosc wierzcholkow u mnie dodawanie wygladalo tak samo tylko
parametry odwolywaly sie tylko do strony zerowej.
Optymalizacja w moim kodzie poszła już oczywiście dużo dalej tj także korzystam ze strony zerowej. Aktualnie mam osiągnięte przeliczenie 260 punktów na ramkę z malowaniem, czyszczeniem, double bufferem na fullscreenie. Oczywiście zostaję jeszcze spory zapas cykli (na muzykę i jeszcze trochę).
Macierz z racji rezygnacji z perspektywy ma 6 elementów (nie ma więcej potrzeby). Zrezygnowałem z wyliczania "Z" i obliczania perspektywy czyli wygląda to tak (pseudokod)
x'=x*matrix[0][0] +y*matrix[0][1] +z*matrix[0][2]
y'=x*matrix[1][0] +y*matrix[1][1] +z*matrix[1][2]
x' i y' zawierają już współrzędne do namalowania punktu 2d
fenek pisze:Czy mozesz miec dowolne wspolrzedne punktow obiektu w 3d czy obiekt wyglada jak we wszystkich demach jakby byl "przyciagniety" do "siatki 3d".
Hmm tego nie rozumie.
Z mojego rozumowania wychodzi, że mogę mieć dowolne (oczywiście w odpowiedniej skali).
Tylko, że w EOD czy OneDer także te obiekty wyglądają dla mnie normalnie.
fenek pisze:Pytalem o macierz, bo jak sie ma obliczona 9 elementowa macierz to mozna za pomoca tablic skalowania przeskalowac jedna macierz na
X macierzy (max. 27) i umiescic 28 macierzy 9 elementowych na stronie zerowej. Wtedy wszystkie obroty mozna zrobic na dodawaniach 8 bitowych 3 cyklowych adc $xx a nie adc $xxxx ale obiekt musi byc "przyciagniety" do siatki 3d okreslonej przez przeskalowane macierze.
A teraz chyba zrozumiałem to wcześniejsze:) Ja poszedłem w innym kierunku i u mnie wygląda to tak
Mam obliczoną macierz i "mnożę" z każdym elementem macierzy wszystkie możliwe wartości x,y lub z (w zależności z którym elementem "mnożę"). Tutaj są dodatkowe optymalizacje czyli liczę tylko wartości x,y i z dodatnie bo ujemne uzyskuje przy wyliczniu zamieniając adc na sbc
Reasumując, to obiekty mam tak samo jak we wszystkich demach przyciągnięte do siatki 3d. (no chyba, że nie zrozumiałem)
Twoje rozwiązanie wygląda ciekawie i dla testów chyba je zrobię (może będzie szybsze).
fenek pisze:offtop:
Serio mnie to interesuje, ja bardziej sie zastanawiam nad pojsciem w to co pokazal Graham w jednym dentrze zeby tego nieszczesnego sinusa rozszerzyc do 512 bajtow i 16 bitow lub wiecej.
Osobiscie uwazam ze ploty ktore zapierdalaja w jedna ramke powinny miec wartosci delt na katach mniejsze niz 1,4 stopnia.
Ano zapierdzielają
Ja jestem po testowej analizie (i o ile nie popełniłem gdzieś błędu) to takie rozwiązanie nie spowoduje znacznego spowolnienia (ale będzie wolniej
)
Ja popełniłem parę błędów przy projektowaniu... Najpierw zrobiłem przeliczanie bez macierzy (osiągnąłem bodajże 16 punktów - ale z perspektywą) potem użyłem macierzy, rezygnacja z perspektywy (i tak nie widać, że jej nie ma), zamiast lda $xxxx użyłem strony zerowej i mnóstwo innych optymalizacji. Mogłem to skodować zdecydowanie szybciej gdybym na początku dokładnie to przemyślał