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 ;)
Wygląda całkiem nieźle, trochę dopracować oświetlenie i będzie cacy :) A co z wydajnością?
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.
Hmm.. za jakiś czas będziesz mistrzem
Pozdrawiam
(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 ? ;>
Przydało by się zbliżenie tej trawie.
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
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.