Warsztat - Programowanie gier

Lipiec 30, 2010, 17:40:44 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Engine a shadery - sens  (Przeczytany 1704 razy)
Charibo
Member2000
*******

wiadomości: 2394



Zobacz profil WWW
« : Marzec 24, 2007, 13:18:44 »

Naszły mnie wątpliwości co do sensu silnikow graficznych jako dużych, zaawansowanych projektów. Wiec, chodzi o to, że w dobie fixed-pipeline wygląd gry, efekty jakie w niej występowały, zależaly tylko i wyłącznie od programistów. Oni to, pisali w całości w kodzie wszystko to co mialo zostać wyrenderowane. Silnik wydawał się sensowną częścią gry, zawierał w sobie cały kod wszystkich fajnych rzeczy do których narysowania był zdolny i życie wydawało się proste. Jednak pojawiły się shadery, effect'y i wszystko co kiedyś musieli zawierać programiści w engine, tworzą map designerzy czy modelerzy.

Stąd moje pytanie - czy wartość silnika nie zmalała przez przypadek, jako następstwo programowalnych GPU, do frameworka którego rola sprowadza się do szybkiego renderowania tych wszystkich shaderow?

PS. Nie wiem do konca czy dobrze umiescilem ten topic. W sumie pasowalby do "Projektowanie i dokumentacja", ale z racji tego ze jest lekko "filozoficzny" postanowilem wrzucic go tutaj Smiley
Zapisane

Now these points of data make a beautiful line
And we're out of beta we're releasing on time.

Blogassek.
Charibo
Member2000
*******

wiadomości: 2394



Zobacz profil WWW
« Odpowiedz #1 : Marzec 24, 2007, 13:36:36 »

zauważ że napisałem "silnikow graficznych" a nie "gry" Smiley

Nie, nie każe pisać kodu shaderow samodzielnie designerom - ale od tego są programiści shaderow, są edytory WYSIWYG... Chodzi mi o to, że mamy dla przykładu mesh stworzony przez modelera z przypisanymi w edytorze siatek silnika effect'ami - do czego tu silnik w takim przypadku? Czy jego rola to tylko wyrenderować sobie szybko tego mesha czy moze jakieś bardziej rozbudowane funkcje musi posiadać?
Zapisane

Now these points of data make a beautiful line
And we're out of beta we're releasing on time.

Blogassek.
truman
Gość
« Odpowiedz #2 : Marzec 24, 2007, 14:09:07 »

odpowiedź na Twoje pytanie brzmi - te rzeczy się nie wykluczają a uzupełniają
Zapisane
Charibo
Member2000
*******

wiadomości: 2394



Zobacz profil WWW
« Odpowiedz #3 : Marzec 24, 2007, 17:17:25 »

st3tc: nie mówię o silniku gry - mówię o silniku grafiki (ktorego czescia jest renderer, jasne). Tutaj własnie moje pytanie - co jeszcze powinien robić silnik oprócz wlasnie skutecznego i szybkiego zarzadzania materialami/efektami/meshami[1] stworzonymi map designerow, programistow shaderow itp.?

Chodzi mi o to, ze wiekszosc efektow jakie "wspieraja" nowe silniki tak naprawde to sa poprostu shadery - czy to "wspieranie" to jest cos wiecej niz mozliwosc odpalenia jakiegostam shadera?

przyklad: randomowy silnik z DevMastera:
Cytuj
Special Effects:    Environment Mapping, Lens Flares, Particle System, Water, Fire, Explosion, Fog:
Enviroment mapping, water, fire, fog - do tego trzeba shaderow, ktore musza zostac napisane. Stad moje drugie pytanie - czy zrzucic pisanie wlasnych shaderkow na barki uzytkownikow, czy napisac samemu i zawrzec w dllce czy moze jako osobne ".fx"?

[1] O podstawach kazdego engine'u (scene managment, GUI, itp.) nie mowie
Zapisane

Now these points of data make a beautiful line
And we're out of beta we're releasing on time.

Blogassek.
nameczanin
Hero Member
*****

wiadomości: 630



