Commit Graph

271 Commits

Author SHA1 Message Date
Jorge Rodriguez 1fcf30ada0 Fix a math error. 2014-07-29 00:33:29 -07:00
Jorge Rodriguez e2ac4f6505 More resample ideas 2014-07-27 12:05:17 -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 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
Jorge Rodriguez 81c1ddf110 Keeping a list of suggestions so I don't forget them. 2014-07-25 00:00:40 -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 855fb207be Merge remote-tracking branch 'remotes/nothings/master' 2014-07-23 22:24:59 -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
Sean Barrett ee8e926317 even more resampling notes 2014-07-22 12:45:24 -07:00
Sean Barrett 92b08aa98a more resampling notes 2014-07-22 12:39:29 -07:00
Sean Barrett 6f779fb67a whoops imageresampler link 2014-07-22 12:17:43 -07:00
Sean Barrett 9c9a68787d imageresampler library reference 2014-07-22 12:16:11 -07:00
Sean Barrett 3e8a89cad1 more resampler notes 2014-07-22 11:57:46 -07:00
Sean Barrett c27ccec436 resampler prototypes 2014-07-22 11:37:54 -07:00
Sean Barrett 63cce5c70a created stb_resample_ideas.txt 2014-07-22 10:05:01 -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
Sean Barrett bcefca10f7 fix bad fix in previous fix 2014-07-15 22:26:01 -07:00
Sean Barrett 75b9e9cc1b update stb_image version number 2014-07-09 23:45:58 -07:00
Sean Barrett b2cbed2634 Merge branch 'working' 2014-07-09 23:44:48 -07:00
Sean Barrett 1eb665906e cdecl fixes 2014-07-09 23:41:40 -07:00
Sean Barrett 68b5ec9392 fix cdecl 2014-07-09 23:39:00 -07:00
Sean Barrett e0d86b0f5c STBI_ASSERT 2014-07-09 23:35:25 -07:00