Trawa
Hej!
Skoro założyłem sobie, iż będę pisał o największych nawet bzdurach, byleby pisać jakiekolwiek notki, oto jest – trzecia notka w Lutym. :P
Tak więc przez ostatnie parę dni pracowałem nad trawą. Pomyślałem sobie, że trawę chciałem napisać od dawna, a jednak wydawała mi się prosta i zawsze odkładałem te plany. Wczoraj jednak wziąłem się w garść – tak powstało coś takiego:
Dorzuciłem jeszcze parę drzewek ściągniętych (znaczy – ukradzionych) z jakieś strony internetowej, bo sama łąka pełna trawy wyglądała pusto. ;)
W każdym razie, sprawa okazała się nie tak banalna – ponieważ miałem problem projektowy. Na początku rysowałem trawę z włączonym Alpha Blendingiem i wyłączonym zapisem Z. Jednak wtedy trzeba sortować pojedyńcze kępki według odległości od kamery (od tył) – co też oznacza, że musimy rysować je osobnymi DIP-ami, albo pakować do dynamicznych VB/IB co klatkę. Oba rozwiązania średnio mi się podobały pod względem wydajnościowym. Jednak, jako że nie wpadłem na nic lepszego – pakuję wszystkie kępki do jednego bufora w preprocessie, a wyświetlam z wyłączonym blendingiem i włączonym ZWrite – używając jedynie Alpha Testu. Nie wygląda to gorzej, a lepszego pomysłu na rozwiązanie tego problemu nie mam. W arcie opisującym tworzenie trawy w GPU Gems w ogóle o tym zagadnieniu zaś nie piszą. :)
Na koniec notki, mała dygresja. Wzorując się na Gynvaelu zwracałem ostatnimi czasy na frazy pod jakimi wyszukiwarki podwały adres mojego bloga. Spośród wielu zwykłych, znajdują się dwie perełki – rysowanie urządzeń, oraz coś, co kompletnie mnie zaskoczyło: vertex shader za darmo. Oto pragnę uświadomić każdego, kto odwiedza mojego bloga a jeszcze o tym nie wie – jeśli kiedykolwiek płaciliście za możiwość pisania własnych vertex shaderów – zostaliście oszukani. :P
„Wzorując się na Gynvaelu zwracałem ostatnimi czasy na frazy pod jakimi wyszukiwarki podwały adres mojego bloga”
Biedne te frazy ;)
Kurak said this on 27 lutego, 2009 @ 6:25 pm |
Wygląda całkiem nieźle, trochę dopracować oświetlenie i będzie cacy :) A co z wydajnością?
Biter said this on 27 lutego, 2009 @ 7:41 pm |
Fakt oświetlenia nieco brakuje ;) BTW trawę można też zrobić za pomocą futra, które sam ostatnio opisywałeś. Trzeba zrobić jakiś LOD wówczas, ale jeśli chodzi o murawę lub trawnik w ogródku to jest to bardzo dobre rozwiązanie.
Riddlemaster said this on 27 lutego, 2009 @ 7:53 pm |
Hmm.. za jakiś czas będziesz mistrzem
Pozdrawiam
Witold Skaczkiewicz said this on 28 lutego, 2009 @ 2:47 am |
(Apropo refererów, hi Charibo, nawet nie wiedziałem że masz bloga ;D)
Hyhy ‚rysowanie urządzeń’ rulz ;>
Trawa całkiem niebrzydka, wrzuciłbyś może screena w większej rozdzielczości ? ;>
Gynvael Coldwind said this on 28 lutego, 2009 @ 4:16 am |
Przydało by się zbliżenie tej trawie.
xairoshin said this on 28 lutego, 2009 @ 12:10 pm |
Biter: Na Radeonie 2600 @ Athlon 2600XP cały czas stabilne, ograniczone VSynciem, 60fps. :)
Riddle: Co do trawy na shells & fins – wiem, nawet wyczytałem to na twoim blogu. :) Kiedyś pewnie spróbuję
Oświetlenie trochę ssie, bo oświetlam trawę jak plane-a (znaczy normalna jest stała i wynosi float3(0,1,0))
Witold Skaczkiewicz: No, jakiś czas w moim przypadku dąży do dziesięcioleci :P
Hi, Gyn, hi :)
Screen w wysokiej rozdzielczości tutaj: http://pske.pl/tmp/hirestrafka.jpg
charibo said this on 1 marca, 2009 @ 10:04 pm |
Trawę łatwo dobrze oświetlić jeśli masz nieco pofalowany teren (a nie plane’a). Bo wtedy wystarczy wziąć normalną powierzchni w danym punkcie i przypisać ją do normalnej trawy.
Riddlemaster said this on 2 marca, 2009 @ 1:54 pm |