Risen RLCP ( Risen Landscape Conversion Project ) - potrzebna pomoc - shadery 14622 27

O temacie

Autor Zagłoba

Zaczęty 30.01.2014 roku

Wyświetleń 14622

Odpowiedzi 27

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Witam - jestem tu nowy, więc się przywitam i zdradzę co nieco o sobie. Po pierwsze primo - witam całą społeczność modderską theModders , po drugie primo - jestem Kuba i należę do bardzo nielicznego grona ludzi zajmujacych się moddingiem gry Risen 1 - stworzonej na modłę Gohica , przez Piranhaa Bytes.

Dotychczas działałem na forach takich jak risen.info.pl , ale porzuciłem je, gdyż w temacie moddingu nic się tam nie działo, natomiast w chwilii obecnej jedną nogą znajduje się na forum modderskim worldofrisen.de ( gdzie nauczyłem się [ mogę zaryzykować stwierdzenie ] - moddingu Risena na poziomie zaawansowanym ) a drugą nogą na nowo powstałym forum Risen nexus http://www.nexusmods.com/risen/? , ale do meritum:

W chwilii obecnej zajmuje się tworzeniem własnych modów, w tym bardzo dużego projektu - rozszerzenia do gry pt. Risen The Strike expansion mod: http://forum.worldofplayers.de/forum/threads/1291730-MOD-PROJECT-Risen-Strike-of-the-Paladins-expansion-mod-discussion-and-progress-topic

http://forum.worldofplayers.de/forum/threads/1315647-Risen-The-Strike-expansion-mod-%28-project-gallery-%29

Jako, że bardzo lubię Risena, który "klimatem" i stylem rozgrywki jest bliźniaczy do serii Gothic - postanowiłem stworzyć w międzyczasie mod zmieniający grafikę krajobrazu. Ma on na celu przerobienie bardziej cukierkowej grafiki Risen na b.ponurą grafę znaną z Gothica 1. Uzyskałem nawet pozwolenie na użycie wybranych tekstur z moda Gothic Reloaded od jego twórcy ThielHater'a z worldofplayers.de .

Uważam, że Risen z jego nowoczesnym silnikiem stanowi doskonałą platformę do przerobienia go na modłę Gothica 1, a nawet zbudowania fanowskiej kontynuuacji serii Gothic typu total-conversion ( na chwilę obecną narzędzia moderskie pozwalają nam ingerować w praktycznie każdy aspekt gry ).  Sprawdźcie np. Risen Neuland http://forum.worldofplayers.de/forum/threads/1309370-release-Neuland-%28DTC%29.

Wracając do kwestii RLCP zacząłem przerabiać już krajobraz gry, efekty na screenach. Aby osiągnąć cel muszę:

- zmienić tekstury na ciemniejsze i bardziej ponure ( jest to już częściowo zrobione )
- usunąć z mapy wszystkie tropikalne drzewa i krzaczory ( częściowo zrobione )
- zastąpić je mniej tropikalnymi gatunkami drzew ( już częściowo zrobione )
- opcjonalnie zmniejszyć kolor nieba i kolor poświaty jaki niebo daje
- zmniejszyć siłę i ilość padania światła słonecznego ( w Risenie światło świeci bardzo mocno i punktowo, powodując liczne odblaski natomiast z tego co zauważyłem - w serii Gothic ilość światła jest bardzo "wyrównana" , a światło nie świeci punktowo. ) Niestety nie jestem specem od shaderów, ale wiem gdzie znajdują się pliki odpowiadające za oświetlenie w grze.

 W związku z tym chciałbym prosić was o pomoc - może ktoś znający się na shaderach poświęciłby chwilę i pomógłby mi ze zmianą sposobu emisji światła w grze??? W każdej chwilii służę pomocą dotyczącą moddingu Risena.

Pozdrawiam, Zagłoba

Mały podgląd obecnych efektów pracy nad modem:



