-
Notifications
You must be signed in to change notification settings - Fork 450
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Custom per-channel RGB weighting for DXT1-3 compress #84
Comments
What new options where you thinking of adding here? Generally I can't break existing API signature compatibility, but I could certainly add new functions:
|
Configurable per-channel weights is probably the most important. I'm not sure if ASTC support is planned, but if it is, then configurability will become more important because ASTC block configs are highly modular, so exhaustive searching the entire config space is much less practical and heuristics will be more important. The reference encoder has about 20 scalar options. Some of those options would be useful in current-generation formats anyway, like the deblocking parameter (boosts edge pixel importance). |
Right now we have two 'channel-weight' options: The default (as was in D3DX's DXT1-5 compressor for it's entire history):
I added an option via Are you thinking per-image custom weights are a thing worth tweaking, or is there some other common weighting scheme that you think would be useful? |
The current "Compress" functions take all settings as a single flags DWORD and individual parameters, i.e.:
HRESULT __cdecl Compress( _In_ const Image& srcImage, _In_ DXGI_FORMAT format, _In_ DWORD compress, _In_ float threshold, _Out_ ScratchImage& cImage);
Using a compression settings struct aggregating all of the options instead would allow better forward compatibility, since non-flag options (or more than 32 flags) could be added without requiring new function signatures.
The text was updated successfully, but these errors were encountered: