Chciałbym renderować moją grę za pomocą jednego z filtrów hqx (hq2x, hq3x lub hq4x) lub filtra xBR w module cieniującym.
Jak mogę to zrobić w XNA 4.0 i SM3?
Uwaga dodatkowa: to pytanie zostało znacznie zmienione, aby stało się tym, czym jest teraz.
hqxSharp
projektu, ale cholera, jest powolna (co ostrzega). Potrzebuję czegoś, co może utrzymać przyzwoitą liczbę klatek na sekundę.Odpowiedzi:
Możesz zmniejszyć liczbę instrukcji, używając operacji wektorowych: np. Zamiast
Możesz pisać
Operatory w HLSL można stosować do wektorów, nawet logicznych, takich jak
&&
dwiebool3
wartości. Operatorzy ci wykonają operację komponentowo.Kod modułu cieniującego
Kino
Oryginalny obraz przez Redshrike został zmniejszony przez współczynnik 4.
źródło
ir_lv1 = ((e != f) && (e != h));
ir_lv2_left = ((e != g) && (d != g));
ir_lv2_up = ((e != c) && (b != c));
Są to dobre optymalizacje, które przegapiłem, które znalazłeś, nie potrzebowałem ich do mojego problemu, ponieważ byłem w stanie zmniejszyć liczbę instrukcji dzięki innym optymalizacjom.Mam to działa. Nie używa filtra hqx, używa filtra xBR (który preferuję). Dla mnie to nie jest problem. Jeśli potrzebujesz filtra hqx, musisz przekonwertować pliki .cg na odpowiedni odpowiednik XNA.
Ze względów kompletności i wyszukiwania będę edytować pytanie, aby było bardziej zwięzłe, a następnie opublikuję wszystkie istotne informacje, aby odpowiedzieć na pytanie tutaj.
Krok 1: Konfiguracja kodu gry
Najpierw najprawdopodobniej będziesz chciał ustawić cel renderowania, w którym narysujesz grę w skali 1: 1, a następnie wyrenderujesz filtr.
Krok 2: Plik efektów
Poniżej znajduje się plik efektów zgodny z XNA do wykonania filtru xBR.
Wyniki
Tekstura, której użyłem do renderowania 240 x 160:
Dane wyjściowe z uruchomienia gry:
Źródła
Plik .cg że przekształcony XNA kompatybilnym pochodzi tutaj . Więc kredyty należą się do nich za napisanie tego.
źródło