Vad är filformatet FX?
.fx-filer är associerade med Direct3D-biblioteket som ingår i Microsoft DirectX-paketet. De är skrivna i HLSL (High-Level Shading Language), ett C-liknande programmeringsspråk för GPU:er utvecklat av Microsoft för att beskriva hur 3D-effekter ska renderas.
En .fx-fil är vanligtvis uppdelad i tre sektioner:
- variabelsektion - globala deklarationer: konstantbuffertar (
cbuffer), texturer, samplertillstånd och shader-input/output-structs - funktionssektion - HLSL-funktioner som implementerar skuggningslogik såsom vertex-transformationer, ljusberäkningar och textursampling
- tekniksektion - definierar hur funktioner används genom att gruppera dem i namngivna
technique- ochpass-block som binder vertex- och pixel-shaders till ett tillstånd i renderingspipelinen
.fx-filer innehåller information som beskriver hur en viss 3D-effekt ska se ut - texturer, skuggning, ljusinställningar och konfigurationer för renderingslägen. De lagrar inte 3D-modeller; geometri sparas i separata filer såsom .x (DirectX mesh-format).
Introducerat med DirectX 9.0 år 2002 som en del av D3DX-verktygsbiblioteket, har effektsystemet sedan dess fasats ut. Moderna DirectX 11/12-arbetsflöden kompilerar HLSL individuellt till binär bytecode (.cso) med hjälp av fxc.exe eller dxc. .fx-filer används dock fortfarande i stor utsträckning i äldre speltillgångar, modding-communities och i arbetsflödet för DirectX Shader Material i Autodesk 3ds Max. DirectX SDK innehöll ett visningsverktyg för att inspektera effekter; idag föredras HLSL-verktygen i Visual Studio.
Säkerhet & trygghet
RISK: LOWEn .fx-fil är klartext och inte körbar av operativsystemet - den kan inte köras självständigt eller bära på skadlig kod. Men om en opålitlig .fx laddas i en spelmotor eller ett 3D-verktyg tvingas GPU-drivrutinen att kompilera den; en patologiskt konstruerad shader skulle (i teorin) kunna orsaka en drivrutinskrasch eller hängning på sårbara äldre drivrutiner. I praktiken är risken försumbar vid normal användning.
Formatdetaljer
i ett nötskal- FastLynx Online Guide File - Föråldrad hjälp/guide-fil från FastLynx (en filöverföringsapplikation från 1990-talet); ej relaterad till shaders.
- ReactOS Shell Extension Resource - Intern resursfil som används av operativsystemet ReactOS; inte avsedd för slutanvändare.
- Cal3D Morph Animation File - Morph-target animationsdata som används av Cal3D-biblioteket för 3D-karaktärsanimering i spelmotorer med öppen källkod.
Program som öppnar FX-filer
Tekniska detaljer
djup specifikation| Kodning | Text, ASCII eller UTF-8 |
| Container | Klartext |
| Typisk storlek | 1 KB - 500 KB (komplexa effektbibliotek med flera tekniker kan vara större) |
| Struktur | Globala deklarationer (cbuffers, texturer, samplers), följt av HLSL-funktionsdefinitioner, och sedan teknik/pass-block som binder vertex- och pixel-shaders |
| Shader Model-stöd | SM1.1-SM5.1 (DirectX 9 till DirectX 12); deklareras via pass VertexShaderVersion/PixelShaderVersion eller HLSLcc target pragma |
| Associerat OS | Windows (Direct3D är exklusivt för Windows) |
| Kompilering | HLSL-källkod kompilerad till DXBC-bytecode med fxc.exe (äldre) eller till DXIL med dxc (modernt DirectX 12-arbetsflöde) |
| Föråldrad | D3DX9/D3DX11-effektramverket är föråldrat; moderna arbetsflöden använder Pipeline State Objects (PSOs) i DirectX 12 |
| Vanlig användning | Äldre speltillgångar, spelmodding, Autodesk 3ds Max DirectX Shader Material, shader-utveckling och prototypskapande |
| Skild från geometri | Innehåller endast skuggningslogik; 3D-modeller lagras i separata filer såsom .x (DirectX mesh-format) |
| Släppt | DirectX 9.0 (2002) with the D3DX Effects framework |
| Senaste version | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| Specifikation | learn.microsoft.com |
FX-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om FX-filer.
Vanliga frågor
Vad är en .fx-fil?
Hur öppnar jag en .fx-fil?
Vad är skillnaden mellan .fx och .hlsl?
Kan jag redigera en .fx-fil för att modifiera spelgrafik?
Varför är DirectX .fx föråldrat?
Hur kompilerar jag en .fx-fil?
fxc /T fx_5_0 /Fo shader.fxo shader.fx. Den resulterande .fxo (eller .cso) är den binärfil som laddas in i motorn.