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:

image

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

~ - autor: charibo w dniu 27 lutego, 2009.

Komentarzy 8 to “Trawa”

  1. „Wzorując się na Gynvaelu zwracałem ostatnimi czasy na frazy pod jakimi wyszukiwarki podwały adres mojego bloga”

    Biedne te frazy ;)

  2. Wygląda całkiem nieźle, trochę dopracować oświetlenie i będzie cacy :) A co z wydajnością?

  3. 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.

  4. Hmm.. za jakiś czas będziesz mistrzem

    Pozdrawiam

  5. (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 ? ;>

  6. Przydało by się zbliżenie tej trawie.

  7. 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

  8. 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.

Dodaj odpowiedź do xairoshin Anuluj pisanie odpowiedzi