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 _hdr.ppl for HDR lighting.
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) mNo edit summary |
Robotboy655 (talk | contribs) (docuement format) |
||
(11 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{stub}}{{src topicon}}{{src13mp|only}} {{gmod|also}} | {{stub}}{{src topicon}}{{src13mp|only}} {{gmod|also}} | ||
'''PPL''' files are lightmaps ('''p'''er-'''p'''ixel '''l'''ighting) generated by [[VRAD]] for {{ent|prop_static}} models that have {{code|generatelightmaps}} enabled. Unlike brush lightmaps, PPL files are always 24-bit {{w|Standard dynamic range|SDR}}, even when the map is compiled in [[HDR]] mode. | '''PPL''' files are lightmaps ('''p'''er-'''p'''ixel '''l'''ighting) generated by [[VRAD]] for {{ent|prop_static}} models that have {{code|[[$lightmap|generatelightmaps]]}} enabled. Unlike brush lightmaps, PPL files are always uncompressed RGB888 (24-bit {{w|Standard dynamic range|SDR}}), even when the map is compiled in [[HDR]] mode. | ||
{{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. | |||
To do so in the most basic manner, modify {{file|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]]. | |||
This is fixed in {{gmod|2}}, which uses a separate {{code|_hdr.ppl}} for HDR lighting.}} | |||
{{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 <!--[https://cdn.discordapp.com/attachments/235121530609205249/797996930956656680/proptexelvtf.exe -->[https://files.gamebanana.com/bitpit/proptexelvtf.exe Ficool2's proptexelvtf.exe] (direct download), which can then be used for {{ent|$lightmap}}. | |||
== File format == | |||
The format is super simple, and is as follows: | |||
<source lang="cpp">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]; | |||
}; | |||
</source> | |||
== See also == | |||
* [[VHV]], the equivalent for vertex-lit props | |||
[[Category:File formats]] | [[Category:File formats]] | ||
[[Category:Image formats]] |
Latest revision as of 19:15, 24 January 2025
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.


A PPL file can be converted to uncompressed VTF(s) using Ficool2's proptexelvtf.exe (direct download), 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