Autor Wątek: Asmaroth - 3D RPG  (Przeczytany 17681 razy)

Offline Adam27

  • Użytkownik

# Październik 04, 2013, 22:45:08
Cytuj
Praktyka jest taka, że jeżeli gra X nie działa, to jest to wina gry X, bo gry Y oraz Z na tym samym sprzęcie działają.
Ale patrząc od drugiej strony, gra X działa na sprzętach Y, Z, A, B, C i D, a na sprzęcie E podobnym do D już nie, co może świadczyć również o winie sprzętu.

Anyway, usunąłem błędy znalezione przez GLintercept, jak również te antyczne display listy, które jednak dawały przyrost wydajności rzędu 30-40%, bo inaczej bym ich nie używał. Możesz teraz sprawdzić, czy to coś zmieniło :) https://www.dropbox.com/s/p2pamz54uoym37h/Asmaroth.exe

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 04, 2013, 23:07:06
Cytuj
te antyczne display listy, które jednak dawały przyrost wydajności rzędu 30-40%
Polecam zapoznanie się z Vertex Buffer Object. Wydajność będzie podobna, a unikniesz wielu niespodzianek.

Cytuj
Możesz teraz sprawdzić, czy to coś zmieniło :)
Bez zmian. W poprzednim poście pisałem, że problemem nie wydają się być listy, tylko śmieci przekazywane jako indeks slotu przy glVertexAttribPointer. Spodziewał bym się jakiejś niezainicjalizowanej zmiennej albo innej tego typu dziwnej operacji na pamięci lub stosie.

Offline Adam27

  • Użytkownik

# Październik 04, 2013, 23:14:35
Wszystkie śmieci znaleziono przez GLintercept'a, tak jak już pisałem, usunąłem, bo faktycznie były. Głównie były spowodowane próbą wysłania tangentu do shadera, w którym akurat tangentu nie było. A w takim razie nie pozostaje już nic innego jak sterowniki.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 04, 2013, 23:38:12
Cytuj
A w takim razie nie pozostaje już nic innego jak sterowniki.
Ja bym tak szybko do tej konkluzji nie przechodził. :) Zawsze najłatwiej zwalić na czyjś kod zamiast szukać u siebie. ;)

Offline ByerN

  • Użytkownik

# Październik 05, 2013, 12:50:49
Mam dwie karty graficzne. Na intelu wywaliło błąd zmiennego przecinka, GeForce sobie poradził bardzo dobrze. Gra została z automatu podpięta pod Intela. Zauważyłem, że większość gier z unity tak ma.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 05, 2013, 13:00:43
Cytuj
Na intelu wywaliło błąd zmiennego przecinka, GeForce sobie poradził bardzo dobrze.
Raczej: GeForce przełknął kod, który nie jest poprawnym GLSLem, bo sterowniki NVidii do kompilacji używają nieco przerobionego Cg, któremu bliżej do HLSL niż GLSL. Efekt jest taki, że NVidia pozwala na baaardzo wiele rzeczy, które dozwolone w standardzie GLSL nie są.

Zasada jest jedna: jakikolwiek GLSL piszesz, testuj na kompilatorze GLSL (czyli nie na kartach NVidii).

Offline Mergul

  • Użytkownik

  • +1
# Październik 05, 2013, 15:02:26
polecam ściągnąć AMD GPU ShaderAnalizer :) no i przesiadka na OGL-a 3.x najlepiej 3.3 i GLSL 330 :) no i oczywiście jak tu kolega Krzysiek K. wspomniał do rysowania obiektów VBO :) będzie działać szybciej i będziesz miał większe możliwości :)

Offline Adam27

  • Użytkownik

# Październik 05, 2013, 15:10:15
@Krzysiek K.: Jeśli w którymś shaderze jest błąd, który ujawnia się tylko na Radeon'ie, to powinniśmy zostać o tym poinformowani stosownym komunikatem, ale najwyraźniej Radeon woli się obrazić i nie wyświetlić nic :) A żaden potencjalny błąd w shaderze nie tłumaczy, dlaczego na takim samym Radeonie u Grizlee'ego gra działa.

@Mergul: zamierzam w niedalekiej przyszłości przepisać silnik na OpenGL 3.3.

Offline Mergul

  • Użytkownik

# Październik 05, 2013, 15:16:49
problem w tym, że niezależnie gdzie Ci nie będzie działać (chodzi tu o kartę), to błędu nie otrzymasz ot tak :) oczywiście da się przecież przechwytywać błędy :) ale nie będzie to okienko systemu operacyjnego :) a nawet jeżeli Ci Geforce odpuści i skompiluje z błędami to nie znaczy to, że jest git :) bo przez to kod może być mniej wydajny (czasami) :) warto sprawdzać wszystkie shadery na GPU ShaderAnalizerze :)
btw. przepisuj silnik, bo ja przerzuciłem się na 3.3 i nieżałuje :D jest trochę bardziej skomplikowany (więcej rzeczy trzeba robić samemu), ale zarówno możliwości jak i wydajność to całkiem inna bajka :)

Offline Adam27

  • Użytkownik

# Październik 05, 2013, 15:51:37
@up: do przechwytywania błędów używam glGetShaderiv i glGetShaderInfoLog opakowane we własne okno dialogowe i oczekiwałbym, żeby te funkcje zadziałały, jeśli rzeczywiście jakiś błąd w shaderze jest. Gdy u siebie testuję grę i mam jakiś błąd, to komunikat dostaję zawsze, z informacją co jest źle i w której linijce, a taki shader nie jest wtedy włączany i część sceny jest renderowana bez niego, ale nigdy nie mam czarnego ekranu. Jestem na 99% pewny, że winne są sterowniki, no ale jeśli Krzysiek nie chce tego sprawdzić, to się nie dowiemy :)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 05, 2013, 17:08:53
Cytuj
Jestem na 99% pewny, że winne są sterowniki, no ale jeśli Krzysiek nie chce tego sprawdzić, to się nie dowiemy :)
No ale niby w jaki sposób mam sprawdzić? Bym się dowiedział, że być może na nowszej wersji sterowników też nie działa.

Inna kwestia, że właśnie sprawdziłem i updater HP twierdzi, że nie ma żadnej dostępnej aktualizacji związanej z grafiką - co mnie w sumie nie dziwi, bo producenci laptopów wydają aktualizacje jak im się chce. A zazwyczaj się nie chce.

Offline Adam27

  • Użytkownik

# Październik 05, 2013, 18:11:00
Ja bym sprawdził na stronie AMD, a jeśli rzeczywiście nie ma nowych sterowników, no to niestety zagadka pozostanie nierozwiązana, bo nie mam żadnego innego pomysłu.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +1
# Październik 05, 2013, 18:35:01
Ja bym sprawdził na stronie AMD, a jeśli rzeczywiście nie ma nowych sterowników, no to niestety zagadka pozostanie nierozwiązana, bo nie mam żadnego innego pomysłu.
Widzę że się uparłeś na te sterowniki. :)

Offline Adam27

  • Użytkownik

# Październik 05, 2013, 19:02:08
Uparłem się, bo już wiele razy pomagały one w podobnych sytuacjach, gdy coś nie działało podczas gdy zdecydowanie powinno :)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Październik 05, 2013, 19:08:54
Uparłem się, bo już wiele razy pomagały one w podobnych sytuacjach, gdy coś nie działało podczas gdy zdecydowanie powinno :)
No ale w tym przypadku nowszych sterów HP nie wydało. I co dalej?