Warsztat » Forum

[Programowanie grafiki] Cień od wzoru na plakacie - możliwe z użyciem sv?

Aug 23, 2010 | skalniak |
9 wypowiedzi na 1 stronach:
1
skalniak
Aug 23, 2010

Cień od wzoru na plakacie - możliwe z użyciem sv?

Czesc rozwazylem rozne zalety roznych technik generowania dynamicznych cieni. Zastanawiam sie czy jest mozliwe zrobienie technika shadow volume cienia od teksturki z alfa testem ?

dziek i:)

Pozdr. skalniak
Regedit
Aug 30, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

Widzę, że nikt nie spieszy z odpowiedzią, to ja się jednak wypowiem.

Otóż nie widzę tutaj sensownego rozwiązania.

Jeśli przez "plakat" rozumiesz billboard - quad zwrócony zawsze przodem do kamery, z nałożoną teksturą i z użyciem alfa-testu, to przy Shadow Mappingu łatwo to zrobić. Po prostu renderujemy ten quad zwrócony przodem do źródła światła, wykonujemy alfa-test (a jeśli tekstura Shadow Mapy jest w formacie zmiennoprzecinkowym i alfa-test nie działa, to używamy w Pixel Shaderze instrukcji texkill, czyli w HLSL funkcji clip) i do Shadow Mapy trafiają tylko prawidłowe piksele. Ja tak robię u siebie z liśćmi swoich drzew.

Natomiast do Shadow Volume potrzebujesz przecież geometrię, nie teksturę. Jedyne wyjście, jakie tu widzę, to zrobić jakiś uproszczony model tego co przedstawia billboard i jego rysować do cienia. Choćby to była kulka, lepsze to, niż rysować quad bez alfa-testu, bo wtedy cień będzie miał kształt kwadratu.

Jeszcze inne wyjście, o jakim teraz pomyślałem, to zrobić gęstą kwadratową siatkę trójkątów odpowiadających pikselom tekstury quada i przesuwać je daleko lub zostawiać w miejscu quada zależnie od wartości alfa tekstury w danym miejscu quada. Taki Shadow Volume Displacement Mapping :) To by raczej wymagało Vertex Texture Fetch, czyli teksturowania w *Vertex* Shaderze (dostępne od Shader Model 3).
RageX
Aug 28, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

Nie trzeba całej siatki, bo przecież o krawędzie głównie chodzi, czyli jakiś edge filter z tej teksturki. Można by też użyć jakiegoś algorytmu interpolacji do tego celu i z pikselowatego kształtu zrobić jakiś w miarę obły.
Krzysiek K.
Aug 30, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

Cytat:
Vertex Texture Fetch, czyli teksturowania w *Vertex* Shaderze (dostępne od Shader Model 3)

Różnie z tym bywa. Z tego, co słyszałem, to Radeony z SM 3.0 co prawda mają vertex texture fetch, ale nie wykazują żadnych formatów tekstur wspieranych przez vertex shader (nawet A8R8G8B8), więc w de facto ich nie mają. :)
mINA87
Aug 30, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

Cytat:

Cytat:
Vertex Texture Fetch, czyli teksturowania w *Vertex* Shaderze (dostępne od Shader Model 3)

Różnie z tym bywa. Z tego, co słyszałem, to Radeony z SM 3.0 co prawda mają vertex texture fetch, ale nie wykazują żadnych formatów tekstur wspieranych przez vertex shader (nawet A8R8G8B8), więc w de facto ich nie mają. :)

No właśnie - wczesne karty od ATI, kompatybilne z SM3.0, nie mają możliwości użycia tekstur  w VS - nie nazywałbym jednak tego sprzętem SM3.0.
Jako remedium ATI udostępniło taką egzotykę jak render-to-vertex-buffer. Masochiści mogą się pobawić xD

By użyć VS z alpha-mapami należałoby dokonać triangulacji tego co jest na teksturce - tak jak to powiedzieli przedmówcy.

Reg: czegoś takiego chciałem kiedyś użyć do wycinania cieni w light shafcie przy użyciu shadow map :)
skalniak
Sep 3, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

czesc:) dzieki za wyjasnienie :)

Rozwialy sie watpliwosci :) i nadzieji :P :P

Pozdr. skalniak
Krzysiek K.
Sep 1, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

Na upartego w prostych przypadkach (pojedynczy quad z teksturą) da się to zrobić. :)

Metoda:
- potrzebujemy zapisanej głębokości sceny na teksturze,
- rysujemy na ekranie cokolwiek, co obejmie geometrię shadow volume'a naszego quada,
- w trakcie renderowania używamy shaderów, które na podstawie tekstury głębokości i tekstury maski stwierdzi, czy dany piksel jest w cieniu i "ubije" wszystkie piksele, które w cieniu nie są (można użyć alpha testu - wyjdzie krótszy pixel shader),
- ustawiamy operację stencila na cokolwiek, co spowoduje że wyrenderowane piksele pozostaną zacienione,

Właściwie jest to prymitywny shadow mapping zintegrowany ze stencilem. :)
skalniak
Sep 15, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

K.K: dzieki :) bede musial to przetrawic i sprobowac zaimplementowac :) Ciekwe czy bedzie rownie ostry jak  sv.

Pozdrawiam
skalniak
Krzysiek K.
Sep 16, 2010

Odp: Cień od wzoru na plakacie - możliwe z użyciem sv?

Cytat:
K.K: dzieki :) bede musial to przetrawic i sprobowac zaimplementowac :) Ciekwe czy bedzie rownie ostry jak  sv.

Będzie. :)
Strony:
1