oraz: http://zapodaj.net/ef07470ff5245.jpg.html





 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Niestety nie kojarzę żebyśmy mieli tu kogokolwiek bardziej ogarniającego shadery. Ja skrobię proste / przerabiam gotowe w ShaderLab i Cg/HLSL na potrzeby moich projektów w Unity, ale to raczej za mało na twoje potrzeby (do tego nawet nie wiem w jakim języku pisze się shadery do Genome Engine i raczej nie jestem zainteresowany udziałem w kolejnych niekomercyjnych projektach). Jesteś w stanie napisać coś więcej na temat tego systemu shaderów i wkleić jakieś sample oraz opis tego co chciałbyś z nimi osiągnąć?

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Jeżeli chodzi o shadery - to moja wiedza na ten temat jest naprawdę zerowa... Mogę podesłać Ci kilka plików gry, które da się odpalić notatnikiem i sam już ocenisz czy chce Ci się w to bawić czy nie. Czy gdzieś napisałem, że to niekomercyjny projekt ? ;D Normalną rzeczą jest że za pomoc trzeba się odwdzięczyć - albo zapłacę albo rozliczymy się w jakiś inny sposób ( spokojnie, nie gustuje w chłopakach :D ) . Pozdrawiam
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Ty chcesz by ktoś przerobił shadery, czy napisał je od nowa?

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Raczej przerobił. Ujme to tak - nie ważne jak to zrobicie, ważny jest efekt końcowy - jeżeli będzie to wyglądać tak jak chce, to wisi mi jak ktoś to osiągnie.
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.


Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
To nie są shadery, to efekty postprodukcyjne. W każdym razie rozumiem że o ich edycję ci chodzi?
//edit: składnia jest ta sama co w shaderach od Unity (HLSL). Co przykładowo chcesz żeby z tym zrobić?

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Chciałbym ograniczyć poziom ( jasność ) i sposób oświetlenia dziennego do poziomu znanego z Gothic 1 http://zapodaj.net/3986d3c6b6fb9.jpg.html

aktualnie jest taki http://zapodaj.net/42c62b923d11e.jpg.html .

Czyli ciemniejsze, bardziej szare i ponure niebo, bardziej "płaski" sposób oświetlenia ( czyli zmniejszyć siłę punktowego padania światła - a bardziej równomiernie je "rozciągnąć" -tj. wyrównać siłę padania światła ) - mam nadzieje że dostatecznie "jasno" ;D  się wyraziłem.   

Jeżeli da się również ustawieniami zmienić kolor nieba na ciemnoszary ( aczkolwiek wydaje mi się że zależne to jest bezpośrednio od tekstury )
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.


Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Witaj, może jestem w błędzie i moja chora główka źle mi podpowiada ale czy gdyby dopasować / stworzyć nowy shader do chociażby takiego Sweet FX i wkleić go do gry - to nie dałoby się osiągnąć upragnionego przeze mnie efektu ?

Tak czy inaczej będę dalej szukać plików Risena zawierających shadery
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

Maciej

Maciej

Użytkownicy
posty3689
Propsy1006
ProfesjaGracz
  • Zbanowany
Mam 2 pytania do autora tematu.

Czy gdy skonczysz mod napiszesz temat na themodders ?

Myslales zeby zmienic wyglad potworow na ten z gothica ? Sorka za lekki oftop
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Spróbuj podmienić i skompilować ten plik: http://speedy.sh/8H32J/post-hdr.fx
W funkcjach ToneMap i ExpToneMap wcześnie dodałem następującą linijkę: 
worldColor.rgb = lerp(worldColor.rgb, float3(1.0f, 1.0f, 1.0f) * pow(length(worldColor.rgb), 3), 0.5);Wylicza odpowiednik danego koloru ale w odcieniach szarości i zbliża ciemne wartości ku jeszcze ciemniejszym (matematycznie - podnosi do trzeciej potęgi wartość z zakresu 0-1), a następnie podmienia kolor na będący pomiędzy oryginalnym a tym wyliczonym. Siłę efektu można by zmieniać przez ostatni parametr (0.5). Czyli gdybyś dał tam 1, otrzymałbyś czarnobiały (nie licząc późniejszych efektów) i dość ciemny obraz. Jestem ciekaw czy to się w ogóle dobrze skompiluje i wczyta do gry :D

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Czy gdy skonczysz mod napiszesz temat na themodders ?

- Oczywiście, że napiszę

Myslales zeby zmienic wyglad potworow na ten z gothica ? Sorka za lekki oftop

- Już nawet zacząłem robić takiego moda, jednak ograniczeniem są animacje - nie wszystkie animacje będą pasowały. Jak dotychczas nie mamy możliwości ( społeczność modderska Risena ) edycji całych animacji, a jedynie zamiane ich części, potrafimy też zmusić silnik gry do pominięcia wybranej animacji. Do tej pory udało mi się przenieść do Risena modele kretoszczura, pełzacza / pełzacza wojownika oraz krwiopijcy - jednak screenów podglądowych na razie nie będę dawał ponieważ modele są jeszcze niegotowe.

Mac Dun - generalnie jeżeli masz wolną chwilę, to mógłbyś mi w tym pomóc, wbrew pozorom przenoszenie modeli jest jedną z prostszych rzeczy związanych z moddingiem Risena i jeżeli posiadasz trochę umiejętności modelowania, to z pewnością sobie poradzisz :) . Modele, textury i narzędzia mogę Ci dostarczyć. Zawsze przyda nam się nowa para rąk do pracy w ekipie modująco-risenującej. Pozdro