Zobacz profil WWW
« Odpowiedz #4 : Marzec 24, 2007, 17:34:38 »

Zrob takie featursy (takich efektow), ale tak zeby mogly byc konfigurywalne. Wtedy juz nikt wiecej tego nie bedzie pisal, tylko najwyzej dobieral sobie parametry. IMHO.
Zapisane

orzech
Sr. Member
****

wiadomości: 261



Zobacz profil WWW
« Odpowiedz #5 : Marzec 24, 2007, 17:59:33 »

Shadery są błogosławieństwem dla wszystkich programistów. Dobry renderer nie może ograniczać klienta do używania zapisanych na sztywno - domyślnych - efektów (ognia, mgły czegoś tam), tylko powinien pozwalać na dowolne wymienianie shaderów, dzięki czemu system materiałów staje się ogólny i elastyczny (w zasadzie każdy nowy silnik jest budowany w opraciu o takie założenie). Poza tym renderer to nie tylko materiały - shadery nie zwalniają silnika z obowiązku chociażby usuwania niewidocznej geometrii, podziału przestrzennego map i wykrywania przysłaniania. Shadery to tylko końcowy etap renderowania.
Zapisane

Cytuj
"Nie staraj się zostać człowiekiem sukcesu lecz człowiekiem wartościowym."
Albert Einstein

Programmers don’t like coding, they like problem solving.
Charibo
Member2000
*******

wiadomości: 2394



Zobacz profil WWW
« Odpowiedz #6 : Marzec 24, 2007, 19:04:38 »

Moze, ale...
Cytuj
mówię o silniku grafiki (ktorego czescia jest renderer, jasne). Tutaj własnie moje pytanie - co jeszcze powinien robić silnik oprócz wlasnie skutecznego i szybkiego zarzadzania materialami/efektami/meshami[1] stworzonymi map designerow, programistow shaderow itp.?
do tego juz sie przyznalem Smiley

W sumie, to moj problem rozwiazali Orzech i Nameczanin - podjalem decyzje co do shaderow w moim FATALITY2.0. Bedzie kilka shaderow built-in odpowiedzialnych za podstawowe efekty, z tym, ze uzytkownik bedzie mial mozliwosc "podmiany" ich przez proste miedzymordzie. Do tego, jest juz napisany format plikow, w ktorym kazdy subset ma mozliwosc przypisania mu shadera, i wszystko bedzie dzialalo szybko, przez istotne ograniczenie zmian vs/ps w ciagu klatki.

Dzieki za odp. Smiley

Aha, i moze jeszcze jedno:

co to jest "silnik od pausy"? Smiley
Zapisane

Now these points of data make a beautiful line
And we're out of beta we're releasing on time.

Blogassek.
Krzysiek K.
Member2000
*******

wiadomości: 9810



Zobacz profil
« Odpowiedz #7 : Marzec 26, 2007, 22:21:14 »

Jak dla mnie, to zadaniem porządnego silnika jest obsługa interakcji. Level designer ustawia światło, wybiera dla niego modulującą cubemapę, ustawia materiał dla jakiegoś obiektu, a silnik ma zadanie wszystko narysować. Przykładowo, jeżeli wybrany materiał jest półprzezroczysty, to powinien rzucać półprzezroczysty cień i załamywać to, co widać przez obiekt. Jeżeli jakiś inny obiekt znajdzie się pomiędzy, to powinien odpowiednio rzucać cień. Jeżeli na obiekcie znajdzie się krew, czy ślady po pociskach, silnik powinien to także uwzględnić.

Do porządnego silnika nie da się łatwo "napisać" shadera danego materiału, ponieważ dany materiał może być użyty z różną geometrią (zwykłymi obiektami, obiektami animowanymi na kościach, obiektami animowanymi na procesorze, itp.), materiał może być oświetlany różną liczbą świateł z różnymi cieniami lub w różnych warunkach (różne karty z różnymi możliwościami, różne formaty HDR, odbicie w wodzie) i takie tam. W dodatku silnik musi w miarę wszystko zoptymalizować. Smiley
Zapisane

Aktualne zajęcie: Szkoła DJKurs DJ
Strony: [1]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC