{"id":348,"date":"2016-03-10T12:53:31","date_gmt":"2016-03-10T11:53:31","guid":{"rendered":"https:\/\/colobot.info\/?p=348"},"modified":"2016-03-10T18:04:14","modified_gmt":"2016-03-10T17:04:14","slug":"dynamic-shadows-problems-and-improvements","status":"publish","type":"post","link":"https:\/\/colobot.info\/pl\/2016\/03\/10\/dynamiczne-cienie-problemy-i-usprawnienia\/","title":{"rendered":"Dynamiczne cienie: problemy i usprawnienia"},"content":{"rendered":"<p>Witamy na blogu developerskim po\u015bwi\u0119conym grze Colobot: Gold Edition. Ze wzgl\u0119du na to, \u017ce oficjalne stabilne wydania s\u0105 stosunkowo rzadkie oraz na stronie g\u0142\u00f3wnej nie ukazuj\u0105 si\u0119 \u017cadne nowe informacje, projekt mo\u017ce si\u0119 wydawa\u0107 w zastoju, kiedy w rzeczywisto\u015bci jest nadal w cz\u0119\u015bciowo aktywnym rozwoju. Z tego powodu postanowili\u015bmy opisywa\u0107 zmiany wprowadzane do gry na bie\u017c\u0105co.<\/p>\n<p>Dzisiaj chcia\u0142bym porozmawia\u0107 na temat jednej z wi\u0119kszych opcji w Colobot: dynamicznych cieniach. Wprowadzone w 0.1.5 jako funkcja eksperymentalna, po kolejnych ulepszeniach cienie dynamiczne zosta\u0142y p\u00f3\u017aniej dodane jako domy\u015blne. Cienie dynamiczne w Colobocie korzystaj\u0105 z techniki <a href=\"https:\/\/en.wikipedia.org\/wiki\/Shadow_mapping\" target=\"_blank\">Shadow Mapping<\/a>, kt\u00f3ra jest u\u017cywana w wi\u0119kszo\u015bci nowoczesnych gier, jest wpierana przez wi\u0119kszo\u015b\u0107 kart graficznych oraz jest stosunkowo niedroga obliczeniowo, dzi\u0119ki czemu mo\u017cna j\u0105 zastosowa\u0107 w aplikacjach 3D w czasie rzeczywistym.<\/p>\n<p>Niestety, Colobot u\u017cywa domy\u015blnie urz\u0105dzenia OpenGL 1.4, kt\u00f3re nie jest oparte o <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Shader\">shadery<\/a>, co spowodowa\u0142o, \u017ce poprawne zaimplementowanie dynamicznych cieni by\u0142o trudne. Poprzednio to urz\u0105dzenie wymaga\u0142o 6 jednostek teksturuj\u0105cych do obliczenia \u0142adnie wygl\u0105daj\u0105cych cieni, ale jednocze\u015bnie wprowadzi\u0142o to kilka b\u0142\u0119d\u00f3w. Ostatnio wprowadzone zmiany naprawi\u0142o wi\u0119kszo\u015b\u0107 z nich. Opcja &#8222;Quality shadows&#8221; zosta\u0142a zmieniona; obecnie odpowiada ona za cieniowanie obiekt\u00f3w przez same siebie. Cienie s\u0105 obecnie zaimplementowane bezpo\u015brednio po stronie implementacji urz\u0105dze\u0144 graficznych zamiast na og\u00f3lnym urz\u0105dzeniu renderuj\u0105cym. Urz\u0105dzenia graficzne wykrywaj\u0105 automatycznie, czy mog\u0105 wspiera\u0107 lepsze cienie. Urz\u0105dzenie OpenGL 1.4 wymaga teraz 4 jednostek teksturuj\u0105cych dla lepszych cieni, pozosta\u0142e implementacje tylko 3.<\/p>\n<p>Poprzednio tylko obiekty mog\u0142y rzuca\u0107 cienie, ale po dzisiejszych zmianach mo\u017cna w\u0142\u0105czy\u0107 eksperymentaln\u0105 opcj\u0119, kt\u00f3ra w\u0142\u0105cza rzucanie cieni przez teren. Efektem jest nieco lepsza grafika, jednak\u017ce obni\u017ca to znacz\u0105co wydajno\u015b\u0107. Dodatkowo, wi\u0119kszo\u015b\u0107 \u015bwiat\u00f3w w Colobocie nie ma terenu rzucaj\u0105cego wyra\u017ane cienie, a zatem ta opcja mo\u017ce nie by\u0107 potrzebna. Niemniej jednak, mo\u017cna j\u0105 wykorzysta\u0107 do testowania optymalizacji. Poni\u017cej mo\u017cna zobaczy\u0107 por\u00f3wnanie.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/a8AxZvX.png\" alt=\"Without terrain shadows\" width=\"408\" height=\"320\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/yzPslkn.png\" alt=\"With terrain shadows\" width=\"408\" height=\"320\" \/><\/p>\n<p>Aby w\u0142\u0105czy\u0107 t\u0119 opcj\u0119, nale\u017cy doda\u0107 poni\u017csze linie do pliku colobot.ini:<\/p>\n<p><code>[Experimental]<br \/>\nTerrainShadows=1<\/code><\/p>","protected":false},"excerpt":{"rendered":"<p>Witamy na blogu developerskim po\u015bwi\u0119conym grze Colobot: Gold Edition. Ze wzgl\u0119du na to, \u017ce oficjalne stabilne wydania s\u0105 stosunkowo rzadkie oraz na stronie g\u0142\u00f3wnej nie ukazuj\u0105 si\u0119 \u017cadne nowe informacje, projekt mo\u017ce si\u0119 wydawa\u0107 w zastoju, kiedy w rzeczywisto\u015bci jest nadal w cz\u0119\u015bciowo aktywnym rozwoju. Z tego powodu postanowili\u015bmy opisywa\u0107 zmiany wprowadzane do gry na bie\u017c\u0105co.<\/p>\n<p>Dzisiaj chcia\u0142bym porozmawia\u0107 na temat jednej z wi\u0119kszych opcji w Colobot: dynamicznych cieniach. Wprowadzone w 0.1.5 jako funkcja eksperymentalna, po kolejnych ulepszeniach cienie dynamiczne zosta\u0142y p\u00f3\u017aniej dodane jako domy\u015blne. Cienie dynamiczne w Colobocie korzystaj\u0105 z techniki <a href=\"https:\/\/en.wikipedia.org\/wiki\/Shadow_mapping\" target=\"_blank\">Shadow Mapping<\/a>, kt\u00f3ra jest u\u017cywana w wi\u0119kszo\u015bci nowoczesnych gier, jest wpierana przez wi\u0119kszo\u015b\u0107 kart graficznych oraz jest stosunkowo niedroga obliczeniowo, dzi\u0119ki czemu mo\u017cna j\u0105 zastosowa\u0107 w aplikacjach 3D w czasie rzeczywistym.<\/p>\n<p>Niestety, Colobot u\u017cywa domy\u015blnie urz\u0105dzenia OpenGL 1.4, kt\u00f3re nie jest oparte o <a href=\"https:\/\/pl.wikipedia.org\/wiki\/Shader\">shadery<\/a>, co spowodowa\u0142o, \u017ce poprawne zaimplementowanie dynamicznych cieni by\u0142o trudne. Poprzednio to urz\u0105dzenie wymaga\u0142o 6 jednostek teksturuj\u0105cych do obliczenia \u0142adnie wygl\u0105daj\u0105cych cieni, ale jednocze\u015bnie wprowadzi\u0142o to kilka b\u0142\u0119d\u00f3w. Ostatnio wprowadzone zmiany naprawi\u0142o wi\u0119kszo\u015b\u0107 z nich. Opcja &#8222;Quality shadows&#8221; zosta\u0142a zmieniona; obecnie odpowiada ona za cieniowanie obiekt\u00f3w przez same siebie. Cienie s\u0105 obecnie zaimplementowane bezpo\u015brednio po stronie implementacji urz\u0105dze\u0144 graficznych zamiast na og\u00f3lnym urz\u0105dzeniu renderuj\u0105cym. Urz\u0105dzenia graficzne wykrywaj\u0105 automatycznie, czy mog\u0105 wspiera\u0107 lepsze cienie. Urz\u0105dzenie OpenGL 1.4 wymaga teraz 4 jednostek teksturuj\u0105cych dla lepszych cieni, pozosta\u0142e implementacje tylko 3.<\/p>\n<p>Poprzednio tylko obiekty mog\u0142y rzuca\u0107 cienie, ale po dzisiejszych zmianach mo\u017cna w\u0142\u0105czy\u0107 eksperymentaln\u0105 opcj\u0119, kt\u00f3ra w\u0142\u0105cza rzucanie cieni przez teren. Efektem jest nieco lepsza grafika, jednak\u017ce obni\u017ca to znacz\u0105co wydajno\u015b\u0107. Dodatkowo, wi\u0119kszo\u015b\u0107 \u015bwiat\u00f3w w Colobocie nie ma terenu rzucaj\u0105cego wyra\u017ane cienie, a zatem ta opcja mo\u017ce nie by\u0107 potrzebna. Niemniej jednak, mo\u017cna j\u0105 wykorzysta\u0107 do testowania optymalizacji. Poni\u017cej mo\u017cna zobaczy\u0107 por\u00f3wnanie.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/a8AxZvX.png\" alt=\"Without terrain shadows\" width=\"408\" height=\"320\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/yzPslkn.png\" alt=\"With terrain shadows\" width=\"408\" height=\"320\" \/><\/p>\n<p>Aby w\u0142\u0105czy\u0107 t\u0119 opcj\u0119, nale\u017cy doda\u0107 poni\u017csze linie do pliku colobot.ini:<\/p>\n<p><code>[Experimental]<br \/>\nTerrainShadows=1<\/code><\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"cybocfi_hide_featured_image":"","footnotes":""},"categories":[4],"tags":[6],"class_list":["post-348","post","type-post","status-publish","format-standard","hentry","category-development-blog","tag-dynamic-shadows"],"_links":{"self":[{"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/posts\/348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/comments?post=348"}],"version-history":[{"count":14,"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":362,"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/posts\/348\/revisions\/362"}],"wp:attachment":[{"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/media?parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/categories?post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/colobot.info\/pl\/wp-json\/wp\/v2\/tags?post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}