Commit Graph

1216 Commits

Author SHA1 Message Date
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
6f779fb67a whoops imageresampler link 2014-07-22 12:17:43 -07:00
9c9a68787d imageresampler library reference 2014-07-22 12:16:11 -07:00
3e8a89cad1 more resampler notes 2014-07-22 11:57:46 -07:00
c27ccec436 resampler prototypes 2014-07-22 11:37:54 -07:00
63cce5c70a created stb_resample_ideas.txt 2014-07-22 10:05:01 -07:00
0155bd3ab6 We are going to support SRGB. 2014-07-21 19:51:11 -07:00
ba861fa493 Allow specifying a stride. 2014-07-21 18:01:05 -07:00
06b7b00696 It does nothing now but I want to support edge behavior in the future. 2014-07-21 16:14:32 -07:00
c27c5b6fbe There's really no point in returning the output buffer. 2014-07-21 15:36:43 -07:00
d54e74092e stb_resample initial implementation 2014-07-21 00:16:03 -07:00
bcefca10f7 fix bad fix in previous fix 2014-07-15 22:26:01 -07:00
75b9e9cc1b update stb_image version number 2014-07-09 23:45:58 -07:00
b2cbed2634 Merge branch 'working' 2014-07-09 23:44:48 -07:00
1eb665906e cdecl fixes 2014-07-09 23:41:40 -07:00
68b5ec9392 fix cdecl 2014-07-09 23:39:00 -07:00
e0d86b0f5c STBI_ASSERT 2014-07-09 23:35:25 -07:00
3bf91543f4 revert img_n=0 initialization to original location 2014-07-09 23:26:03 -07:00
a2b9aa8d06 modifiy jpeg img_n fix
switch from fopen to fopen_s on later MSVCs
2014-07-09 23:23:48 -07:00
70de0adb28 Merge branch 'master' of https://github.com/LysanderGG/stb into working 2014-07-09 23:03:32 -07:00
932d485146 fix warnings in certain console compilers 2014-07-09 23:01:29 -07:00
efd6b2698f Fix crash when trying to load progressive jpeg due to uninitialized s->img_n
Proper pointer check before deleting
2014-07-09 22:41:22 +09:00