PPL: Difference between revisions
Jump to navigation
Jump to search
Code Fix:Being always RGB888 is a VRAD limitation, not a format or engine one; a custom compiler could make DXT1, I8, or even RGBA16161616F lightmaps, and these would be properly loaded by the game.
Garry's Mod, which uses a separate
Important:To account for potential discrepancies between UV maps of LoD models, PPL files contain a lightmap for each LoD model. This can greatly increase the file size of a map if a lightmapped model has several LoD models!
SirYodaJedi (talk | contribs) No edit summary |
SirYodaJedi (talk | contribs) (Updated version that supports drag and drop) |
||
| Line 9: | Line 9: | ||
{{modernImportant|To account for potential discrepancies between [[UV map]]s of [[$lod|LoD]] models, PPL files contain a lightmap for each LoD model. This can greatly increase the file size of a map if a lightmapped model has several LoD models!}} | {{modernImportant|To account for potential discrepancies between [[UV map]]s of [[$lod|LoD]] models, PPL files contain a lightmap for each LoD model. This can greatly increase the file size of a map if a lightmapped model has several LoD models!}} | ||
A PPL file can be converted to uncompressed [[VTF]](s) using | A PPL file can be converted to uncompressed [[VTF]](s) using [https://ficool2.github.io/HammerPlusPlus-Website/tools.html Ficool2's proptexelvtf.exe], which can then be used for {{ent|$lightmap}}. | ||
== File format == | == File format == | ||
Revision as of 08:12, 16 November 2025
(in all games since
) (also in
)
PPL files are lightmaps (per-pixel lighting) generated by VRAD for prop_static models that have generatelightmaps enabled. Unlike brush lightmaps, PPL files are always uncompressed RGB888 (24-bit
SDR), even when the map is compiled in HDR mode.
To do so in the most basic manner, modify ![]()
vradstaticprops.h to replace all mentions of IMAGE_FORMAT_RGB888 with the desired format. If used in conjunction with a modified VBSP, this could be replaced with if statements or switch cases that check for newly assigned static prop flags.
_hdr.ppl for HDR lighting.A PPL file can be converted to uncompressed VTF(s) using Ficool2's proptexelvtf.exe, which can then be used for $lightmap.
File format
The format is super simple, and is as follows:
struct FileHeader_t
{
int version;
unsigned int checksum;
unsigned int imageFormat;
int meshCount;
unsigned int unused[4];
// Immediately after, "meshCount" number of MeshHeader_t headers
};
struct MeshHeader_t
{
unsigned int lod;
unsigned int offset; // Offset from the top of the file to the raw image data in given image format (usually RGB888)
unsigned int length; // Length of the image data, including all mip maps
unsigned int width;
unsigned int height;
unsigned int unused[3];
};
See also
- VHV, the equivalent for vertex-lit props