Hva er FX-filformatet?
.fx-filer er assosiert med Direct3D-biblioteket som er inkludert i Microsoft DirectX-pakken. De er skrevet i HLSL (High-Level Shading Language), et C-lignende programmeringsspråk for GPU utviklet av Microsoft for å beskrive hvordan 3D-effekter skal rendres.
En .fx-fil er vanligvis delt inn i tre seksjoner:
- variabelseksjon - globale deklarasjoner: konstantbuffere (
cbuffer), teksturer, sampler-tilstander og shader-input/output-structs - funksjonsseksjon - HLSL-funksjoner som implementerer shading-logikk som vertex-transformasjoner, lysberegninger og tekstursampling
- teknikkseksjon - definerer hvordan funksjonene brukes, og grupperer dem i navngitte
technique- ogpass-blokker som binder vertex- og pixel-shadere til en tilstand i renderings-pipelinen
.fx-filer inneholder informasjon som beskriver hvordan en gitt 3D-effekt skal se ut - teksturer, skyggelegging, lysinnstillinger og konfigurasjoner for rendering-tilstand. De lagrer ikke 3D-modeller; geometri oppbevares i separate filer som .x (DirectX mesh-format).
Introdusert med DirectX 9.0 i 2002 som en del av D3DX-verktøybiblioteket, har effekt-rammeverket siden blitt faset ut (deprecated). Moderne DirectX 11/12-arbeidsflyter kompilerer HLSL individuelt til binær bytecode (.cso) ved hjelp av fxc.exe eller dxc. Likevel forblir .fx-filer mye brukt i eldre spillressurser, spillmodding-miljøer og Autodesk 3ds Max sin arbeidsflyt for DirectX Shader Material. DirectX SDK inkluderte et visningsverktøy for å inspisere effekter; i dag foretrekkes HLSL-verktøyene i Visual Studio.
Sikkerhet og trygghet
RISIKO: LOWEn .fx-fil er ren tekst og ikke kjørbar av operativsystemet - den kan ikke kjøre alene eller inneholde skadevare. Imidlertid vil innlasting av en utrygg .fx i en spillmotor eller et 3D-verktøy føre til at GPU-driveren kompilerer den; en patologisk konstruert shader kan (i teorien) føre til at driveren krasjer eller låser seg på sårbare eldre drivere. I praksis er risikoen ubetydelig for vanlig bruk.
Formatdetaljer
i et nøtteskall- FastLynx Online Guide File - Foreldet hjelpe-/guidefil fra FastLynx (et filoverføringsprogram fra 1990-tallet); ikke relatert til shadere.
- ReactOS Shell Extension Resource - Intern ressursfil brukt av operativsystemet ReactOS; ikke for sluttbrukere.
- Cal3D Morph Animation File - Animasjonsdata for morph-targets brukt av Cal3D-biblioteket for 3D-karakteranimasjon i spillmotorer med åpen kildekode.
Programmer som åpner FX-filer
Tekniske detaljer
dyp spesifikasjon| Koding | Tekst, ASCII eller UTF-8 |
| Beholder | Ren tekst |
| Typisk størrelse | 1 KB - 500 KB (komplekse effektbiblioteker med flere teknikker kan være større) |
| Struktur | Globale deklarasjoner (cbuffers, teksturer, samplere), deretter HLSL-funksjonsdefinisjoner, og til slutt teknikk/pass-blokker som binder vertex- og pixel-shadere |
| Shader Model-støtte | SM1.1-SM5.1 (DirectX 9 til DirectX 12); deklarert via pass VertexShaderVersion/PixelShaderVersion eller HLSLcc target pragma |
| Tilhørende OS | Windows (Direct3D er eksklusivt for Windows) |
| Kompilering | HLSL-kilde kompilert til DXBC-bytecode ved hjelp av fxc.exe (eldre) eller til DXIL ved hjelp av dxc (moderne DirectX 12-arbeidsflyt) |
| Status | D3DX9/D3DX11 effects-rammeverk er faset ut; moderne arbeidsflyt bruker Pipeline State Objects (PSOs) i DirectX 12 |
| Vanlig bruk | Eldre spillressurser, spillmodding, Autodesk 3ds Max DirectX Shader Material, shader-utvikling og prototyping |
| Skilt fra geometri | Inneholder kun shading-logikk; 3D-modeller lagres i separate filer som .x (DirectX mesh-format) |
| Utgitt | DirectX 9.0 (2002) with the D3DX Effects framework |
| Siste versjon | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| Spesifikasjon | learn.microsoft.com |
FX-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om FX-filer.
Ofte stilte spørsmål
Hva er en .fx-fil?
Hvordan åpner jeg en .fx-fil?
Hva er forskjellen mellom .fx og .hlsl?
Kan jeg redigere en .fx-fil for å endre spillgrafikk?
Hvorfor er DirectX .fx faset ut?
Hvordan kompilerer jeg en .fx-fil?
fxc /T fx_5_0 /Fo shader.fxo shader.fx. Den resulterende .fxo (eller .cso) er den binære filen som lastes inn i motoren.