Force Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 Kolejne pytanie teoretyczne Ci co piszą w Dx-ie też mogą wypowiedzieć się, zezwalam Otóż: załóżmy, że mamy sobie grę, gdzie są "k" rodzajów ludzików, każdy rodzaj ludzika ma jedną inną od pozostałych teksturę. I w tej grze rysujemy ludziki np. po ~30 każdego typu i pytanie numer 1: Zależy nam aby jak najrzadziej zmieniać teksturę więc obiekty powinny być rysowane wg rodzaju, ale czy to powinien zapewnić użytkownik co pisze grę w tym silniku czy silnik powinien? Pytanie numer 2: Jeśli silnik to jak to powinien zrobić. Czy może gdy wywołujemy metodę render na obiekcie to wrzuca obiekt do listy, która jest zawsze posortowana i gdy wywołujemy metodę w silniku np. EndRender to rysowane jest wszystko z tej listy i lista jest czyszczona i co klatkę zapełniana od nowa. Tu wg mnie czasochłonne byłoby wrzucanie w odpowiednie miejsce na liście obiektu, chyba, że się użyje drzewa AVL no i czy takie czyszczenie co klatką też jest dobre. Może już w tym miejscu gdzie jest EndRender dopiero się sortuje raz całą listę, wyświetla i kasuje. Może każdy rodzaj tekstury ma własną listę obiektów, więc nie ma sortowania? Może też macie jakieś inne rozwiązania lub czytaliście o takowych? Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 Obecnie sortowanie po teksturze duzo ci nie da, bardziej sie oplaca sortowac po wspolzednej Z i renderowac obiekty w glab ekranu www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 24, 2008 Autor Zgłoś Share Napisano Listopad 24, 2008 Da mi, zmiana tekstury kosztuje, a obiekty usuwa się przed wrzuceniem do renderowania, z resztą nie wiem co to da, że posortuje po Z, ilość wierzchołków nie zmniejszy się, mipmapy i tak się dobiorą i tak Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Nvm Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 Nie wiem czy dobrze załapałem problem ale ostatnio na Warsztacie pojawił się taki art i mniej-więcej jest to tam opisane: http://revo.pl/stuff/gdpl/atlas/ Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 24, 2008 Autor Zgłoś Share Napisano Listopad 24, 2008 Źle załapałeś, mi chodzi, że ma się 2 fizycznie tekstury, a nie sklejone w jedną, tak to bym nie pytał bo to kwestia współrzędnych dla tekstury Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 Sortowanie po Z ma duze znaczenie, zauwaz ze obecnie wszystko kozysta z shaderow i rozumiem ze ty tez (przynajmniej "teoretycznie" chcesz miec shadery ) przed nakladaniem tekstury czy fragment shaderem karta graficzna "obcina" obiekt i pozostawia tylko to co jest widoczne tak wiec renderujac to co jest najblizej kamery zaslaniasz duzy obszar tak wiec inne obiekty nie beda renderowane cale(albo nawet w ogole) i to ci da wiekszego kopa niz kombinowanie z teksturami. www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 24, 2008 Autor Zgłoś Share Napisano Listopad 24, 2008 Wiekszego kopa daje kombinowanie z shaderami, jedna zmiana shadera kosztuje kilak razy wiecej niż jedna zmiana tekstury. Poza tym jak niby chcesz sprawdzać czy obiekt jest zasłonięty? od tego jest bufor głębi. A gdy mam przedmioty przeźroczyste to muszę je ignorować Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 "karta graficzna "obcina" obiekt" www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 24, 2008 Autor Zgłoś Share Napisano Listopad 24, 2008 nie wiem po co cytujesz siebie, ja nie pytałem po co chcesz po Z bo zrozumiałem, ale nie napisałeś jak niby sprawdzić czy obiekt jest zasłonięty lub też czy jest zasłonięty przez coś przezroczystego? Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 ehhh.... to czy obiekt jest zasloniety to sprawdza karta graficzna a obiekty przezroczyste to inna bajka je rysujesz na koncu i w odwrotnej kolejnosci(do kamery) www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 24, 2008 Autor Zgłoś Share Napisano Listopad 24, 2008 Coś z kartą bredzisz, pokaż skąd masz źródło. Bo jak karta ma sprawdzić czy obiektu nie widać? To dopiero się okaże czy jakiś piksel po rzutowaniu będzie zmieniony Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 24, 2008 Zgłoś Share Napisano Listopad 24, 2008 to zrob sobie test zrob jakis model z bardzo duza liczba poligonow zobacz ile bedziesz mial fps-ow a pozniej doloz plan przed kamera i porownaj www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Spider100 Napisano Listopad 25, 2008 Zgłoś Share Napisano Listopad 25, 2008 Force w tym co Blind mówi jest trochę racji Bynajmniej nie chodzi tu o obcinanie trójkątów na poziomie sceny, a o zwykły test głebi jeśli go nie przejdzie pixel to nie będzie dalej przetwarzana informacja no i mamy zysk na prędkości. Blending właściwie tez trzeba sortować ale w przeciwnym kierunku. Nie ze względu na optymalizacje a na to że blendindg transparent lubi dawać niepoprawne wyniki gdy się rysuje z depth testem dlatego kolejność ma znaczenie. Co się dziej z pixelem ? http://www.pckurier.pl/archiwum/art0.asp?ID=649 occlusion culling pozwala na odrzucanie całych obiektów przysłanianych w czasie renderingu ale to już trzeba samemu implementować lub z pomocą karty graficznej. Zajmij sie odrzucaniem całej geometrii przez culling albo portale drzewa oct czy cokolwiek dusza zapragnie a nie bzdurami jak by to miało jakieś większe znaczenie ... to moja rada. www.spider.dathox.com Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 25, 2008 Autor Zgłoś Share Napisano Listopad 25, 2008 Blind: zakładam, że każdy model ma kilka wersji i jak jest dalej to się bierze low poly Do portali i drzew też dojdę, ale to nie wyklucza myślenia o optymalizacji tutaj Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 25, 2008 Zgłoś Share Napisano Listopad 25, 2008 nie wazne czy bierzesz low poly czy nie, chodzi o ograniczenie wywolywania fragment shadera ktory jest najbardziej wymagajacy. ehhh... ciagle nie rozumiesz.... problem zmiany tekstury w obecnych czasach jest najmniejszym probemem, karty graficzne ciagle sie rozwijaja i problem zmian tekstury byl ale ladnych kilka lat temu. www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 25, 2008 Autor Zgłoś Share Napisano Listopad 25, 2008 Na razie spotkałem się z wersją, że najlepiej jak najrzadziej zmieniać shader i ona wydaja mi się lepsza niż sortowania po z , zwłaszcza, że im coś dalej to jest tego mniej na ekranie Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Spider100 Napisano Listopad 25, 2008 Zgłoś Share Napisano Listopad 25, 2008 zwłaszcza, że im coś dalej to jest tego mniej na ekranie To może by wypadało posortować, renderować od najbliższych i dla najdalszych zasłoniętych nawet nie zmieniać tych shaderów i tekstur co nie? Trzeba by zakodzić coś do testu przysłaniania albo sprzętowo załatwić to na nowszych kartach graficznych ... IMO to rozwiązanie wydaje się bardziej racjonalne niż wszystko upychać na ekran od razu... www.spider.dathox.com Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 25, 2008 Autor Zgłoś Share Napisano Listopad 25, 2008 Takie rozwiązanie ma sens gdy na ekranie mamy jakiś duży obiekt, a jak np. widać 60 ludzików, którzy używają kilka shaderów to jedyne co zasłaniają oni to jakas tam, ziemia, kamienie, a rysując po Z dużo razy zmnimy shadera Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Spider100 Napisano Listopad 25, 2008 Zgłoś Share Napisano Listopad 25, 2008 60 animowanych ludzików przy sobie na pełnych shaderach heh xD a smoka w tej bajce nie było ? chyba na kombajny ten engine jakieś robisz Robisz silnik do testów (wsadzania 60 ludzików i ile uciągnie fpsów) czy do gier ? bo ten problem z kapelusza wyciągnięty trochę. W grze parę postaci się pojawia i tyle obiektów przysłaniających jest zawsze wiele tego nie widać na pierwszy rzut oka bo przysłaniają to co za nimi :PP aa i nie musisz sprawdzać tego co piszemy na forum gd Nie robimy tu żadnej teorii spiskowej ani nie wprowadzamy nikogo w błąd nikt Ci nie powie jednoznacznie co jest najlepszą metodą wszystko zależny od zastosowań silnika bo jak coś jest do wszystkiego to jest do niczego ... W złym miejscu optymalizacji szukasz moim zdaniem ale cóż przekonasz się jeszcze www.spider.dathox.com Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Listopad 25, 2008 Autor Zgłoś Share Napisano Listopad 25, 2008 Oj, ja nie będę optymalizował tylko tu, ale to, że gdzie indziej na optymalizacji mogę więcej zyskać nie znaczy, że tu mam zaniechać sprawdzania A Ty jak masz zrobione ? :> Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.