For the architecture overview, see ARCHITECTURE.md.
Files with .isf extension are recognized automatically. For .fs and .vs files (the standard ISF extensions), you need to manually associate them since they conflict with F# and other languages. Add this to your workspace or user settings:
"files.associations": {
"*.fs": "isf",
"*.vs": "isf"
}You can also scope this to specific directories (e.g. "shaders/*.fs": "isf"), or select "ISF" from the language picker in the bottom-right corner of the editor.
- Autocompletion for all ISF fields (
INPUTS,PASSES,IMPORTED,CATEGORIES,ISFVSN, etc.) - Path autocompletion for
IMPORTEDimages — suggests local files, filtered to image extensions - Hover documentation on all fields and values
- Validation with helpful error messages:
- Unknown fields, wrong value types, mismatched
LABELS/VALUESlengths - Non-standard
ISFVSNvalues
- Unknown fields, wrong value types, mismatched
- Color picker for color-type inputs
- Smart paste — when pasting a JSON key that already exists (e.g.
INPUTS,CATEGORIES), arrays are concatenated and objects are merged instead of replaced - Formatting
- Syntax highlighting
Delegates to any installed GLSL extension:
- Autocompletion for all ISF built-ins (
RENDERSIZE,TIME,IMG_THIS_PIXEL, …) and your ownINPUTS,IMPORTEDimages andPASSESbuffers - Hover on built-ins shows their type and description
- Error diagnostics from the GLSL language server, remapped to the correct line in your ISF file
- Formatting of the GLSL body
The extension reads ISFVSN and tailors the preamble accordingly:
| Built-in | v1 | v2 |
|---|---|---|
RENDERSIZE, TIME, PASSINDEX |
✓ | ✓ |
vv_FragNormCoord |
✓ | — |
isf_FragNormCoord |
— | ✓ |
TIMEDELTA, FRAMEINDEX, DATE |
— | ✓ |
IMG_SIZE |
— | ✓ |
Using a v2 built-in in a v1 shader (or vice versa) produces a warning with a clear fix suggestion.
Paired .vs files (same name as the .fs) get the same INPUTS in scope plus isf_vertShaderInit() / vv_vertShaderInit().
For GLSL autocompletion, hover, and error diagnostics, install a GLSL extension. The extension will prompt you if none is detected.
isf.importedImageExtensions— Additional file extensions to show when autocompletingIMPORTEDimage paths (e.g.[".ktx", ".dds"]). The built-in list already covers common formats (PNG, JPG, EXR, etc.).
- Shadow files (
.isf-shadows/) are created at the workspace root to enable GLSL analysis. This directory is hidden from the file explorer and has a.gitignorecreated automatically.