Jorge Rodriguez
|
3a3e06029e
|
This is definitely faster than the function pointer solution.
|
2014-07-29 12:11:03 -07:00 |
|
Jorge Rodriguez
|
9bd5abb52d
|
Both versions run within the margin of error on my machine so we'll go with the simpler one.
|
2014-07-29 11:44:32 -07:00 |
|
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.
|
2014-07-29 11:39:42 -07:00 |
|
Jorge Rodriguez
|
1fcf30ada0
|
Fix a math error.
|
2014-07-29 00:33:29 -07:00 |
|
Jorge Rodriguez
|
ef3a460ec4
|
Some better looking horners save another multiplication.
|
2014-07-27 00:55:47 -07:00 |
|
Jorge Rodriguez
|
7d47582578
|
Support for 16 and 32 bit integer images, and float images.
|
2014-07-27 00:09:22 -07:00 |
|
Jorge Rodriguez
|
6c8cac0a66
|
Support for sRGB color space.
|
2014-07-26 23:44:45 -07:00 |
|
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.
|
2014-07-26 22:49:56 -07:00 |
|
Jorge Rodriguez
|
af1ed58f51
|
Add wrap, fix reflect so it doesn't wrap.
|
2014-07-26 19:30:13 -07:00 |
|
Jorge Rodriguez
|
8723567439
|
Add edge reflect mode.
|
2014-07-26 19:11:02 -07:00 |
|
Jorge Rodriguez
|
6cd81d4dd5
|
Put the polynomials in horner form to save a multiplication.
|
2014-07-26 15:36:15 -07:00 |
|
Jorge Rodriguez
|
fb2f8df5cc
|
Add mitchell filter.
|
2014-07-26 15:06:31 -07:00 |
|
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.
|
2014-07-26 14:52:28 -07:00 |
|
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.
|
2014-07-26 13:56:23 -07:00 |
|
Jorge Rodriguez
|
155c71fb90
|
Reorder these loops because I think we get a cache win if we write the entire ring buffer entry at once.
|
2014-07-26 13:12:48 -07:00 |
|
Jorge Rodriguez
|
01fb58d6b4
|
Add a bicubic filter.
|
2014-07-26 13:07:04 -07:00 |
|
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.
|
2014-07-26 12:04:39 -07:00 |
|
Jorge Rodriguez
|
7abd4ccf34
|
Support for filters with larger support. Initial support for edge behavior.
|
2014-07-26 11:51:02 -07:00 |
|
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.
|
2014-07-24 23:50:14 -07:00 |
|
Jorge Rodriguez
|
666c025710
|
Fix non uniform scaling where out_w < in_w && out_h > in_h.
|
2014-07-24 23:32:25 -07:00 |
|
Jorge Rodriguez
|
736596ba09
|
Fix non uniform scaling where out_w > in_w && out_h < in_h.
|
2014-07-24 23:27:29 -07:00 |
|
Jorge Rodriguez
|
178e301ea4
|
Fix upsampling, avoid dereferencing in an inner loop.
|
2014-07-24 22:54:35 -07:00 |
|
Jorge Rodriguez
|
dbb7480f12
|
Fix nonuniform downsampling.
|
2014-07-24 22:30:35 -07:00 |
|
Jorge Rodriguez
|
fa69bc8551
|
Basic downsampling algorithm works for uniform sampling.
|
2014-07-24 22:09:08 -07:00 |
|
Jorge Rodriguez
|
297266b27b
|
Starting to implement downsampling.
|
2014-07-24 19:10:45 -07:00 |
|
Jorge Rodriguez
|
7d8faf5727
|
Remove unused functions.
|
2014-07-24 15:02:54 -07:00 |
|
Jorge Rodriguez
|
8ac052ac8a
|
Avoid gaps between box filter kernels.
|
2014-07-24 15:02:39 -07:00 |
|
Jorge Rodriguez
|
9e726bb3e4
|
The vertical resampling pass. Now all elements of the upscale algorithm are in place.
|
2014-07-24 14:20:18 -07:00 |
|
Jorge Rodriguez
|
152965f334
|
Decode enough scanlines into a ring buffer to make sure that we have enough source scanlines to do a vertical sampling.
|
2014-07-24 01:04:22 -07:00 |
|
Jorge Rodriguez
|
158effb62a
|
More accurate names. Smaller size for contributors memory, more accurate to what's needed.
|
2014-07-23 23:08:06 -07:00 |
|
Jorge Rodriguez
|
55c5f0b3a0
|
Beginning of a more sophisticated resample algorithm, starting with calculating filter contributions per scan line.
|
2014-07-23 22:17:56 -07:00 |
|
Jorge Rodriguez
|
0155bd3ab6
|
We are going to support SRGB.
|
2014-07-21 19:51:11 -07:00 |
|
Jorge Rodriguez
|
ba861fa493
|
Allow specifying a stride.
|
2014-07-21 18:01:05 -07:00 |
|
Jorge Rodriguez
|
06b7b00696
|
It does nothing now but I want to support edge behavior in the future.
|
2014-07-21 16:14:32 -07:00 |
|
Jorge Rodriguez
|
c27c5b6fbe
|
There's really no point in returning the output buffer.
|
2014-07-21 15:36:43 -07:00 |
|
Jorge Rodriguez
|
d54e74092e
|
stb_resample initial implementation
|
2014-07-21 00:16:03 -07:00 |
|