Drobne poprawki renderingu
PsichiX zaoferował, że trochę nas wesprze wiedzą i kodem w kwestii renderingu openGL - jako, że mi osobiście zależy na poprawie wyglądu WG i wydajności renderingu (czyli, IMHO, naszych pięt achillesowych), zgodziłem się od ręki ;)
Dostałem przerobiony kod klasy Sprite - przerobiony tak, by używał list wyświetlania, a nie glBegin. Integracja z naszym kodem odbywa się przez proste dziedziczenie - jedna z klas naszego renderingu teraz używa CWGSprite zamiast sf::Sprite :) Jeśli nie niesie to ze sobą żadnych skutków ubocznych (test plz ;) ), to ma szansę podnieść naszą wydajność graficzną w sytuacji, gdy może ona być wąskim gardłem (hordy eksplozji i particle'i, itp). Jeśli chodzi o testowanie, PsichiX prosił żeby sprawdzić, że kolorowanie na pewno działa, bo użył jakiejś innej metody. Na moje oko szczurki dalej są zielone, a u Was? (kod pochodzi w części z Xenona).
Dalsze w kolejności do integracji są PostFX - przerobione na kompatybilne z glDrawArrays, oraz... z wyodrębnionymi metodami odpowiedzialnymi za aktywację i deaktywację shadera. W oryginalnej wersji naszej wspaniałej biblioteki, były one "schowane" wewnątrz metody Render() - która brzmiała "aktywuj(); zastosuj do całego ekranu(); deaktywuj()". Biorąc pod uwagę, że teraz może "opakować" w shader dowolny quad, i możemy temu shaderowi przekazać parametry (materiał - kolor, normal mapę, listę źródeł światła itp) - to pewnie do końca tygodnia będziemy się bawić oświetleniem ;]
Jeśli uda się to przeprowadzić bezkolizyjnie na wszystkich platformach, będziemy mieli prawie 100% kontroli nad renderingiem w naszej aplikacji, zostawiając SFMLowi jedynie "set up". Dalsze efekty typowe dla gier 2D (dynamiczne cienie, remember?) staną otworem :)
Dostałem przerobiony kod klasy Sprite - przerobiony tak, by używał list wyświetlania, a nie glBegin. Integracja z naszym kodem odbywa się przez proste dziedziczenie - jedna z klas naszego renderingu teraz używa CWGSprite zamiast sf::Sprite :) Jeśli nie niesie to ze sobą żadnych skutków ubocznych (test plz ;) ), to ma szansę podnieść naszą wydajność graficzną w sytuacji, gdy może ona być wąskim gardłem (hordy eksplozji i particle'i, itp). Jeśli chodzi o testowanie, PsichiX prosił żeby sprawdzić, że kolorowanie na pewno działa, bo użył jakiejś innej metody. Na moje oko szczurki dalej są zielone, a u Was? (kod pochodzi w części z Xenona).
Dalsze w kolejności do integracji są PostFX - przerobione na kompatybilne z glDrawArrays, oraz... z wyodrębnionymi metodami odpowiedzialnymi za aktywację i deaktywację shadera. W oryginalnej wersji naszej wspaniałej biblioteki, były one "schowane" wewnątrz metody Render() - która brzmiała "aktywuj(); zastosuj do całego ekranu(); deaktywuj()". Biorąc pod uwagę, że teraz może "opakować" w shader dowolny quad, i możemy temu shaderowi przekazać parametry (materiał - kolor, normal mapę, listę źródeł światła itp) - to pewnie do końca tygodnia będziemy się bawić oświetleniem ;]
Jeśli uda się to przeprowadzić bezkolizyjnie na wszystkich platformach, będziemy mieli prawie 100% kontroli nad renderingiem w naszej aplikacji, zostawiając SFMLowi jedynie "set up". Dalsze efekty typowe dla gier 2D (dynamiczne cienie, remember?) staną otworem :)
Leave a comment
Cholera, musze powiedziec, ze zajebiście (hah innego slowa nie znam :P) mnie to ucieszylo - jak wszystkie punkty zostana spelnione to moze to byc nieziemski skok jakosciowy :D
Jak będzie potrzeba wypalenia normal map to daj znać.
(BTW jak będzie własny alokator pamięci do particli podpięty zamiast zaślepki to można też nieco wydajność podnieść)
Jak będzie potrzeba wypalenia normal map to daj znać.
(BTW jak będzie własny alokator pamięci do particli podpięty zamiast zaślepki to można też nieco wydajność podnieść)
on 2010-07-26 18:55 *
By Liosan
Description changed from PsichiX zaoferował, że troc... to PsichiX zaoferował, że troc...
Description changed from PsichiX zaoferował, że troc... to PsichiX zaoferował, że troc...
Mamy jedną w repo, do zabaw wystarczy. A na alokator (a właściwie pulę) zrób ticket, ok? Podepnę w wolnej chwili ;)
on 2010-07-27 04:14 *
By PsichiX
Assigned to changed from Liosan to PsichiX
Assigned to changed from Liosan to PsichiX
Dziś jeszcze pokombinuje z dodaniem efektów do PostFX (w tym najważniejszy normal mapping) a potem się pokombinuje ze światłami dynamicznymi.
Dodatkowo przyjrzę się głębiej particlom bo jak widzę korzystają ze sprajtów to jeśli uda się bezsprzecznie zmienić ich sposób renderingu to cząsteczki przyspieszą przynajmniej kilkukrotnie :)
I co najważniejsze: Co myślicie nad dodaniem VBO pod elementy statyczne mapy oraz ogólne efekty o stałej / maksymalnej liczbie elementów (o ile już z tego nie korzysta ale raczej nie zauważyłem jeszcze tego w kodzie)? Też by to przyspieszyło rendering (Particle by na tym działały)
Dodatkowo przyjrzę się głębiej particlom bo jak widzę korzystają ze sprajtów to jeśli uda się bezsprzecznie zmienić ich sposób renderingu to cząsteczki przyspieszą przynajmniej kilkukrotnie :)
I co najważniejsze: Co myślicie nad dodaniem VBO pod elementy statyczne mapy oraz ogólne efekty o stałej / maksymalnej liczbie elementów (o ile już z tego nie korzysta ale raczej nie zauważyłem jeszcze tego w kodzie)? Też by to przyspieszyło rendering (Particle by na tym działały)
Gdzieś tu nawet wisi jakaś testowa normal mapa: http://www.assembla.com/spaces/image_annotation/index/ayocGQCGWr3zZEab7jnrAJ?document_id=arH8dwNxar3OB3eJe5afGb
Pasuje do stworka shaggy, jakby Cię to interesowało ;) Ale podpiąć pod animację to już mogę ja.
Co do VBO - nie mam zdania. Nie mamy tego.; jeśli to w miarę proste, czemu nie. Particle'om by się przydało przyczepić pulę pamięci, tak jak mówi rAum ;)
Pasuje do stworka shaggy, jakby Cię to interesowało ;) Ale podpiąć pod animację to już mogę ja.
Co do VBO - nie mam zdania. Nie mamy tego.; jeśli to w miarę proste, czemu nie. Particle'om by się przydało przyczepić pulę pamięci, tak jak mówi rAum ;)
"Dalsze efekty typowe dla gier 2D (dynamiczne cienie, remember?) staną otworem :)"
tylko pytanie, którym otworem :)
sluchajcie, czy jestescie pewni, ze chcecie to miec na 15 sierpnia? martwie sie, ze to jest jedna z tych zmian, ktora złamie aplikacje na XX% maszynach, czego nie zdazymy dotestowac przed 15sierpnia. I co wtedy? Bedziemy miec calkiem calkiem dopieszczona/zbalansowana gre, ktora nagle przestanie dzialac przyslowiowemu Kowalskiemu (mimo, ze RC1 dzialala)?
Moze przepchnijmy to na kamien pt 'do 15 wrzesnia'? Co chlopaki? Do 15 sierpnia robimy bezpieczne rzeczy, a dopiero po tym releasie robimy eksperymenty?
tylko pytanie, którym otworem :)
sluchajcie, czy jestescie pewni, ze chcecie to miec na 15 sierpnia? martwie sie, ze to jest jedna z tych zmian, ktora złamie aplikacje na XX% maszynach, czego nie zdazymy dotestowac przed 15sierpnia. I co wtedy? Bedziemy miec calkiem calkiem dopieszczona/zbalansowana gre, ktora nagle przestanie dzialac przyslowiowemu Kowalskiemu (mimo, ze RC1 dzialala)?
Moze przepchnijmy to na kamien pt 'do 15 wrzesnia'? Co chlopaki? Do 15 sierpnia robimy bezpieczne rzeczy, a dopiero po tym releasie robimy eksperymenty?
Nie lubisz nowych ficzerów, co? :]
Proponuję taki podział:
1. glVertexArray (czy to co teraz jest) - zostaje na 15 sierpnia. Nie widzę ryzyka, widzę zysk.
2. normal mapping - jak się uda w podstawowej formie, to byłby skłonny zaryzykować wpuścić to do dema. I tak mamy ficzer "wyłącz shadery jeśli nie są dostępne" - przy rozszerzaniu tego o zmianę w opcjach/config.xml, ryzykujemy względnie mało. Nakład pracy też nie jest jakiś straszny - jedno światło punktowen na wszystkich planszach, spójne pod względem kierunku z tym "rzucającym cień potwora", to godzina-dwie roboty. Dla rAuma wygenerowanie jakichś sensownych normal map to 5 minut na bitmapę, albo mniej.
3. dynamiczne cienie, inne formy oświetlenia, jakieś motion blury etc etc - nawet jak się uda przed 10tym sierpnia, to nie wchodzi do release.
Pasi?
Proponuję taki podział:
1. glVertexArray (czy to co teraz jest) - zostaje na 15 sierpnia. Nie widzę ryzyka, widzę zysk.
2. normal mapping - jak się uda w podstawowej formie, to byłby skłonny zaryzykować wpuścić to do dema. I tak mamy ficzer "wyłącz shadery jeśli nie są dostępne" - przy rozszerzaniu tego o zmianę w opcjach/config.xml, ryzykujemy względnie mało. Nakład pracy też nie jest jakiś straszny - jedno światło punktowen na wszystkich planszach, spójne pod względem kierunku z tym "rzucającym cień potwora", to godzina-dwie roboty. Dla rAuma wygenerowanie jakichś sensownych normal map to 5 minut na bitmapę, albo mniej.
3. dynamiczne cienie, inne formy oświetlenia, jakieś motion blury etc etc - nawet jak się uda przed 10tym sierpnia, to nie wchodzi do release.
Pasi?
Prawde mowiac Wy sie bardziej na tych sprawach znacie. Ja sie tylko obawiam o te shadery - ze na kartach, ktore nie maja aktualnych driverow gra zamiast wykryc brak shaderow wykryje np... czarne kwadraty.
A feature'y lubie, nie lubie tylko wpychania za duzej ich ilosci do aktualnego releasu. Do nastepnego - spoko, mozna pchac, ale do aktualnego -> oj, feature creep. I potem daty sie przesuwaja...
Pasi.
A feature'y lubie, nie lubie tylko wpychania za duzej ich ilosci do aktualnego releasu. Do nastepnego - spoko, mozna pchac, ale do aktualnego -> oj, feature creep. I potem daty sie przesuwaja...
Pasi.
on 2010-08-10 18:32 *
By cixot
Milestone changed from do 15 wrzesnia, eksperymenty to do 15 sierpnia - bugfixy, bossy, specjalne, balans
Priority changed from Low (4) to Highest (1)
Milestone changed from do 15 wrzesnia, eksperymenty to do 15 sierpnia - bugfixy, bossy, specjalne, balans
Priority changed from Low (4) to Highest (1)
Prio na 1, bo to powinnismy rozstrzygnac szybciej niz pozniej...
on 2010-08-10 18:40 *
By cixot
Milestone changed from do 15 sierpnia - bugfixy, bossy, specjalne, balans to do 15 wrzesnia, eksperymenty
Priority changed from Highest (1) to Low (4)
Milestone changed from do 15 sierpnia - bugfixy, bossy, specjalne, balans to do 15 wrzesnia, eksperymenty
Priority changed from Highest (1) to Low (4)
tia, ostatnio coraz mocniej odczuwam brak ostrzezenia na assembli, ze 'ktos wlasnie zedytowal watek, czy chcesz zrobic refresh?'
on 2010-08-28 18:35 *
By cixot
Assigned to changed from PsichiX to -none-
Status changed from Accepted to New
Assigned to changed from PsichiX to -none-
Status changed from Accepted to New
na mocy #753 - albo ktos sie tym zajmie i zaassignuje na siebie, albo wontfixuje za tydzien, albo niech Dab da znac, ze chce spowrotem tego ticketa w 'na 15 wrzesnia'
on 2010-09-05 19:51 *
By cixot
Status changed from New to Invalid
Status changed from New to Invalid
Updating tickets (#368, #370, #420, #529, #570, #578, #592, #609, #610, #613, #619, #627, #629, #636, #637, #663, #664, #699, #710, #732, #734, #738, #742, #744, #747, #411, #616, #634, #638, #661, #668, #697, #698, #719, #735, #168, #282, #340, #355, #365, #371, #383, #561, #642, #665, #700)
wontfix
wontfix