Udostępnij za pośrednictwem


Debuger HLSL

Debuger HLSL, który jest jednym z narzędzi Diagnostyki grafiki w Visual Studio, ułatwia poznanie sposobu, w jaki działa kod modułu cieniującego HLSL z danymi graficznymi zarejestrowanymi podczas sesji przechwytywania w obszarze Diagnostyki grafiki.

To jest debuger języka HLSL:

Debugowanie przy użyciu HLSL Obejrzyj i okna stosu wywołań.

Opis debugera HLSL

Debuger HLSL ułatwia lepsze poznanie problemów, które występują w kodzie modułu cieniującego.Debugowanie kodu języka HLSL w programie Visual Studio jest podobne do debugowania kodu napisanego w innych językach — na przykład C++, C# lub Visual Basic.Można zbadać zawartość zmiennych, ustawić punkty przerwania, wykonywać kod krokowo i przechodzić przez stos wywołań, podobnie jak podczas debugowania innych języków.

Ponieważ jednak GPU osiąga wysoką wydajność przez uruchamianie kodu modułu cieniującego na setkach wątków jednocześnie, debuger HLSL jest przeznaczony do współpracy z innymi narzędziami Diagnostyki grafiki, aby przedstawić wszystkie te informacje w sposób, który pomoże ci je zrozumieć.Diagnostyka grafiki odtwarza przechwycone ramki za pomocą informacji, które zostały zapisane w dzienniku grafiki; debuger HLSL nie monitoruje wykonania przez GPU w czasie rzeczywistym, ponieważ działa na nim kod modułu cieniującego.Ponieważ dziennik grafiki zawiera wystarczająco dużo informacji, aby odtworzyć wszystkie części obiektów wyjściowych, a program Diagnostyka grafiki zapewnia narzędzia, które mogą pomóc zidentyfikować dokładny piksel i zdarzenie, gdzie występuje błąd, debuger języka HLSL musi tylko zasymulować dokładny wątek programu cieniującego, który cię interesuje.Oznacza to, że działanie programu cieniującego może być symulowane w procesorze CPU, gdzie działanie jego wewnętrznych mechanizmów jest w pełni widoczne.Dzięki temu debugger HLSL otrzymuje debugowanie podobne do procesora.

Jednak debuger języka HLSL jest obecnie ograniczony pod następującymi względami:

  • Nie jest możliwe debugowanie aplikacji i jej kodu cieniowania w tym samym czasie.Można jednak używać ich zamiennie.

  • W oknie czujki można dodać zmienne i rejestry, ale wyrażenia nie są obsługiwane.

Niemniej jednak debuger języka HLSL oferuje lepsze, przypominające zachowanie znane z procesorów CPU debugowanie, niż byłoby to możliwe w innym przypadku.

Moduł HLSL edytować i Zastosuj

Debuger moduł HLSL nie obsługuje Edytuj i Kontynuuj w taki sam sposób, który wykonuje debuger procesora CPU, ponieważ model wykonywania GPU nie zezwala na stanu cieniowania, tak aby można cofnąć.Zamiast tego debuger HLSL obsługuje e & dytuj Zastosuj, dzięki czemu można edytować pliki źródłowe HLSL, a następnie wybierz Zastosuj ponownie wygenerować ramkę, aby zobaczyć wprowadzone zmiany.Moduł modyfikacji kodu jest przechowywany w oddzielnym pliku w celu zachowania spójności swój projekt oryginalny plik źródłowy HLSL, ale po zakończeniu zmiany można wybrać skopiować do... do skopiowania zmiany w projekcie.Za pomocą tej funkcji, można szybko przejść na moduł kodu, który zawiera błędy i wyeliminowania odbudowy kosztowne i kroki przechwytywania ze swojej HLSL debugowanie przepływu pracy.

Demontażu HLSL

Debuger cieniowania HLSL daje dostęp do listy HLSL cieniowania zestawu przykładowy kod źródłowy HLSL z prawej strony.

Debugowanie kodu HLSL

Możesz uzyskać dostęp do debugera HLSL z okna Etapy potoku grafiki lub z Historia pikseli grafiki.

Aby uruchomić debuger HLSL z okna Etapy potoku grafiki

  1. W oknie Etapy potoku grafiki, zlokalizuj etap potoku, skojarzony z modułem cieniującym, który chcesz debugować.

  2. Poniżej tytułu etapu potoku wybierz Rozpocznij debugowanie, które pojawia się jako mała zielona strzałka.

    [!UWAGA]

    Ten punkt wejścia do debugera HLSL debuguje tylko pierwszy wątek modułu cieniującego dla odpowiedniego etapu, czyli pierwszy wierzchołek lub piksel, który jest przetwarzany.Można użyć Historii pikseli grafiki, aby uzyskać dostęp do innych wątków z tych etapów modułu cieniującego.

Aby uruchomić debuger HLSL z okna Historia pikseli grafiki

  1. W Historia pikseli grafiki, rozwiń wywołanie rysowania skojarzone z modułem cieniującym, który chcesz debugować.Każde wywołanie rysowania może odpowiadać wielu obiektom pierwotnym.

  2. W szczegółach wywołania rysowania, rozwiń prymityw, którego wynikowy kolor sugeruje błąd w kodzie modułu cieniującego.Jeśli wiele prymitywów sugeruje błąd, wybierz pierwszy prymityw, który go sugeruje, tak aby uniknąć nagromadzenia błędów, które mogą utrudnić diagnozę problemu.

  3. W szczegółach prymitywu określ, czy debugować Program do cieniowania wierzchołków, czy Program do cieniowania pikseli.Debuguj program do cieniowania wierzchołków, gdy istnieje podejrzenie, że program do cieniowania pikseli jest poprawny, ale generuje niepoprawny kolor, ponieważ program do cieniowania wierzchołków przekazuje mu nieprawidłowe stałe.W przeciwnym razie debuguj program do cieniowania pikseli.

    Na prawo od wybranego modułu cieniującego wybierz Rozpocznij debugowanie, które pojawia się jako mała zielona strzałka.

    [!UWAGA]

    Ten punkt wejścia do debugera HLSL debuguje program cieniowania pikseli, który odpowiada wybranemu wywołaniu rysowania, prymitywowi i pikselowi lub wątkom cieniowania wierzchołków, których wyniki są interpolowane przez wywołanie wybranego rysowania, prymitywu i piksela.W przypadku programów do cieniowania wierzchołków można dodatkowo dostosować punkt wejścia do konkretnego przez rozwijanie szczegółów modułu cieniującego wierzchołek.

Zobacz przykłady o sposobach używania debugera HLSL w celu debugowania błędów modułu cieniującego, Przykłady diagnostyki grafiki lub powiązane instruktaże w sekcji Zobacz też.

Zobacz też

Zadania

Wskazówki: brak obiektów spowodowany cieniowaniem wierzchołków

Wskazówki: debugowanie błędów renderowania spowodowanych cieniowaniem

Wskazówki: używanie diagnostyki grafiki do debugowania cieniowania obliczenia