Hvad er FX-filformatet?
.fx-filer er knyttet til Direct3D-biblioteket, der er inkluderet i Microsoft DirectX-pakken. De er skrevet i HLSL (High-Level Shading Language), et C-lignende GPU-programmeringssprog udviklet af Microsoft til at beskrive, hvordan 3D-effekter skal renderes.
En .fx-fil er typisk opdelt i tre sektioner:
- variabelsektion - globale erklæringer: konstante buffere (
cbuffer), teksturer, sampler-tilstande og shader-input/output-structs - funktionssektion - HLSL-funktioner, der implementerer shading-logik såsom vertex-transformationer, lysberegninger og tekstursampling
- tekniksektion - definerer hvordan funktioner bruges ved at gruppere dem i navngivne
technique- ogpass-blokke, der binder vertex- og pixel-shadere til en rendering-pipeline-tilstand
.fx-filer indeholder information, der beskriver, hvordan en given 3D-effekt skal se ud - teksturer, skyggelægning, lysindstillinger og konfigurationer af render-tilstande. De gemmer ikke 3D-modeller; geometri opbevares i separate filer såsom .x (DirectX mesh-format).
Introduceret med DirectX 9.0 i 2002 som en del af D3DX-værktøjsbiblioteket, er effects-frameworket siden blevet forældet. Moderne DirectX 11/12-workflows kompilere HLSL individuelt til binær bytecode (.cso) ved hjælp af fxc.exe eller dxc. Dog forbliver .fx-filer udbredte i ældre spilaktiver, spil-modding-miljøer og Autodesk 3ds Max's DirectX Shader Material-workflow. DirectX SDK indeholdt et visningsværktøj til inspektion af effekter; i dag foretrækkes Visual Studios HLSL-værktøjer.
Sikkerhed og tryghed
RISIKO: LOWEn .fx-fil er almindelig tekst og kan ikke eksekveres af operativsystemet - den kan ikke køre af sig selv eller indeholde malware. Dog vil indlæsning af en upålidelig .fx i en spilmotor eller et 3D-værktøj få GPU-driveren til at kompilere den; en patologisk konstrueret shader kunne (i teorien) forårsage et driver-nedbrud eller frysning på sårbare ældre drivere. I praksis er risikoen ubetydelig ved typisk brug.
Formatdetaljer
kort fortalt- FastLynx Online Guide File - Forældet hjælp/guide-fil fra FastLynx (en filoverførsels-applikation fra 1990'erne); ikke relateret til shadere.
- ReactOS Shell Extension Resource - Intern ressourcefil brugt af ReactOS-operativsystemet; ikke til slutbrugere.
- Cal3D Morph Animation File - Morph-target animationsdata brugt af Cal3D 3D-karakteranimationsbiblioteket til open-source spilmotorer.
Programmer der åbner FX-filer
Tekniske detaljer
dyb specifikation| Kodning | Tekst, ASCII eller UTF-8 |
| Container | Almindelig tekst |
| Typisk størrelse | 1 KB - 500 KB (komplekse effektbiblioteker med flere teknikker kan være større) |
| Struktur | Globale erklæringer (cbuffers, teksturer, samplers), derefter HLSL-funktionsdefinitioner, og til sidst teknik/pass-blokke, der binder vertex- og pixel-shadere |
| Shader Model-understøttelse | SM1.1-SM5.1 (DirectX 9 til DirectX 12); erklæret via pass VertexShaderVersion/PixelShaderVersion eller HLSLcc target pragma |
| Tilknyttet OS | Windows (Direct3D er eksklusivt til Windows) |
| Kompilering | HLSL-kilde kompileret til DXBC-bytecode ved hjælp af fxc.exe (ældre) eller til DXIL ved hjælp af dxc (moderne DirectX 12-workflow) |
| Forældet | D3DX9/D3DX11 effects-framework er forældet; moderne workflow bruger Pipeline State Objects (PSOs) i DirectX 12 |
| Almindelig brug | Ældre spilaktiver, spil-modding, Autodesk 3ds Max DirectX Shader Material, shader-udvikling og prototyping |
| Adskilt fra geometri | Indeholder kun shading-logik; 3D-modeller gemmes i separate filer såsom .x (DirectX mesh-format) |
| Udgivet | DirectX 9.0 (2002) with the D3DX Effects framework |
| Seneste version | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| Specifikation | learn.microsoft.com |
FX-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om FX-filer.
Ofte stillede spørgsmål
Hvad er en .fx-fil?
Hvordan åbner jeg en .fx-fil?
Hvad er forskellen på .fx og .hlsl?
Kan jeg redigere en .fx-fil for at ændre spilgrafik?
Hvorfor er DirectX .fx forældet?
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 fil, der indlæses i motoren.