|
985ac75251
|
When doing a perfect po2 nearest neighbor downsample don't allow -0.5 and 0.5 to both contribute to a texel or you'll get a double tap.
|
2014-07-30 09:27:42 -07:00 |
|
|
c2449acc3e
|
Tests for edge behavior
|
2014-07-30 09:14:38 -07:00 |
|
|
59cb71ea18
|
Fix float conversion.
|
2014-07-30 08:47:55 -07:00 |
|
|
6625259959
|
Try to keep integer precision by briefly casting to double while decoding and encoding.
|
2014-07-30 01:18:23 -07:00 |
|
|
11897fbf96
|
More fixing shorts.
|
2014-07-30 00:34:25 -07:00 |
|
|
1fcbe0daaf
|
Fix shorts. Add test cases for shorts.
|
2014-07-30 00:16:13 -07:00 |
|
|
7ead9a748d
|
Fix. Ring buffers are a height value.
|
2014-07-29 23:09:41 -07:00 |
|
|
043fa28c11
|
Same deal with height.
|
2014-07-29 23:02:56 -07:00 |
|
|
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.
|
2014-07-29 22:50:06 -07:00 |
|
|
68f93b72d5
|
Update documentation and add helper functions.
|
2014-07-29 20:18:28 -07:00 |
|
|
5b40906271
|
My perf testing code.
|
2014-07-29 17:44:45 -07:00 |
|
|
d96c97298c
|
This is still faster than the function pointer solution, and neater.
|
2014-07-29 16:22:22 -07:00 |
|
|
3a3e06029e
|
This is definitely faster than the function pointer solution.
|
2014-07-29 12:11:03 -07:00 |
|
|
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 |
|
|
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 |
|
|
05f775e977
|
Merge branch 'master' of https://github.com/BSVino/stb
|
2014-07-29 00:33:54 -07:00 |
|
|
1fcf30ada0
|
Fix a math error.
|
2014-07-29 00:33:29 -07:00 |
|
|
e2ac4f6505
|
More resample ideas
|
2014-07-27 12:05:17 -07:00 |
|
|
ef3a460ec4
|
Some better looking horners save another multiplication.
|
2014-07-27 00:55:47 -07:00 |
|
|
7d47582578
|
Support for 16 and 32 bit integer images, and float images.
|
2014-07-27 00:09:22 -07:00 |
|
|
6c8cac0a66
|
Support for sRGB color space.
|
2014-07-26 23:44:45 -07:00 |
|
|
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 |
|
|
af1ed58f51
|
Add wrap, fix reflect so it doesn't wrap.
|
2014-07-26 19:30:13 -07:00 |
|
|
8723567439
|
Add edge reflect mode.
|
2014-07-26 19:11:02 -07:00 |
|
|
6cd81d4dd5
|
Put the polynomials in horner form to save a multiplication.
|
2014-07-26 15:36:15 -07:00 |
|
|
fb2f8df5cc
|
Add mitchell filter.
|
2014-07-26 15:06:31 -07:00 |
|
|
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 |
|
|
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 |
|
|
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 |
|
|
01fb58d6b4
|
Add a bicubic filter.
|
2014-07-26 13:07:04 -07:00 |
|
|
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 |
|
|
7abd4ccf34
|
Support for filters with larger support. Initial support for edge behavior.
|
2014-07-26 11:51:02 -07:00 |
|
|
62ff271c7a
|
I put it in the to do list and now I can close my browser tab.
|
2014-07-25 00:08:23 -07:00 |
|
|
81c1ddf110
|
Keeping a list of suggestions so I don't forget them.
|
2014-07-25 00:00:40 -07:00 |
|
|
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 |
|
|
666c025710
|
Fix non uniform scaling where out_w < in_w && out_h > in_h.
|
2014-07-24 23:32:25 -07:00 |
|
|
736596ba09
|
Fix non uniform scaling where out_w > in_w && out_h < in_h.
|
2014-07-24 23:27:29 -07:00 |
|
|
178e301ea4
|
Fix upsampling, avoid dereferencing in an inner loop.
|
2014-07-24 22:54:35 -07:00 |
|
|
dbb7480f12
|
Fix nonuniform downsampling.
|
2014-07-24 22:30:35 -07:00 |
|
|
fa69bc8551
|
Basic downsampling algorithm works for uniform sampling.
|
2014-07-24 22:09:08 -07:00 |
|
|
297266b27b
|
Starting to implement downsampling.
|
2014-07-24 19:10:45 -07:00 |
|
|
7d8faf5727
|
Remove unused functions.
|
2014-07-24 15:02:54 -07:00 |
|
|
8ac052ac8a
|
Avoid gaps between box filter kernels.
|
2014-07-24 15:02:39 -07:00 |
|
|
9e726bb3e4
|
The vertical resampling pass. Now all elements of the upscale algorithm are in place.
|
2014-07-24 14:20:18 -07:00 |
|
|
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 |
|
|
158effb62a
|
More accurate names. Smaller size for contributors memory, more accurate to what's needed.
|
2014-07-23 23:08:06 -07:00 |
|
|
855fb207be
|
Merge remote-tracking branch 'remotes/nothings/master'
|
2014-07-23 22:24:59 -07:00 |
|
|
55c5f0b3a0
|
Beginning of a more sophisticated resample algorithm, starting with calculating filter contributions per scan line.
|
2014-07-23 22:17:56 -07:00 |
|
|
ee8e926317
|
even more resampling notes
|
2014-07-22 12:45:24 -07:00 |
|
|
92b08aa98a
|
more resampling notes
|
2014-07-22 12:39:29 -07:00 |
|