Co to jest format pliku FX?
Pliki .fx są powiązane z biblioteką Direct3D zawartą w pakiecie Microsoft DirectX. Są one napisane w HLSL (High-Level Shading Language), języku programowania GPU podobnym do C, opracowanym przez Microsoft w celu opisania sposobu renderowania efektów 3D.
Plik .fx jest zazwyczaj podzielony na trzy sekcje:
- sekcja zmiennych - deklaracje globalne: bufory stałych (
cbuffer), tekstury, stany samplera oraz struktury wejściowe/wyjściowe shadera - sekcja funkcji - funkcje HLSL implementujące logikę cieniowania, taką jak transformacje wierzchołków, obliczenia oświetlenia i próbkowanie tekstur
- sekcja technik - definiuje sposób użycia funkcji, grupując je w nazwane bloki
techniqueipass, które wiążą shadery wierzchołków i pikseli ze stanem potoku renderowania
Pliki .fx zawierają informacje opisujące, jak dany efekt 3D powinien wyglądać - tekstury, cieniowanie, ustawienia oświetlenia i konfiguracje stanu renderowania. Nie przechowują one modeli 3D; geometria jest trzymana w oddzielnych plikach, takich jak .x (format siatki DirectX).
Wprowadzony wraz z DirectX 9.0 w 2002 roku jako część biblioteki narzędziowej D3DX, framework efektów został od tego czasu wycofany. Nowoczesne procesy robocze DirectX 11/12 kompilują HLSL indywidualnie do binarnego kodu bajtowego (.cso) za pomocą fxc.exe lub dxc. Jednak pliki .fx pozostają szeroko stosowane w starszych zasobach gier, społecznościach moderskich oraz w procesie pracy z materiałami DirectX Shader w Autodesk 3ds Max. DirectX SDK zawierało narzędzie do przeglądania efektów; obecnie preferowane są narzędzia HLSL w Visual Studio.
Bezpieczeństwo
RYZYKO: LOWPlik .fx jest zwykłym tekstem i nie jest wykonywalny przez system operacyjny - nie może działać samodzielnie ani przenosić złośliwego oprogramowania. Jednak załadowanie niezaufanego pliku .fx do silnika gry lub narzędzia 3D powoduje, że sterownik GPU go kompiluje; patologicznie skonstruowany shader mógłby (teoretycznie) spowodować awarię sterownika lub zawieszenie systemu na podatnych, starszych sterownikach. W praktyce ryzyko jest znikome przy typowym użytkowaniu.
Szczegóły formatu
w pigułce- FastLynx Online Guide File - Przestarzały plik pomocy/przewodnika z FastLynx (aplikacja do przesyłania plików z lat 90.); niezwiązany z shaderami.
- ReactOS Shell Extension Resource - Wewnętrzny plik zasobów używany przez system operacyjny ReactOS; nieprzeznaczony dla użytkowników końcowych.
- Cal3D Morph Animation File - Dane animacji morph-target używane przez bibliotekę animacji postaci 3D Cal3D dla otwartoźródłowych silników gier.
Programy otwierające pliki FX
Szczegóły techniczne
specyfikacja| Kodowanie | Tekstowe, ASCII lub UTF-8 |
| Kontener | Zwykły tekst |
| Typowy rozmiar | 1 KB - 500 KB (złożone biblioteki efektów z wieloma technikami mogą być większe) |
| Struktura | Deklaracje globalne (cbuffers, tekstury, samplery), następnie definicje funkcji HLSL, a na końcu bloki technik/przejść wiążące shadery wierzchołków i pikseli |
| Obsługa Shader Model | SM1.1-SM5.1 (DirectX 9 do DirectX 12); deklarowane przez przejście VertexShaderVersion/PixelShaderVersion lub pragma docelową HLSLcc |
| Powiązany system operacyjny | Windows (Direct3D jest wyłączny dla systemu Windows) |
| Kompilacja | Źródło HLSL kompilowane do kodu bajtowego DXBC za pomocą fxc.exe (starsze) lub do DXIL za pomocą dxc (nowoczesny proces DirectX 12) |
| Status | Framework efektów D3DX9/D3DX11 wycofany; nowoczesny proces używa obiektów stanu potoku (PSO) w DirectX 12 |
| Typowe zastosowanie | Starsze zasoby gier, modowanie gier, Autodesk 3ds Max DirectX Shader Material, rozwój i prototypowanie shaderów |
| Różnica względem geometrii | Zawiera wyłącznie logikę cieniowania; modele 3D są przechowywane w oddzielnych plikach, takich jak .x (format siatki DirectX) |
| Wydano | DirectX 9.0 (2002) with the D3DX Effects framework |
| Najnowsza wersja | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| Specyfikacja | learn.microsoft.com |
Konwersje FX
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki FX.
Najczęściej zadawane pytania
Co to jest plik .fx?
Jak otworzyć plik .fx?
Jaka jest różnica między .fx a .hlsl?
.hlsl zawiera samodzielny kod shadera HLSL; .fx opakowuje HLSL w framework efektów z blokami technik/przejść i deklaracjami stanu renderowania (D3DX Effects). Składnia .fx to warstwa przestarzała; .hlsl jest nowoczesną konwencją.Czy mogę edytować plik .fx, aby zmodyfikować grafikę w grze?
Dlaczego DirectX .fx jest wycofany?
Jak skompilować plik .fx?
fxc /T fx_5_0 /Fo shader.fxo shader.fx. Wynikowy .fxo (lub .cso) to plik binarny, który ładuje się do silnika.