Btw. stworzyłem nawet ostatnio mod do Gothica 3, który zastępuje chu*owo brzydki model szkieletu, fajniejszym - tym z Risena. Nie miałem specjalnie czasu przetestować, ale mimo to wrzucam, przetestujcie - jeśli działa wrzućcie tutaj screena jak wygląda w grze.
http://speedy.sh/edyea/skeleton.rar ( tekstura może nie do końca się zgadzać, bo 3ds Max przy imporcie zgubił mi materiał i przypisałem jakiś pierwszy lepszy szkieletowy ;-P )   


Post połączony: 2014-02-02, 00:55
Nie do końca o to chodziło :D , ale i tak jestem pod wrażeniem - wszystko zadziałało zgodnie z opisem :-)

Screeny:

http://zapodaj.net/b071fa8e0e0e7.jpg.html

http://zapodaj.net/51e8a23854cf9.jpg.html

Post połączony: 2014-02-02, 08:46


EDIT:

Znalazłem właśnie prawdziwy folder z shaderami : http://www.speedyshare.com/VDY7w/shadermaterial.rar


 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Mnóstwo tam kompilacji warunkowej, będzie trochę zabawy ze zgadywaniem które z tamtych parametrów są ustawione :/
Ogólnie, pixel shadery są funkcjami które przyjmując jako dane między innymi teksturę, współrzędne punktu i dane oświetlenia obliczają i zwracają kolor dla odpowiedniego pixela na ekranie. Modyfikując obliczenia można sprawić żeby np niebo było ciemniejsze i bardziej szare (to co zrobiłem poprzednim przykładem ze wszystkim) - ale nie łatwiej zrobić to edytując teksturę? Masz możliwość sprawdzenia czy np XFX_SUN_OCCLUSION_BILLBOARD jest gdzieś zdefiniowane?

Co do sposobu padania światła, odpowiednie parametry mogą siedzieć w obliczeniach związanych z modelem Phonga, poszukam tam, ale logiczniejsze byłoby jakby ustalały je parametry konkretnych materiałów.

Właściwie to zamiast to robić chętniej bym ci wyjaśnił o co w tych shaderach chodzi żebyś sam poeksperymentował. Bo obawiam się że trzeba tu postawić głównie na próby i błędy (chociaż o dziwo pierwsza próba dała efekty identyczne z oczekiwanymi ;)).

Masz chociaż możliwość sprawdzenia które shadery (a najlepiej które funkcje) są używane na danych powierzchniach / materiałach?

Maciej

Maciej

Użytkownicy
posty3689
Propsy1006
ProfesjaGracz
  • Zbanowany
