Что такое формат файла FX?
Файлы .fx связаны с библиотекой Direct3D, входящей в состав пакета Microsoft DirectX. Они написаны на HLSL (High-Level Shading Language) - C-подобном языке программирования GPU, разработанном Microsoft для описания того, как должны визуализироваться 3D-эффекты.
Файл .fx обычно делится на три раздела:
- раздел переменных - глобальные объявления: константные буферы (
cbuffer), текстуры, состояния сэмплеров и структуры ввода/вывода шейдеров; - раздел функций - функции HLSL, реализующие логику затенения, такую как преобразования вершин, расчеты освещения и выборка текстур;
- раздел техник - определяет, как используются функции, группируя их в именованные блоки
techniqueиpass, которые привязывают вершинные и пиксельные шейдеры к состоянию конвейера рендеринга.
Файлы .fx содержат информацию, описывающую внешний вид конкретного 3D-эффекта: текстуры, затенение, настройки освещения и конфигурации состояния рендеринга. Они не хранят 3D-модели; геометрия хранится в отдельных файлах, таких как .x (формат мешей DirectX).
Представленный в DirectX 9.0 в 2002 году как часть вспомогательной библиотеки D3DX, фреймворк эффектов с тех пор считается устаревшим. Современные рабочие процессы DirectX 11/12 компилируют HLSL индивидуально в бинарный байт-код (.cso) с помощью fxc.exe или dxc. Тем не менее, файлы .fx по-прежнему широко используются в ресурсах старых игр, сообществах моддинга и в рабочем процессе DirectX Shader Material в Autodesk 3ds Max. В состав DirectX SDK входил инструмент просмотра эффектов; сегодня предпочтительнее использовать инструменты HLSL в Visual Studio.
Безопасность и защита
РИСК: LOWФайл .fx является текстовым и не исполняется операционной системой - он не может запускаться сам по себе или содержать вредоносное ПО. Однако загрузка ненадежного .fx в игровой движок или 3D-инструмент заставляет драйвер GPU компилировать его; патологически сконструированный шейдер может (теоретически) вызвать сбой драйвера или зависание на уязвимых старых драйверах. На практике риск незначителен для типичного использования.
Детали формата
в двух словах- Файл онлайн-руководства FastLynx - Устаревший файл справки/руководства от FastLynx (приложение для передачи файлов 1990-х годов); не связан с шейдерами.
- Ресурс расширения оболочки ReactOS - Внутренний файл ресурсов, используемый операционной системой ReactOS; не предназначен для конечных пользователей.
- Файл морф-анимации Cal3D - Данные анимации морфинга, используемые библиотекой анимации 3D-персонажей Cal3D для игровых движков с открытым исходным кодом.
Программы, открывающие файлы FX
Технические подробности
глубокая спецификация| Кодировка | Текст, ASCII или UTF-8 |
| Контейнер | Простой текст |
| Типичный размер | 1 КБ - 500 КБ (сложные библиотеки эффектов с множеством техник могут быть больше) |
| Структура | Глобальные объявления (cbuffers, текстуры, сэмплеры), затем определения функций HLSL, затем блоки техник/проходов, связывающие вершинные и пиксельные шейдеры |
| Поддержка Shader Model | SM1.1-SM5.1 (от DirectX 9 до DirectX 12); объявляется через проход VertexShaderVersion/PixelShaderVersion или прагму цели HLSLcc |
| Связанная ОС | Windows (Direct3D является эксклюзивом для Windows) |
| Компиляция | Исходный код HLSL компилируется в байт-код DXBC с помощью fxc.exe (устаревший метод) или в DXIL с помощью dxc (современный процесс DirectX 12) |
| Статус | Фреймворк эффектов D3DX9/D3DX11 устарел; современный рабочий процесс использует объекты состояния конвейера (PSO) в DirectX 12 |
| Общее использование | Ресурсы старых игр, моддинг игр, DirectX Shader Material в Autodesk 3ds Max, разработка и прототипирование шейдеров |
| Отличие от геометрии | Содержит только логику затенения; 3D-модели хранятся в отдельных файлах, таких как .x (формат мешей DirectX) |
| Выпущен | DirectX 9.0 (2002) with the D3DX Effects framework |
| Последняя версия | DirectX 12 HLSL; legacy D3DX9/D3DX11 effect framework deprecated; modern HLSL now compiled to DXBC/DXIL bytecode |
| Спецификация | learn.microsoft.com |
Конвертации FX
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах FX.
Часто задаваемые вопросы
Что такое файл .fx?
Как открыть файл .fx?
В чем разница между .fx и .hlsl?
.hlsl содержит автономный код шейдера HLSL; .fx оборачивает HLSL во фреймворк эффектов с блоками техник/проходов и объявлениями состояний рендеринга (D3DX Effects). Синтаксис .fx является устаревшим слоем; .hlsl - современный стандарт.Можно ли редактировать файл .fx для изменения графики в игре?
Почему формат DirectX .fx устарел?
Как скомпилировать файл .fx?
fxc /T fx_5_0 /Fo shader.fxo shader.fx. Полученный файл .fxo (или .cso) является бинарным файлом, который загружается в движок.