mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-15 01:59:57 +00:00
Add perceptual and srgb mipmap flag
This commit is contained in:
@@ -12,6 +12,8 @@ struct BasisOptions {
|
|||||||
uint8_t compression;
|
uint8_t compression;
|
||||||
bool uastc;
|
bool uastc;
|
||||||
bool mipmap;
|
bool mipmap;
|
||||||
|
bool srgb_mipmap;
|
||||||
|
bool perceptual;
|
||||||
};
|
};
|
||||||
|
|
||||||
thread_local const val Uint8Array = val::global("Uint8Array");
|
thread_local const val Uint8Array = val::global("Uint8Array");
|
||||||
@@ -46,7 +48,10 @@ val encode(std::string image_in, int image_width, int image_height, BasisOptions
|
|||||||
// Needs to be exposed as an option
|
// Needs to be exposed as an option
|
||||||
params.m_ktx2_uastc_supercompression = basist::KTX2_SS_ZSTANDARD;
|
params.m_ktx2_uastc_supercompression = basist::KTX2_SS_ZSTANDARD;
|
||||||
|
|
||||||
|
params.m_perceptual = opts.perceptual;
|
||||||
|
|
||||||
params.m_mip_gen = opts.mipmap;
|
params.m_mip_gen = opts.mipmap;
|
||||||
|
params.m_mip_srgb = opts.srgb_mipmap;
|
||||||
params.m_mip_filter = "box";
|
params.m_mip_filter = "box";
|
||||||
params.m_quality_level = opts.quality;
|
params.m_quality_level = opts.quality;
|
||||||
params.m_compression_level = opts.compression;
|
params.m_compression_level = opts.compression;
|
||||||
@@ -74,7 +79,9 @@ EMSCRIPTEN_BINDINGS(my_module) {
|
|||||||
.field("quality", &BasisOptions::quality)
|
.field("quality", &BasisOptions::quality)
|
||||||
.field("compression", &BasisOptions::compression)
|
.field("compression", &BasisOptions::compression)
|
||||||
.field("uastc", &BasisOptions::uastc)
|
.field("uastc", &BasisOptions::uastc)
|
||||||
.field("mipmap", &BasisOptions::mipmap);
|
.field("perceptual", &BasisOptions::perceptual)
|
||||||
|
.field("mipmap", &BasisOptions::mipmap)
|
||||||
|
.field("srgb_mipmap", &BasisOptions::srgb_mipmap);
|
||||||
|
|
||||||
function("encode", &encode);
|
function("encode", &encode);
|
||||||
}
|
}
|
||||||
|
|||||||
2
codecs/basis/enc/basis_enc.d.ts
vendored
2
codecs/basis/enc/basis_enc.d.ts
vendored
@@ -3,6 +3,8 @@ export interface EncodeOptions {
|
|||||||
compression: number;
|
compression: number;
|
||||||
uastc: boolean;
|
uastc: boolean;
|
||||||
mipmap: boolean;
|
mipmap: boolean;
|
||||||
|
srgb_mipmap: boolean;
|
||||||
|
perceptual: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface BasisModule extends EmscriptenWasm.Module {
|
export interface BasisModule extends EmscriptenWasm.Module {
|
||||||
|
|||||||
4
codecs/basis/enc/basis_enc.js
generated
4
codecs/basis/enc/basis_enc.js
generated
@@ -971,9 +971,9 @@ function updateGlobalBufferAndViews(buf) {
|
|||||||
Module['HEAPF64'] = HEAPF64 = new Float64Array(buf);
|
Module['HEAPF64'] = HEAPF64 = new Float64Array(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
var STACK_BASE = 5878144,
|
var STACK_BASE = 5878176,
|
||||||
STACKTOP = STACK_BASE,
|
STACKTOP = STACK_BASE,
|
||||||
STACK_MAX = 635264;
|
STACK_MAX = 635296;
|
||||||
|
|
||||||
var TOTAL_STACK = 5242880;
|
var TOTAL_STACK = 5242880;
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -46,17 +46,16 @@ export class Options extends Component<Props, State> {
|
|||||||
const newOptions: EncodeOptions = {
|
const newOptions: EncodeOptions = {
|
||||||
// Copy over options the form doesn't currently care about, eg arithmetic
|
// Copy over options the form doesn't currently care about, eg arithmetic
|
||||||
...this.props.options,
|
...this.props.options,
|
||||||
uastc: inputFieldChecked(
|
uastc: inputFieldChecked(form.uastc, options.uastc),
|
||||||
form.uastc,
|
perceptual: inputFieldChecked(form.perceptual, options.perceptual),
|
||||||
options.uastc,
|
mipmap: inputFieldChecked(form.mipmap, options.mipmap),
|
||||||
),
|
srgb_mipmap: inputFieldChecked(form.srgb_mipmap, options.srgb_mipmap),
|
||||||
mipmap: inputFieldChecked(
|
|
||||||
form.mipmap,
|
|
||||||
options.mipmap,
|
|
||||||
),
|
|
||||||
// .value
|
// .value
|
||||||
quality: inputFieldValueAsNumber(form.quality, options.quality),
|
quality: inputFieldValueAsNumber(form.quality, options.quality),
|
||||||
compression: inputFieldValueAsNumber(form.compression, options.compression),
|
compression: inputFieldValueAsNumber(
|
||||||
|
form.compression,
|
||||||
|
options.compression,
|
||||||
|
),
|
||||||
};
|
};
|
||||||
this.props.onChange(newOptions);
|
this.props.onChange(newOptions);
|
||||||
};
|
};
|
||||||
@@ -95,7 +94,9 @@ export class Options extends Component<Props, State> {
|
|||||||
/>
|
/>
|
||||||
Advanced settings
|
Advanced settings
|
||||||
</label>
|
</label>
|
||||||
<Expander>{showAdvanced ? (<div>
|
<Expander>
|
||||||
|
{showAdvanced ? (
|
||||||
|
<div>
|
||||||
<label class={style.optionToggle}>
|
<label class={style.optionToggle}>
|
||||||
UASTC
|
UASTC
|
||||||
<Checkbox
|
<Checkbox
|
||||||
@@ -104,6 +105,14 @@ export class Options extends Component<Props, State> {
|
|||||||
onChange={this.onChange}
|
onChange={this.onChange}
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
|
<label class={style.optionToggle}>
|
||||||
|
Perceptual distance metric
|
||||||
|
<Checkbox
|
||||||
|
name="perceptual"
|
||||||
|
checked={options.perceptual}
|
||||||
|
onChange={this.onChange}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
<label class={style.optionToggle}>
|
<label class={style.optionToggle}>
|
||||||
Embed Mipmaps
|
Embed Mipmaps
|
||||||
<Checkbox
|
<Checkbox
|
||||||
@@ -112,8 +121,21 @@ export class Options extends Component<Props, State> {
|
|||||||
onChange={this.onChange}
|
onChange={this.onChange}
|
||||||
/>
|
/>
|
||||||
</label>
|
</label>
|
||||||
|
<Expander>
|
||||||
</div>) : null}</Expander>
|
{options.mipmap ? (
|
||||||
|
<label class={style.optionToggle}>
|
||||||
|
sRGB Mipmapping
|
||||||
|
<Checkbox
|
||||||
|
name="srgb_mipmap"
|
||||||
|
checked={options.srgb_mipmap}
|
||||||
|
onChange={this.onChange}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
) : null}
|
||||||
|
</Expander>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
</Expander>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,4 +22,6 @@ export const defaultOptions: EncodeOptions = {
|
|||||||
compression: 2,
|
compression: 2,
|
||||||
uastc: false,
|
uastc: false,
|
||||||
mipmap: false,
|
mipmap: false,
|
||||||
|
srgb_mipmap: false,
|
||||||
|
perceptual: true,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user