Skocz do zawartości

PsichiX

Użytkownicy
  • Zawartość

    5875
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    7

Zawartość dodana przez PsichiX

  1. Almora

    @gnysek, dej linka do takiej oferty, bo za 30 zl to ja chetnei postawie serwer chocby na pare dni
  2. Almora

    gad dymyt - to co, dzis wieczorem test na hamaku wszyscy?
  3. Almora

    okej, to wbijam do Ciebie
  4. Almora

    no ja wlasnie walcze z portem z noip ;/ tu mozna sprawdzic port: http://www.portchecktool.com/
  5. Almora

    noip zrobi zadanie. jeszcze chwilke poczekajcie
  6. Almora

    jakis program kojarzycie do wystawienia swojego ip globalnie? xD
  7. Almora

    conneciton failed - ip to pierwsze, czy drugie?
  8. Almora

    connection failed :<
  9. Tutaj możecie dzielić się najgłupszymi bugami naszego ukochanego programu, jakim jest GMS w wersji 1.4
  10. @Ignatus bylbys w stanie wyodrebnic osobny maly projekcik, gdzie zostawilbys rooma z obracanym viewem i jakims innym shaderem, oraz mozliwie wrzucony multipass i wyslac mi gmz tego na skrzynke? sprawdzilbym, w ktorym miejscu gryza sie, bo z opisu wyglada to na jakis turbo absurdalny problem, gdyz w idei multipass z niczym sie nie gryzie, bo nigdzie nahalnei sie nie wpina, a to dosyc dziwny problem i moze powodem byc np. inna libka i moglbym znalezc co dokladnie to powoduje.
  11. Przykład z gotowymi skryptami bazowymi do zarządzania renderowaniem wieloprzebiegowym. Nazwa może być niezrozumiała, ale zasada działania jest dosyć prosta: pozwala to wyrenderować wiele wariantów tych samych obiektów zależnie od tego, jakie informacje sobie zażyczymy. W tym przykładzie jest to renderowanie informacji o obiektach, które mają się brudzić krwią oraz informacje o obiektach brudu - po wyrenderowaniu tych obu przebiegów otrzymujemy tekstury z tymi informacjami gotowe do uzyskania finalnego zabrudzenia krwią elementów pokoju jak i ścian. W razie niejasności lub niezrozumienia nie bać się, tylko pytać tutaj a ja na każde pytanie z chęcią odpowiem, bez odsyłania do jakichś linków - chcę aby każdy był w stanie na końcu rozumieć zasadę działania i potencjał multipass renderingu jak i cudownych możliwości, jakie ze sobą niesie. Co jakiś czas będę urozmaicał paczkę o nowe przykłady zastosowania, bo jest ich na prawdę masa! Aktualne efekty: Dirt (blood) Distortions (heat and water) Volumetric fog Download: http://storage.psichix.io/MultipassRendering.gmz
  12. czyli byl bledny blending!
  13. Temat zbiorczy na drobnostki

    @SimianVirus7 nie chodzi o to czy kolekcje danych są globalne, czy lokalne - o tym decyduje, gdzie te utworzoną kolekcje zapiszesz, do "czyjej" zmiennej. wszelkie wartości trafią, do tego obiektu on należy, ale nic nie stoi na przeszkodzie współdzielić kolekcję pomiędzy obiektami. taka dana siedzi gdzieś w pamięci komputera i zmienne jedynie wskazują na tę daną w pamięci (w sensie liczby akurat są zawsze kopiowane, stringi prawdopodobnie też ale kolekcje są zawsze gdzieś w pamięci i podczas utworzenia kolekcji dostajesz jej identyfikator, numer, który jest niejako wskaźnikiem, którym przy obsłudze kolekcji mówisz GMowi, którą kolekcję modyfikujesz).
  14. Robot Raspberry Pi

    z rpi dla poczatkujacych jest puszczany raspbian (debian na rpi) wraz z pythonem i biblioteka do sterowania sygnalami w pinach - idelane polaczenie dla poczatkujacego, nie bedzie z tym problemu, zwlaszcza ze python jest jeszcze prostrzy od GML, a i sa tutki opisujace dokladnie jak sterowac pinami z pythona. dodatkowo python ma tez gotowe biblioteki do tworzenia i nauki sieci neuronowych, wiec zestaw trafiony idealnie!
  15. UPDATE: Nowa wersja zawiera wolumetryczną mgłę! Download: http://storage.psichix.io/MultipassRendering.gmz
  16. to nadal nic nie zmieni - kolega napisal, ze alpha dziala jesli wylaczy ten shader zmiany hue. problem totalnie siedzi w kodzie shadera, ktory olewa alphe zrodlowa inny problem jaki widze potencjalnie, to to ze tekstury budowane dla iOS sa kompresowane i to moze byc takze problemem bo alpha wtedy ma strasznie slaba jakosc. nie wiem, czy mozna wylaczyc kompresje konkretnym teksturom w GMie, wiec zobaczymy czy pierwsze rozwiazanie zadziala - jak nie to kminimy dalej z kompresja.
  17. Jasne, bede czekal na dalsze pytania!
  18. @gnysek: wewnetrznie tak, on po prostu uzyl gifow do animacji poklatkowej. tak czy inaczej to ze to gif to nie powod do powstania tego bledu, a sam shader zmiany wartosci hue, ktory totalnie olewa transparentnosc w tej kwestii. najlepiej, jakby kolega wrzucil kod calego shadera, to moznaby go przerobic zeby nie olewal alphy, ale poki co to mysle ze moje rozwiazanie styknie
  19. @Ignatus Ad. 1. cytując z dokumentacji w skrypcie: id - identyfikator przebiegu renderowania (czyli jakaś nazwa po prostu); view_index - numer viewa, do którego należeć będzie ten przebieg. Działa to tak, że jeśli dasz -1 to pass będzie renderował się dla każdego viewa, czyli będzie zapisywał informacje do swego surface ze wszystkich viewów, ale jeśli podasz np. 0 to będzie zapisywał informacje o obiektach renderowanych wyłącznie w view[0]. clear_color - kolor, jakim wypełni się surface zanim zacznie zbierać informacje o obiektach. stosuje się to po to, by wyczyścić surface. clear_alpha - alpha, jaką wypełni się surface zanim zacznie zbierać informacje o obiektach. stosuje się to po to, by wyczyścić surface. target - id obiektu lub obiektów, które mają być brane pod uwagę przy zapisie do surface przebiegu. możesz podać id konkretnego obiektu, grupy obiektów (np. obj_fire, stała all, czy parenty różnych obiektów - obj_dirt) Ad. 2. patrząc na listę dodawanych passów, mamy kolejno: multipass_add("dirt_mask", 0, c_black, 0, obj_dirty); multipass_add("dirt_color", 0, c_black, 0, obj_dirt); z tego wiemy, że będziemy zbierać 2 rodzaje informacji o obiektach: maski zabrudzeń, oraz kolor zabrudzeń. dla informacji masek zabrudzeń (dirt_mask) będziemy zbierać informacje o obiektach typu obj_dirty, a obiekt ten jest parentem dla wszystkich innych obiektów, które mają być oznaczone jako zdolne do brudzenia się krwią, a więc wszystkie obiekty na scenie gry, które chcesz, by były zdolne do brudzenia się, nadajesz im parenta obj_dirty. Do takich obiektów należeć mogą ściany, jakieś przedmioty w pomieszczeniach, najpewniej to, co nie jest podłogą. Podobnie ma się rzecz z obiektami, które mają brudzić, czyli wystarczy, że obj_blood będzie miał parenta obj_dirt, to wszystkie obiekty krwi trafią do surface przebiegu dirt_color. Ten system nie wymaga tworzenia obiektów w jakiś szczególny, niestandardowy sposób, tworzysz je tak samo jak zawsze - system podczas zbierania informacji o obiektach do swoich surfacesów ogarnia wszystkie obiekty na scenie oznaczone identyfikatorem przekazanym w ostatnim argumencie funkcji multipass_add(). Ad. 3. tak jak wyżej to opisałem: obj_dirt to parent dla wszystkich innych obiektów, które mają brudzić, jest to taka grupa obiektów brudzących. obj_dirty zaś jest parentem dla wszystkich obiektów, które mają przyjmować na siebie zabrudzenia. Ad. 4. wystarczy, że utworzysz go na scenie i będzie on posiadał parenta obj_dirt. Jest jeszcze jedna ważna rzecz, którą muszę wyjaśnić, otóż: jak zapewne zauważyłeś w kodzie draw obiektów tv, coach, blood i innych, mają one w sobie linijki takie jak ta: if (multipass_current() == "dirt_color") { draw_self(); } chodzi w tym o to, że event draw obiektu może być wywoływany wiele razy dla wielu przebiegów, które zechcą pobierać informacje o danej grupie obiektów. Dajmy na to, dodam dwa przebiegi, które oba jako target podadzą ten sam typ obiektów all. a więc event draw Twojego obiektu wywoła się nie raz, jak normalnie, ale aż 3 razy (raz dla sceny normalnie, oraz dwa dodatkowe razy bo dwa przebiegi zarzyczyły sobie informacji o wszystkich obiektach sceny) - tym kodem wyżej upewniamy się, że nasz obiekt będzie rysowany tylko i wyłącznie dla przebiegu o nazwie "dirt _color" i będzie niewidoczny dla innych przebiegów oraz nie zostanie narysowany na scenie normalnie, bo chcemy by kolor krwi był tylko w surface przebiegu, którym potem zmiksujemy krew z maską zabrudzeń i w ten sposób dostaniemy finalne obsmarowanie krwią widoczne tylko tam, gdzie są obiekty brudzące się. Jeśli nie dodasz tego sprawdzania bieżącego przebiegu, wtedy krew zostanie narysowana zarówno na scenie normalnie, jak i w każdym surface każdego przebiegu, a tego nie chcemy. Jeśli chcesz, aby jakiś obiekt rysował się normalnie na scenie, ale także rysował jakiś swój inny wariant dla jakiegoś przebiegu (np. chcesz aby na scenie obiekt rysował żarówkę, ale też chcesz, aby dla przebiegu "glow" narysował poświatę światła emitowanego przez żarówkę), to wtedy kod wygląda coś jak to: // rysujemy poświatę żarówki dla przebiegu "glow": if (multipass_current() == "glow") { sprite_index = spr_glow; // na chwile zmieniamy sprite obiektu na poświatę. draw_self(); // rysujemy obiekt. sprite_index = spr_lightbulb; // przywracamy obiektowi sprite żarówki. // rysujemy obiekt żarówki normalnie dla sceny gry: } else if (multipass_current() == undefined) { draw_self(); } Ad. 5. zależy jak dokładną informację potrzebujesz. Generalnie to co Cię interesuje najbardziej to shader ten bierze 2 tekstury z surfacesów dwóch przebiegów "dirt_mask" oraz "dirt_color" i dla każdego piksela ekranu kolorem wynikowym RGB będzie kolor tekstury dirt_color (czyli kolor zabrudzeń, tutaj krwi) zaś kanałem alpha będzie kanał alpha tekstury "dirt_mask" przemnożony przez kanał alpha "dirt_color" - obrazowo to działa tak, jak nazwa "maskowanie" sugeruje: kolor krwi będzie widoczny tylko i wyłącznie tam, gdzie istnieją obiekty maski (czyli obiekty zdolne do zabrudzenia się). Ad. 6. - nie ma żadnej listy - jedyne, co musisz to nadać obiektom krwi parenta obj_dirt oraz dodać im do eventu draw: if (multipass_current() == "dirt_color") { draw_self(); } - tutaj nie ma także żadnej listy - tak samo jak z krwią, musisz nadać obiektom brudzącym się parenta obj_dirty oraz dodać kod do eventu draw: if (multipass_current() != "dirt_color") { draw_self(); } - poza tym wyżej musisz oczywiście dodać do gry skrypty z grupy "multipass" oraz stworzyć obiekt zajmujący się obsługą przebiegów, tak jak to wygląda w obiekcie obj_dirt_multipass_render. Głównie interesują Cię kody: Event Create: multipass_initialize(); multipass_add("dirt_mask", 0, c_black, 0, obj_dirty); multipass_add("dirt_color", 0, c_black, 0, obj_dirt); Event Destroy: multipass_cleanup(); Event Draw: multipass_render(); Event Draw GUI: var sampler_mask = shader_get_sampler_index(sh_dirt, "s_Mask"); var texture_mask = multipass_texture("dirt_mask"); shader_set(sh_dirt); texture_set_stage(sampler_mask, texture_mask); draw_surface_stretched( multipass_surface("dirt_color"), 0, 0, display_get_gui_width(), display_get_gui_height() ); shader_reset();
  20. @Hawaxi pierwsza rzecz, jaka przychodzi mi na myśl to: // calculate saturation of color. float sat = dot(gl_FragColor.rgb, vec3(1.0)); // calculate alpha boolean filter (we get 1.0 only if saturation is not zero). float f = step(0.004, sat); // 1 divided by 255 is ~0.004. // multiply alpha by boolean filter to make black color fully transparent. gl_FragColor.a *= f; Przetestowałem lokalnie i działa - sprawdź jak na iOSie się to zachowuje. W razie czego zwiększ 0.004 i zobacz, na jakiej wartości iOS usuwa czarny.
  21. Nad czym aktualnie pracujesz?

    nie no jasne, ze nie ja, grafa do exampla wzieta z paczek Kenny'ego oraz Asset packow itch.io - ja pixelowac nie potrafie, a zeby efekt fajnie pokazac potrzebowalem jakiejs decent grafiki : D
  22. Nad czym aktualnie pracujesz?

    to imo najciekawsza rzecz, jaką w GMSie dotąd zrobiłem (pomijając to, że GMSa niemal nigdy dotąd nie ruszałem - wierny 6.1! xD)
  23. UPDATE: dokończony example załamań obrazu dla efektów wody oraz ognia. DOWNLOAD: http://storage.psichix.io/MultipassRendering.gmz Nom, to teraz czas na odpowiedź na pytania Ignatusa
  24. @Ignatus dziś nie zdążyłem odpowiedzieć na pytania, ale o takie mi właśnie chodziło i na nie odpowiem przed zrobieniem następnego exampla! A swoją drogą: UPDATE - poprawiłem błąd nieśledzenia view, oraz dodałem example załamań wody (także na maskach), ale nie skończyłem go komentować więc jest WIP. W ruchu wygląda lepiej, bo widać dobrze te delikatne załamania.
×