Zagłoba niestety nie posiadam risena , a i w blenderze dopiero kilka tygodni bawię się , więc moja wiedza jest bardzo mała
:(  Może kiedyś jak ogarnę bardziej
 
http://zapodaj.net/51e8a23854cf9.jpg.html

Jak dla mnie trochę za bardzo mało kolorowy ten screen :P
 

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Avallach napisał:
"Masz możliwość sprawdzenia czy np XFX_SUN_OCCLUSION_BILLBOARD jest gdzieś zdefiniowane? "


O ile dobrze zrozumiałem, to pytasz czy plik XFX_SUN_OCCLUSION_BILLBOARD istnieje gdzieś w katalogu gry ?

- niestety nie napotkałem na nic takiego.

"Właściwie to zamiast to robić chętniej bym ci wyjaśnił o co w tych shaderach chodzi żebyś sam poeksperymentował. Bo obawiam się że trzeba tu postawić głównie na próby i błędy (chociaż o dziwo pierwsza próba dała efekty identyczne z oczekiwanymi ;)). "

- Chętnie nauczyłbym się podstaw jeśli zechciałbyś mi je wyjaśnić i wtedy bym sobie popróbował.

"Masz chociaż możliwość sprawdzenia które shadery (a najlepiej które funkcje) są używane na danych powierzchniach / materiałach? "

- Mam możliwość wglądu w materiały gry ( ._xmat ) i w tej chwilii wiem jak sprawdzić jakich tekstur poszczególny materiał używa jako Diffuse, Normal i Specular, jednak jeżeli chodzi o dokładniejsze rzeczy, to musiałbym dopytać się o dokładniejsze szczegóły Baltrama - twórcy narzędzia Risen .xmatEDIT
Pozdro
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Nie chodzi o plik. Chodzi o to czy w jakimkolwiek pliku jest napisane #define XFX_SUN_OCCLUSION_BILLBOARD. 

Programowałeś kiedyś? W czym? Shadery są napisane w C-podobnym języku HLSL. Tutaj jest jego świetna dokumentacja: http://msdn.microsoft.com/en-us/library/windows/desktop/bb509638(v=vs.85).aspx
A tu lista wbudowanych funkcji wraz z opisami: http://msdn.microsoft.com/en-us/library/windows/desktop/ff471376(v=vs.85).aspx 

Są dwa główne rodzaje shaderów, pixel i vertex shadery. Ciebie interesują pixel shadery. Nie wiem czy vertex shadery w normalnej sytuacji są w ogóle używane w Risenie. Pixel shadery tak jak napisałem wcześniej, zajmują się wyliczeniem koloru pixela na podstawie jego tekstury, współrzędnych na tej teksturze, padającego światła itd. Można dodawać w nich swoje własne obliczenia, jak te moje, które zmniejszyły nasycenie i przyciemniły ciemne kolory. Niestety trzeba wiedzieć który dokładnie shader edytować. A w jednym pliku może być ich wiele wariantów - nie dość że pixel i vertex shadery, to jeszcze różne wersje kompilowane warunkowo w zależności od tego czy gdzieś indziej zostało coś ustawione (jak to XFX_SUN_OCCLUSION_BILLBOARD). 

Zagłoba

Zagłoba

FatDragon Game Dev.
Jestę Hrabią Burkina Faso
posty428
Propsy308
ProfesjaNierób
  • FatDragon Game Dev.
  • Jestę Hrabią Burkina Faso
Niestety nigdy nie programowałem, jednak mniej-więcej rozumiem na czym programowanie polega. Jeśli zechciałbyś pokazać mi regułę na dwóch-trzech przykładach wziętych z plików - to myślę, że mógłbym wtedy pojąć o co w programowaniu shaderów chodzi.
 
Tanio sprzedam używaną  k.graficzną Nvidia GTX650 4096mb.

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
To jest ogólnie rzecz biorąc matematyka. Weźmy choćby to co przerobiłem. Zajrzałem do pliku, znalazłem funkcję od pixel shadera, zobaczyłem że edytuje ona obiekt o nazwie "worldColor", a konkretnie jego pole rgb, a z kontekstu wynikało że jest to wektor (coś jak tablica) trzech liczb, które zawierają wartości związane z komponentami barwnymi koloru (czerwony, zielony, niebieski) w przedziale 0-1. Nasunęło mi się na myśl że chcesz żeby było szarzej i ciemniej (nie pisałeś tego wprost, ale tak to ogólnie zrozumiałem).
Prostym czarno-białym odpowiednikiem koloru jest kolor który ma taką samą jasność, ale równe komponenty barwne (tak że neutralizują się do szarości). Jasność koloru to długość wektora który go przedstawia. Zajrzałem do listy dostępnych funkcji matematycznych (linkowałem parę postów temu). Wyszło na to że jasnością koloru worldColor.rgb będzie length(worldColor.rgb)Teraz chcemy otrzymać z tego kolor o takiej jasności i w odcieniach szarości, mnożymy więc tą jasność przez kolor biały (taki którego wszystkie składowe to 1):
float3(1.0f, 1.0f, 1.0f) * length(worldColor.rgb)Nie chcemy jednak żeby obraz był całkowicie czarnobiały. Chcemy czegoś po środku. Używamy więc funkcji lerp, która "miesza" dwa wektory w określonej proporcji na zasadzie "lerp(pierwszy, drugi, proporcja)", gdzie przy proporcji 0 otrzymamy pierwszy, przy 1/2 otrzymamy coś pomiędzy, a przy 1 otrzymamy drugi. Wyszło to:
lerp(worldColor.rgb, float3(1.0f, 1.0f, 1.0f) * length(worldColor.rgb), 0.5);
Chcemy jednak żeby kolor był ciemniejszy. Znajomość wykresów podstawowych funkcji matematycznych i faktu że ta jasność jest w zakresie 0-1 podpowiada że najprościej osiągnąć to funkcją x^a, gdzie im wyższe a, tym powstała krzywa będzie bardziej ściągnięta w dół. Uznałem że 3 będzie ok. Do używamy funkcji "pow(liczba, wykładnik)":
pow(length(worldColor.rgb), 3)Wyszło więc finalne:
worldColor.rgb = lerp(worldColor.rgb, float3(1.0f, 1.0f, 1.0f) * pow(length(worldColor.rgb), 3), 0.5);Pooglądaj te gotowe shadery, jakbyś nie rozumiał jakiegoś kawałka mogę spróbować ci go wyjaśnić, bo ciężko wyjaśnić ogólnie wszystko :D


0 użytkowników i 2 gości przegląda ten wątek.
0 użytkowników
Do góry