View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005781 | The Dark Mod | Coding | public | 15.10.2021 03:01 | 15.10.2021 15:29 |
Reporter | stgatilov | Assigned To | stgatilov | ||
Priority | normal | Severity | normal | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | TDM 2.09 | ||||
Target Version | TDM 2.10 | Fixed in Version | TDM 2.10 | ||
Summary | 0005781: Image programs don't work with DDS source files. | ||||
Description | Image programs don't work with DDS because they usually contains compressed data. And engine code has no means for decompression (aside from sending to GPU, which is a shitty way). | ||||
Additional Information | Note that doing any kind of processing on compressed images is discouraged! Because you operate with image which has already lost quality due to initial compression. So, this is considered a "last resort" feature. | ||||
Tags | No tags attached. | ||||
Implemented: r9629. Implemented code for DXT1, DXT3, DXT5, RGTC decompression. r9630. DDS loading code extracted from CheckPrecompressedImage and UploadPrecompressedImage to R_LoadCompressedImage. Also implemented imageCompressedData_s::ComputeUncompressedData method for DDS decompression. r9631. Supported loading DDS images in image programs. r9632. A bit more information in trace zones: image dimensions, compressed format. In case we decide that this feature should not exist, comment out the code in rev 9631. I only implemented generic C++ code for decompression, but it works very fast. Performance test shows about 2.5 ms per megapixel for each format --- that's the same as vectorized RGTC compressor takes. There are tests for texture decompression, one for correctness, and one for performance (not run by default). I compare our decompression results to decompression results of OpenGL driver. Unfortunately, there is no bitwise exact description of DXT formats in OpenGL specs. I tried to reproduce NVIDIA's behavior as closely as I could, but not perfectly: I allow error up to 1 in each component in the tests. |
|
Some bugfixes: r9633. Hopefully fixed GCC compile error. r9635. Fixed bug with sizes. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
15.10.2021 03:01 | stgatilov | New Issue | |
15.10.2021 03:01 | stgatilov | Status | new => assigned |
15.10.2021 03:01 | stgatilov | Assigned To | => stgatilov |
15.10.2021 03:01 | stgatilov | Relationship added | related to 0005325 |
15.10.2021 03:18 | stgatilov | Additional Information Updated | |
15.10.2021 03:23 | stgatilov | Note Added: 0014434 | |
15.10.2021 03:23 | stgatilov | Status | assigned => resolved |
15.10.2021 03:23 | stgatilov | Resolution | open => fixed |
15.10.2021 03:23 | stgatilov | Fixed in Version | => TDM 2.10 |
15.10.2021 15:29 | stgatilov | Note Added: 0014436 |