Dlaczego konwertować PSSL na HLSL?
Studia wydające ten sam silnik renderujący na PS4 i PC zachowują jeden korpus shadera i tłumaczą go na .HLSL dla Direct3D. PSSL i HLSL współdzielą ten sam model w stylu DX11 z oddzielnymi obiektami Texture2D i SamplerState, semantyką i powiązaniami rejestrów, więc podkładka #define pokrywa większość różnic. Tylko funkcje wewnętrzne specyficzne dla konsoli wymagają prawdziwego przepisania.
Jak przekonwertować PSSL na HLSL
Visual Studio Code z podkładką makr FREE
Otwórz plik .pssl w VS Code i dołącz wspólny nagłówek z #define, który mapuje słowa kluczowe PSSL na ich formy HLSL, a następnie ręcznie popraw pozostałe deklaracje.
Ręczna edycja w dowolnym edytorze tekstu FREE
Zmień nazwy słów kluczowych samplerów/tekstur i semantyki PSSL na odpowiedniki HLSL oraz dostosuj powiązania register(t#/s#/b#), aby plik kompilował się za pomocą fxc lub dxc.
Walidacja za pomocą dxc OPEN-SOURCE
Skompiluj przeniesiony plik za pomocą kompilatora Microsoftu dxc shader.hlsl -T ps_6_0, aby potwierdzić poprawność HLSL i wyłapać pozostałości składni tylko dla PSSL.
O tych formatach
Plik .pssl zawiera kod shadera napisany w PlayStation Shader Language, języku programowania GPU używanym do tworzenia gier na konsole PlayStation 4 i PlayStation 5. Tekstowe pliki .pssl to…
Otwórz szczegóły .PSSL →Plik .HLSL jest powiązany z High Level Shader Language source code, który jest plikiem typu 3d image.
Otwórz szczegóły .HLSL →Jakość i na co uważać
- Udokumentowane podobieństwo oznacza, że większość różnic jest kosmetyczna, ale wciąż nie istnieje gotowy parser PSSL.
- Funkcje wewnętrzne GPU PS4 oraz rozszerzenia wave/thread nie mają odpowiedników w HLSL i muszą zostać zaimplementowane od nowa lub zastąpione zaślepkami.
- Indeksy rejestrów zasobów czasami wymagają remapowania, aby pasowały do oczekiwań sygnatury głównej D3D.
Najczęściej zadawane pytania
Jak bardzo podobne są PSSL i HLSL?
Czy sam nagłówek makr wystarczy?
Którego kompilatora powinienem użyć do testów?
dxc dla celów Shader Model 6 lub starszego fxc dla shaderów SM5.