Jorge Rodriguez
|
7ead9a748d
|
Fix. Ring buffers are a height value.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
043fa28c11
|
Same deal with height.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
ebe0473d8b
|
Add a test suite to do a bunch of different resizes to find problems. One problem found was an incorrect calculation of texel support how many margin texels needed when downsampling. When downsampling we need to spread out the support of each contributing texel, so to compensate you need more margin texels.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
68f93b72d5
|
Update documentation and add helper functions.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
d96c97298c
|
This is still faster than the function pointer solution, and neater.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
3a3e06029e
|
This is definitely faster than the function pointer solution.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
9bd5abb52d
|
Both versions run within the margin of error on my machine so we'll go with the simpler one.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
5dff80ed31
|
Trying some different strategies for optimizing the decoder. The code in #ifdef 1 is slightly faster by my measurements, but a whole lot uglier.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
1fcf30ada0
|
Fix a math error.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
ef3a460ec4
|
Some better looking horners save another multiplication.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
7d47582578
|
Support for 16 and 32 bit integer images, and float images.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
6c8cac0a66
|
Support for sRGB color space.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
41dc4c476c
|
In some situations with certain filter kernels with negative values it's possible to generate valid results > 1.0, so saturate it before we write it to make sure it doesn't overflow. Also fix incorrect filter radius while downsampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
af1ed58f51
|
Add wrap, fix reflect so it doesn't wrap.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
8723567439
|
Add edge reflect mode.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
6cd81d4dd5
|
Put the polynomials in horner form to save a multiplication.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
fb2f8df5cc
|
Add mitchell filter.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
69af963c42
|
Add catmull rom filter. Also, move the debug asserts for values <= 1 to the very end of the process. This will make these bugs a lot harder to find, but because some filter kernels have negative values it's possible for the buffers to have values > 1 up until the point where it's converted back to an int.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
12acf87eec
|
When downsampling start the buffer loop at -filter_texel_margin to make sure that all contributors get their taps in at the ring buffer.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
155c71fb90
|
Reorder these loops because I think we get a cache win if we write the entire ring buffer entry at once.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
01fb58d6b4
|
Add a bicubic filter.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
a95da9ee1d
|
Unroll the multiply-add loops. At the cost of a function pointer dereference we get a whole lot of conditionals eliminated. Should be a solid win once the debug asserts are gone.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
7abd4ccf34
|
Support for filters with larger support. Initial support for edge behavior.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
27926e78b8
|
Make consistent tests for whether we're doing upsampling or downsampling of width and height. Don't request memory for horizontal buffer or encode buffer if we don't need it.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
666c025710
|
Fix non uniform scaling where out_w < in_w && out_h > in_h.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
736596ba09
|
Fix non uniform scaling where out_w > in_w && out_h < in_h.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
178e301ea4
|
Fix upsampling, avoid dereferencing in an inner loop.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
dbb7480f12
|
Fix nonuniform downsampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
fa69bc8551
|
Basic downsampling algorithm works for uniform sampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
297266b27b
|
Starting to implement downsampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
7d8faf5727
|
Remove unused functions.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
8ac052ac8a
|
Avoid gaps between box filter kernels.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
9e726bb3e4
|
The vertical resampling pass. Now all elements of the upscale algorithm are in place.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
152965f334
|
Decode enough scanlines into a ring buffer to make sure that we have enough source scanlines to do a vertical sampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
158effb62a
|
More accurate names. Smaller size for contributors memory, more accurate to what's needed.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
55c5f0b3a0
|
Beginning of a more sophisticated resample algorithm, starting with calculating filter contributions per scan line.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
0155bd3ab6
|
We are going to support SRGB.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
ba861fa493
|
Allow specifying a stride.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
06b7b00696
|
It does nothing now but I want to support edge behavior in the future.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
c27c5b6fbe
|
There's really no point in returning the output buffer.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
d54e74092e
|
stb_resample initial implementation
|
ago%!(EXTRA string=11 years) |