Symulator/MaSzyna/EU07.EXE 71
Poprawiony przeze mnie w grudniu 2010 kod symulatora MaSzyna zawiera następujące zmiany:
Spis treści
- 1 1. Typ pojazdu
- 2 2. Drogi i podsypki o kształcie trapezowym
- 3 3. Wizualizacja przechyłek
- 4 4. Poprawiona inicjalizacja sprzęgów
- 5 5. Rozróżnianie prawych zwrotnic od lewych
- 6 6. Animacja przekładania zwrotnic
- 7 7. Uruchomione obrotnice
- 8 8. Zmiana domyślnego filtrowania (rozmywania) tekstur TGA
- 9 9. Ignorowanie eventów none_
- 10 10. Ignorowanie nieistniejących eventów wpisanych w tory
- 11 11. Optymalizacja odcinków prostych
- 12 12. Szybsze dopasowanie końców
- 13 13. Dodane dodatkowe filtrowania tekstur
- 14 14. Parametry rozmywania w EU07.INI
- 15 15. Zmienione mapowanie nawierzchni drogi
- 16 Uwaga autorska
1. Typ pojazdu
W pliku CHK, w linii Param. można użyć parametru Type= do włączenia pewnych szczególnych własności. Dotychczas parametr ten był ciągiem znaków ezt, ET41, et42, pseudiesel. Zamieniłem to na typ wyliczeniowy (int), przez co również wielkość znaków przestała być istotna.
2. Drogi i podsypki o kształcie trapezowym
Jeśli dany odcinek połączony jest z następnym w taki sposób, że do punktu 2 podpięty jest punkt 1 kolejnego odcinka, to sprawdzana jest zgodność szerokości i profilu boków. Oba odcinki muszą być widoczne (rysowane) i nie być zwrotnicami. Jeśli profil nie jest zgodny, siatka trójkątów danego odcinka jest generowana z użyciem parametrów przekroju własnych oraz sąsiada. Wyjątkiem są rzeki, które zostały bez zmian (mają błędny przekrój poprzeczny - woda jest skośna). Wygenerowane siatki trójkątów są przechowywane w pamięci i wyświetlane bez ponownego generowania. Gdy przestają być potrzebne, są usuwane i w razie potrzeby generowane ponownie. Działa to dokładnie tak samo jak dotychczas i nie powinno mieć wpływu na FPS.
3. Wizualizacja przechyłek
Do generowania siatek zostały dołączone funkcje trygonometryczne kąta przechyłki, przy czym używane są jedynie własne kąty. Stąd możliwe jest ustawienie dwóch kolejnych torów/dróg ze skokiem przechyłki. Również nie powinno mieć to wpływu na FPS. Wyjątkiem są odcinki proste, na których zmienia się przechyłka (jest inna na każdym końcu). Odcinki takie są dzielone na segmenty, podobnie jak łuki, co może spowodować spadek FPS. Brak podziału na segmenty skutkował dziwnym wyglądem podsypki/drogi. Przechyłki nie są uwzględniane przy rysowaniu szyn zwrotnicy. Różnica między drogą a podsypką toru jest taka, że w drogach pobocza są rysowane poziomo, natomiast dla podsypki górna płaszczyzna jest cała pod jednym kątem.
4. Poprawiona inicjalizacja sprzęgów
Tablica sprzęgów ma indeksy 0..1, tymczasem była inicjowana indeksami 1..2. W efekcie sprzęg 0 nie miał ustawionych parametrów, a zamiast tego do pewnych innych zmiennych pojazdu trafiały przypadkowe wartości. Efekt tej zmiany nie jest znany, powinien być pozytywny.
5. Rozróżnianie prawych zwrotnic od lewych
Dzięki uprzejmości youBy dodałem rozróżnianie skrętu zwrotnicy, dzięki czemu iglice mogą być prawidłowo rysowane. Ponieważ typ zwrotnicy jest rozpoznawany przy wczytywaniu, a następnie używany przy generowaniu siatek, wydłuży się nieco wczytywanie i nie powinno mieć wpływu na FPS.
6. Animacja przekładania zwrotnic
Tworzenie w pamięci siatek trójkątów dla szyn powoduje, że przestaje być widoczna animacja zwrotnic. Sama animacja (przeliczanie odległości iglicy od odbiojnicy w funkcji czasu) znajduje się w kodzie generującym siatkę. W związku z tym, aby animacja była możliwa, jeśli zwrotnica nie jest w skrajnym położeniu, siatka dla szyn jest niszczona zaraz po wyświetleniu, aby została wygenerowana nowa. Powoduje to spadek FPS podczas ruchu iglicy, a także nieznaczny ogólny spadek FPS, ponieważ dla każdego toru musi być sprawdzone, czy jest on zwrotnicą. Jeśli dana zwrotnica nie posiada wygenerowanej siatki, jest przestawiana bez animacji. Dotychczas można było zauważyć podczas latania po scenerii, jak zwrotnice wchodzące w zasięg wzroku "przypominają sobie", że miały być przełożone. Animacja w pewnych przypadkach może być niewidoczna - iglica przestawia się natychmiastowo.
7. Uruchomione obrotnice
Obrotnica w stanie 0 ma statyczną siatkę trójkątów i nie powinna mieć wpływu na FPS. Nie są do końca zrobione zależności, więc możliwe jest obracanie modelem, podczas gdy szyny z taborem pozostaną nieruchome. W stanie 1 siatka trójkątów obrotnicy jest każdorazowo regenerowana, jeśli tylko zostanie wykryta różnica pomiędzy kątem toru, a kątem modelu. Zauważalny wtedy jest spadek FPS - u mnie było 15.0-15.3 w stanie 1 oraz 15.8 w stanie 0. W stanie 1 nie ma zabezpieczeń i możliwe jest wygenerowanie null track, jeśli tabor zjedzie, albo spróbuje wjechać. Możliwe jest również rozjechanie taboru (jeden wózek na obrotnicy, drugi na torze stałym).
8. Zmiana domyślnego filtrowania (rozmywania) tekstur TGA
Domyślnie tekstury TGA są rozmywane tak, jakby miały kanał alfa. Aby były rozmywane jak dotychczasowe bez kanału alfa, należy w nazwie pliku umieścić znak "$".
9. Ignorowanie eventów none_
Eventy o nazwach rozpoczynających się od none_, umieszczone na liście eventu multiple są ignorowane z informacją w logu. Przykładowe zastosowania – semafor bez tarczy (nazwa tarczy none). Również całkowicie ignorowane są wpisy takich eventów (z informacją w logu).
10. Ignorowanie nieistniejących eventów wpisanych w tory
Jeśli we wpisie toru umieścimy event, którego definicji nie będzie w scenerii, informacja o tym zapisze się do logu, natomiast nie wyskoczy okienko wymagające zatwierdzenia. Przydatne do testowania scenerii. Brakujące eventy w innych sytuacjach (np. multiple, z wyjątkiem opisanym powyżej) będą nadal generować okienko.
11. Optymalizacja odcinków prostych
Wektory kontrolne podane we wpisie odcinka są porównywane z wektorami jak dla odcinka prostego. Jeśli różnica długości nie jest większa niż 2cm, odcinek jest uznawany za prosty. W efekcie powinien wzrosnąć FPS na sceneriach, w których odcinki proste mają ustawione wektory kontrolne. Uwaga do tworzących scenerie: Odcinki proste z wpisanymi wektorami kontrolnymi są traktowane jak łuki i dzielone na segmenty długości 5m. Na pewno powoduje to niepotrzebny spadek FPS (na innych EXE), szczególnie przy dużej liczbie równoległych prostych torów.
12. Szybsze dopasowanie końców
W paru miejscach było używane pobieranie końców odcinków za pomocą interpolacji stosowanej dla wyznaczenia dowolnego punktu na odcinku (z użyciem wielu mnożeń). Zmieniłem to na pobieranie końca wprost. Czas łączenia torów scenerii powinien być krótszy.
13. Dodane dodatkowe filtrowania tekstur
Jeśli w nazwie tekstury TGA umieszczony jest znak %, a za nim cyfra, stosowane są następujące filtrowania:
- przy powiększeniu GL_NEAREST - pikselowanie, przy zmniejszeniu:
%0 najbliższy z tekstury - GL_NEAREST ("#") %1 średnia z tekstury - GL_LINEAR %2 najbliższy z mipmapy - GL_NEAREST_MIPMAP_NEAREST %3 średnia z mipmapy - GL_LINEAR_MIPMAP_NEAREST
- przy powiększeniu GL_LINEAR - rozmycie, przy zmniejszeniu:
%4 najbliższy z tekstury - GL_NEAREST %5 średnia z tekstury - GL_LINEAR (alfa bez "#", teraz domyślne) %6 najbliższy z mipmapy - GL_NEAREST_MIPMAP_NEAREST %7 średnia z mipmapy - GL_LINEAR_MIPMAP_NEAREST %8 najbliższy z dwóch mipmap - GL_NEAREST_MIPMAP_LINEAR %9 średnia z dwóch mipmap - GL_LINEAR_MIPMAP_LINEAR ("$")
Parametr rozmywania 0..9 nie jest skalą liniową, tylko różnymi opcjami wyboru najbliższego koloru (NEAREST) albo średniej (LINEAR) z tekstury, ewentualnie z jednej, albo z dwóch mipmap (zmniejszonych tekstur).
14. Parametry rozmywania w EU07.INI
Można sobie ustawić własne preferencje rozmywania teksur. Parametrem jest liczba 0..9 (patrz punkt 13) albo -1 (domyślny). Niektóre rozmywania (1, 5, w mniejszym stopniu 0, 4, i 9) powodują znaczny spadek FPS na kartach nVidia. Na kartach ATI różnice są nieznaczne.
- defaultfiltering - wszelkie TGA bez kanału alfa
- ballastfiltering - TGA dla podsypki
- railprofiltering - TGA dla szyny
15. Zmienione mapowanie nawierzchni drogi
Tekstura nawierzchni drogi jest mapowana bez skalowania poprzecznego. Traktowana jest ona jako kwadrat o boku podanym we wpisie (TexLength). Dzięki temu linie na trapezowatych drogach nie będą zmieniać szerokości, a perony mogą być mapowane kostką brukową bez jej zniekształcania. Aby utworzyć peron trapezowy z białą linią od strony toru, należy utworzyć odpowiedniej szerokości "pobocze" z linią umieszczoną na nim. W niektórych sceneriach mapowanie powierzchni drogi może być nieprawidłowe.
- W kolejnych wersjach zostały uwzględnione proporcje tekstury nawierzchni i nie jest ona już traktowana jako kwadrat.
Uwaga autorska
EU07.EXE w wersji 1.2.44.71 posiada wady wcześniejszych. Tzn. znikają trójkąty na kartach firmy Intel i występują problemy przy teksturach DDS na kartach ATI. Zastąpiona nowszą wersją 113, która zawiera wymienione funkcjonalności i dalsze poprawki.
Ra
MaSzyna - wersje | |
---|---|
Wersje 2005-2009 | 699kB • Mega Pack (KURS90, 717kB) • Dizelpack (735kB) |
Wersje z 2011 | 71 • 113 • 120 • 145 • 162 (PC2010) • 212 • 231 • 291 |
Wersje z 2012 | 325 (PC2011) • 355 • 372 • 390 • SPKS@390 |
Wersje z 2013 | 394 (01.13) • Kurs 2013 • 408 • SPKS@408 (08.13) • 414 |
Wersje z 2014 | 424 • 435 • 441 • 450 • 457 |
Wersje z 2015 | 464 (15.02) • 469 (15.04) |
Wersje robocze | SPKS • warsztat |