Simple command line utilities for extracting data from Starfield game files.
Permissions and credits
Credits and distribution permission
Other user's assetsAll the assets in this file belong to the author, or are from free-to-use modder's resources
Upload permissionYou can upload this file to other sites but you must credit me as the creator of the file
Modification permissionYou are allowed to modify my files and release bug fixes or improve on the features so long as you credit me as the original creator
Conversion permissionYou can convert this file to work with other games as long as you credit me as the creator of the file
Asset use permissionYou are allowed to use the assets in this file without permission as long as you credit me
Asset use permission in mods/files that are being soldYou are allowed to use the assets in this file in mods/files that are being sold, for money, on Steam Workshop or other platforms
Asset use permission in mods/files that earn donation pointsYou are allowed to earn Donation Points for your mods if they use my assets
Author notes
This author has not provided any additional notes regarding file permissions
File credits
This author has not credited anyone else in this file
Donation Points system
This mod is not opted-in to receive Donation Points
baunpack: added --test option, and support for the new BA2 versions introduced by the Fallout 4 next gen update.
mat_info: fixed bug in parsing the -cdb option, and -all now finds the correct path to all materials (as of patch 1.11.36.0).
Loading .mat files from archives is currently disabled for materials that also exist in CDB format. Base game materials can only be replaced with loose .mat files.
Version 1.5.5
nif_info now supports setting most of the rendering parameters in -render mode on the command line.
Implemented loading Starfield materials in JSON (.mat) format (experimental).
cubeview: added support for decoding textures in R10G10B10A2_UNORM and R8G8_SNORM formats.
Updated for Starfield version 1.10.30.
Rendering now decodes textures to 16-bit floating point format.
Windows binaries are built in UCRT64 environment instead of MINGW64. Note that on Windows versions older than 10, the Universal C Runtime may need to be installed.
Version 1.5.4
Updated for Starfield version 1.9.51.
cubeview: new controls for tone mapping and saving screenshots in floating point format. The internal texture format has been changed to half precision floats in linear color space.
baunpack and other tools that read archives now support Morrowind BSA files.
Optimizations in the -cube and -cube_filter modes of bcdecode, and improved filtering at very low resolutions.
Version 1.5.3
Fixed terrain texture seams in render and wrldview.
Fixed threading bug in render and wrldview that sometimes resulted in incorrect output (this issue did not affect the -rq 0x0400 mode).
cubeview now opens in file browsing mode if there are more than 10 files to be displayed.
Version 1.5.2
bcdecode -cube: the output format can be set to R9G9B9E5_SHAREDEXP instead of the default R16G16B16A16_FLOAT, and the rotation of the image has been changed so that the center of the HDRI will be +Y (north) in the output file.
bcdecode -cube_filter: added support for specifying a custom roughness table, the defaults have been changed as well (see the documentation). Use roughness = 1.0 to simulate diffuse lighting. It is now also possible to upsample the input file to a higher resolution, the missing samples are calculated with bilinear interpolation.
baunpack: DDS files extracted from texture .ba2 archives now have the header flags correctly set for cube maps.
In the software renderer used by various tools, texture interpolation has been changed to be more consistent with how OpenGL handles texture coordinates, and it is now also seamless at cube map edges.
Version 1.5
bcdecode: added support for converting Radiance HDR format images to DDS cube maps, and for pre-filtering (the output is compatible with Starfield rendering in NifSkope, nif_info, etc.). See the documentation for details. HDR conversion has been tested with images from Poly Haven.
mat_info: fixed a number of compatibility issues in .mat files exported in JSON format.
nif_info: editor markers are now hidden by default in view mode, and can be enabled with the G key.
nif_info, mat_info: all backgrounds have been made transparent on screenshots.
wrldview: camera position is no longer changed when switching to side views.
Optimizations and improvements to Starfield cube map pre-filtering.
Fixed bugs in BC6H and BC7 decoding, added support for textures in R9G9B9E5_SHAREDEXP format.
Version 1.4.1
In all tools that render 3D models, cube maps are now pre-filtered for more realistic reflections.
nif_info, mat_info: pressing P copies the full path to the model or material to the clipboard.
Fixed opacity textures not being used when rendering effect materials.
Optimizations to .cdb to .mat conversion.
Version 1.4
esmdump, esmview, mat_info: reflection data is now dumped in JSON format.
esmview: reflection data is displayed with syntax highlighting.
mat_info: when using the -all option, file name arguments are used as filters, similarly to nif_info. Paths that contain any of the specified patterns are processed, but it is also possible to exclude files with a -x: prefix (e.g. -x:/lod/).
mat_info: in view mode, the 'M' key displays the data of the currently viewed material in JSON format, and copies it to the clipboard.
esmview: added support for BFCB fields.
Optimizations and fixes to .mat file extraction.
nif_info, mat_info: reduced the console font size in view mode, allowing 56 rows to be shown instead of 48.
Version 1.3.1
mat_info: new option (-all) to process all materials in the database without needing to use a list file. Note that some material paths are still unknown, materials under those (currently 157 files out of 48,004 total) are moved to "materials/unknown/", with directory names that have been generated to have correct CRC32 hashes.
mat_info: the list of material paths can be printed with the -dump_list option. This is useful in combination with -all to produce a complete material list.
Minor optimization in the -json mode of mat_info.
Version 1.3
mat_info: added support for extracting materials in JSON format (loose .mat files). This mode can be enabled with the -json command line argument. A single material is written to standard output or to the file specified with -o, while multiple materials are automatically created as separate files with full path under materials/ in the current directory. Note that this feature is still experimental, while it has been verified to produce valid JSON from all known material paths, the compatibility of the generated .mat files with the game needs to be tested.
esmview: the downsample parameter of the -w option can now be increased to 2 to downsample from 4x resolution.
Fixed error in the archive filesystem code on very short (less than 12 bytes long) loose files.
Version 1.2
esmdump, esmview and mat_info can print class definitions from reflection data. In the case of esmdump, this is enabled in verbose mode (-v), in esmview it can be toggled with the T command (the default is off), and mat_info always prints classes when run with the -dump_db option.
mat_info: added support for BSMaterial::GlobalLayerDataComponent and BSMaterial::MipBiasSetting.
esmview: decimal form IDs can be specified with a # prefix, and are also accepted with quotes in #"N" format. This is useful for opening records referenced in reflection data.
Fixed reading Starfield 1.8.86 material database file.
MOLM and XLMS fields are now printed by esmdump and esmview.
Fixed issues related to reflection class definitions with 0 fields.
Fixed truncated display of long reflection data in esmview.
ce2utils includes the following tools:
baunpack - list the contents of, or extract from .BA2 or .BSA archives.
bcdecode - convert BC1 to BC5 block compressed DDS textures to uncompressed RGBA image data in raw or DDS format. BC6H and BC7 decompression are also supported, using code from detex. bcdecode can also be used to convert from .hdr to .dds, and to pre-filter cube maps for use in PBR.
btddump - extract terrain data from Starfield .BTD files to raw height map or land textures.
cubeview - view cube maps or other textures from archive files.
esmdump - list records from .ESM files in text or TSV format.
esmview - interactive version of esmdump, also includes a NIF viewer for objects with an associated model (MODL).
findwater - create a height map of water bodies, optionally using .NIF meshes.
landtxt - create an RGB land texture from the output of btddump (formats 2 and 8), or directly from terrain data in ESM/BTD file(s), using a set of DDS texture files.
markers - find references to a set of form IDs defined in a text file, and mark their locations on an RGBA format map, optionally using DDS icon files.
mat_info - list data from materials in Starfield component database. It can also extract .mat files in JSON format.
nif_info - list data from a set of .NIF files in .BA2 or .BSA archives, convert to .OBJ format, or render the model to a DDS file, or display it.
render - render a Starfield world, cell, or object from ESM file(s), terrain data, and archives. Currently does not support material swaps.
terrain - older and simpler program to render terrain and water only to an RGB image, using files created by btddump, or findwater. Includes 2D and isometric mode.
Running any of the programs without arguments prints detailed usage information. See also the GitHub repository for Windows binary packages and older releases. Packages are also automatically built for Windows and Linux on any source code update on GitHub, these are the most up to date and can be downloaded as artifacts from successful workflow runs (note that this requires signing in to GitHub).
For additional information and examples, see README.md.