Wat is het FX-bestandsformaat?
.fx-bestanden zijn gekoppeld aan de Direct3D-bibliotheek die deel uitmaakt van het Microsoft DirectX-pakket. Ze zijn geschreven in HLSL (High-Level Shading Language), een op C lijkende GPU-programmeertaal ontwikkeld door Microsoft om te beschrijven hoe 3D-effecten moeten worden gerenderd.
Een .fx-bestand is doorgaans verdeeld in drie secties:
- variabelensectie - globale declaraties: constante buffers (
cbuffer), texturen, sampler-states en shader input/output-structs - functiesectie - HLSL-functies die shading-logica implementeren, zoals vertex-transformaties, belichtingsberekeningen en textuursampling
- techniekensectie - definieert hoe functies worden gebruikt door ze te groeperen in benoemde
technique- enpass-blokken die vertex- en pixel-shaders binden aan een rendering pipeline-state
.fx-bestanden bevatten informatie die beschrijft hoe een bepaald 3D-effect eruit moet zien - texturen, schaduwen, belichtingsinstellingen en configuraties van de render-state. Ze slaan geen 3D-modellen op; geometrie wordt bewaard in afzonderlijke bestanden zoals .x (DirectX mesh-formaat).
Geïntroduceerd met DirectX 9.0 in 2002 als onderdeel van de D3DX-hulpprogrammabibliotheek, is het effects-framework sindsdien verouderd. Moderne DirectX 11/12-workflows compileren HLSL individueel naar binaire bytecode (.cso) met behulp van fxc.exe of dxc. .fx-bestanden blijven echter veelgebruid in legacy game-assets, game-modding-gemeenschappen en de DirectX Shader Material-workflow van Autodesk 3ds Max. De DirectX SDK bevatte een viewer-tool voor het inspecteren van effecten; tegenwoordig heeft de HLSL-tooling van Visual Studio de voorkeur.
Beveiliging & veiligheid
RISICO: LOWEen .fx-bestand is platte tekst en niet uitvoerbaar door het besturingssysteem - het kan niet zelfstandig draaien of malware bevatten. Het laden van een niet-vertrouwd .fx-bestand in een game-engine of 3D-tool zorgt er echter voor dat de GPU-driver het compileert; een kwaadwillig geconstrueerde shader zou (in theorie) een driver-crash of vastloper kunnen veroorzaken op kwetsbare oudere drivers. In de praktijk is het risico verwaarloosbaar bij normaal gebruik.
Formaatdetails
in een notendop- FastLynx Online Guide File - Verouderd help/gidsbestand van FastLynx (een applicatie voor bestandsoverdracht uit de jaren 90); niet gerelateerd aan shaders.
- ReactOS Shell Extension Resource - Intern bronbestand gebruikt door het ReactOS-besturingssysteem; niet voor eindgebruikers.
- Cal3D Morph Animation File - Morph-target animatiegegevens gebruikt door de Cal3D 3D-personage-animatiebibliotheek voor open-source game-engines.
Programma's die FX-bestanden openen
Technische details
diepe specificaties| Codering | Tekst, ASCII of UTF-8 |
| Container | Platte tekst |
| Typische grootte | 1 KB - 500 KB (complexe effectbibliotheken met meerdere technieken kunnen groter zijn) |
| Structuur | Globale declaraties (cbuffers, texturen, samplers), vervolgens HLSL-functiedefinities, daarna techniek/pass-blokken die vertex- en pixel-shaders binden |
| Shader Model-ondersteuning | SM1.1-SM5.1 (DirectX 9 tot en met DirectX 12); gedeclareerd via pass VertexShaderVersion/PixelShaderVersion of HLSLcc target pragma |
| Bijbehorend OS | Windows (Direct3D is exclusief voor Windows) |
| Compilatie | HLSL-broncode gecompileerd naar DXBC-bytecode met fxc.exe (legacy) of naar DXIL met dxc (moderne DirectX 12-workflow) |
| Verouderd | D3DX9/D3DX11 effects-framework verouderd; moderne workflow gebruikt Pipeline State Objects (PSO's) in DirectX 12 |
| Veelvoorkomend gebruik | Legacy game-assets, game-modding, Autodesk 3ds Max DirectX Shader Material, shader-ontwikkeling en prototyping |
| Onderscheid van geometrie | Bevat alleen shading-logica; 3D-modellen worden opgeslagen in afzonderlijke bestanden zoals .x (DirectX mesh-formaat) |
| Uitgebracht | DirectX 9.0 (2002) with the D3DX Effects framework |
| Laatste versie | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| Specificatie | learn.microsoft.com |
FX conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over FX-bestanden.
Veelgestelde vragen
Wat is een .fx-bestand?
Hoe open ik een .fx-bestand?
Wat is het verschil tussen .fx en .hlsl?
Kan ik een .fx-bestand bewerken om game-graphics aan te passen?
Waarom is DirectX .fx verouderd?
Hoe compileer ik een .fx-bestand?
fxc /T fx_5_0 /Fo shader.fxo shader.fx. Het resulterende .fxo (of .cso) is het binaire bestand dat in de engine wordt geladen.