From c036866478d2a3d2208a41445923d641023a2fae Mon Sep 17 00:00:00 2001 From: Surma Date: Fri, 4 Jun 2021 15:23:42 +0100 Subject: [PATCH] Map quality slider to RDO when using UASTC --- codecs/basis/dec/basis_dec.wasm | Bin 128223 -> 128217 bytes codecs/basis/enc/basis_enc.cpp | 11 +++++++--- codecs/basis/enc/basis_enc.wasm | Bin 1466104 -> 1466267 bytes src/client/lazy-app/util/index.ts | 10 ++++++++++ src/features/encoders/basis/client/index.tsx | 20 ++++++++++++++----- 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/codecs/basis/dec/basis_dec.wasm b/codecs/basis/dec/basis_dec.wasm index 80843e4773158b5476cd309e0c56ae19ebfe22f9..c71a6077b678a35a942f454844db26f0867a567f 100755 GIT binary patch delta 547 zcmXAkO=uHA6vyYyZo0eKWxI`uNa|sefJ8}*#;P^RrWs?T2hT+ity({zD7GgNa!?RF zRnR#s;z210xrm8_1Vp?`5z;2E#t$Our3A!O#gpjU^nduhkN2_|1HV);<0#f7=h0!ecnYe-_f)>K@F;Oh#j>Ve0nCPN@_R+oRTLKIs&* zXd0l~3cGGC$|VLdl{JPf_S6H0E?Te{SI703Y5QxlyyoPL=V-uqJZNjyDgNEL0aJXT zIE!o*Yv71$Q_CrlzEp*=F=CSn9wwu@O>D5{MD227UR?cH1;M+wfVMob{lf_mD{t}Z z8cru^!3y*D@1|juC%VVrEMMp*#NSWfp1|+smnFzV>8m@_w`UA?e(RPyq*s;6c#xaAiKNuqhK@Fh|>F4M@>fnq?Sfk@s2M`VR{MsU{ z-*F!fAW>d^1G*W))lkSMN+Ya|P0$JJVT=U*<`A0hrv!=KlDGNzJJ(^s-4otG2|(s5QxMGuE^oJc}T;{tLxodlV`t2;!ms zWRN|0X?lu+C=4YRm4e3}S`$}kYfuD{B8aIT1QngB@9@6wz4y(Vm3967y8g5byL3g< z@P8nzD@eg{MNtjIATF4?j&xPgZM#!ZHTDcHs~65+Jjv6zCj(>rc($RzAnVP&5d0-q z#CKk?zWgx=*o}M|&qi!Me_M`H;W3zIu`*Isfb`IWpt6G;`o7F9_}K>Cf!V?%RK0;2=FTbhtE( b=nr9oh3JDfK(xOSh<*_JbG0_Q0n_*&adMj= diff --git a/codecs/basis/enc/basis_enc.cpp b/codecs/basis/enc/basis_enc.cpp index fb2dfdcf..561b2b19 100644 --- a/codecs/basis/enc/basis_enc.cpp +++ b/codecs/basis/enc/basis_enc.cpp @@ -8,7 +8,7 @@ using namespace emscripten; using namespace basisu; struct BasisOptions { - uint8_t quality; + float quality; uint8_t compression; bool uastc; bool mipmap; @@ -48,7 +48,6 @@ val encode(std::string image_in, int image_width, int image_height, BasisOptions job_pool jpool(1); params.m_pJob_pool = &jpool; - // Needs to be exposed as an option params.m_ktx2_uastc_supercompression = basist::KTX2_SS_ZSTANDARD; params.m_perceptual = opts.perceptual; @@ -57,10 +56,16 @@ val encode(std::string image_in, int image_width, int image_height, BasisOptions params.m_mip_srgb = opts.srgb_mipmap; params.m_mip_filter = opts.mipmap_filter; params.m_mip_smallest_dimension = opts.mipmap_min_dimension; - params.m_quality_level = opts.quality; params.m_compression_level = opts.compression; params.m_source_images.push_back(img); + if (opts.uastc) { + params.m_rdo_uastc_quality_scalar = opts.quality; + params.m_rdo_uastc = opts.quality != 0; + } else { + params.m_quality_level = static_cast(opts.quality); + } + if (!compressor.init(params)) { return val(std::string("Well something went wrong during init")); } diff --git a/codecs/basis/enc/basis_enc.wasm b/codecs/basis/enc/basis_enc.wasm index 32267f2c3188b1d7f1b07ad3e1340742b2443f21..3ee66c5c551311056e7229589dda51ddfa9f9e1d 100755 GIT binary patch delta 24128 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 I$YGcLKXMaF%K!iX delta 23509 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 S4*cXnFi0bV6g76#rT+&2C08u~ diff --git a/src/client/lazy-app/util/index.ts b/src/client/lazy-app/util/index.ts index 6d4b897d..4942b123 100644 --- a/src/client/lazy-app/util/index.ts +++ b/src/client/lazy-app/util/index.ts @@ -417,3 +417,13 @@ export async function canvasEncodeTest(mimeType: string): Promise { return false; } } + +export function clamp(min: number, v: number, max: number): number { + if (v < min) { + return min; + } + if (v > max) { + return max; + } + return v; +} diff --git a/src/features/encoders/basis/client/index.tsx b/src/features/encoders/basis/client/index.tsx index c570e5a4..443bb8f5 100644 --- a/src/features/encoders/basis/client/index.tsx +++ b/src/features/encoders/basis/client/index.tsx @@ -5,6 +5,7 @@ import { inputFieldChecked, inputFieldValueAsNumber, preventDefault, + clamp, } from 'client/lazy-app/util'; import * as style from 'client/lazy-app/Compress/Options/style.css'; import linkState from 'linkstate'; @@ -43,9 +44,18 @@ export class Options extends Component { ) as HTMLFormElement; const { options } = this.props; + const uastc = form.mode.value === '1'; + let quality = inputFieldValueAsNumber(form.quality, options.quality); + if (uastc) { + quality = clamp(0, quality, 4); + } else { + quality = Math.floor(clamp(0, quality, 255)); + } + const newOptions: EncodeOptions = { ...this.props.options, - uastc: form.mode.value === '1', + uastc, + quality, y_flip: inputFieldChecked(form.y_flip, options.y_flip), perceptual: inputFieldChecked(form.perceptual, options.perceptual), mipmap: inputFieldChecked(form.mipmap, options.mipmap), @@ -60,7 +70,6 @@ export class Options extends Component { form.mipmap_min_dimension, Math.floor(Math.log2(options.mipmap_min_dimension)), ), - quality: inputFieldValueAsNumber(form.quality, options.quality), compression: inputFieldValueAsNumber( form.compression, options.compression, @@ -86,8 +95,9 @@ export class Options extends Component {
@@ -152,7 +162,7 @@ export class Options extends Component { )} onInput={this.onChange} > - Smallest mipmap (2^x): + Log2 of smallest mipmap: