Version 1.3 will be a bugfix release (was: Should we have a 1.3 bug fix release milestone?) #275
Replies: 17 comments 26 replies
-
I see two issues with full implementation of perturbation.
|
Beta Was this translation helpful? Give feedback.
-
I guess the best thing is to set up a milestone 1.3 and if we don't meet it, we can squeeze it into 2.0. How does that sound? |
Beta Was this translation helpful? Give feedback.
-
OK, I've created the milestone with a delivery date for the end of June and I've assigned the perturbation related issues and some other issues to the milestone. |
Beta Was this translation helpful? Give feedback.
-
Great. Let's do it. |
Beta Was this translation helpful? Give feedback.
-
OK, so I've been working on flushing out the 6-bit per channel color stuff from the code and replacing it with 8-bits/channel. Things are going fine, but I'm wondering if I should put in a backwards compatibility path for supporting the old 6-bit/channel stuff. This would be the first "breaking change" in Id compared to earlier versions. The funny thing is that the GIF file format always supported 0-255 range of values for color channels, but FRACTINT always kept color channels in the 0-63 range internally and then left shifted them by two bits when writing to a GIF file (and right shifting by two bits on file read). Since VGA displays have had 24-bit colors in colormaps for ages, I always wondered why it was doing this 6-bit manipulation everywhere. Anyway, the question remains: should we have backwards compatibility logic throughout or just ensure 8-bits/channel from files on read? |
Beta Was this translation helpful? Give feedback.
-
The pros for moving fully to a new strategy are simplicity of code, Id is a new product and it is closer to the standard used by most image processing software. The main issue for us will be the accuracy of FOTD's and detecting which mode was used to save the file. |
Beta Was this translation helpful? Give feedback.
-
Switching to PNG is a larger change; the issue here isn't truecolor (PNG) vs. colormapped (GIF) pixels, it's how many bits per channel are kept internally for colors in the colormap. Everything externally (GIF files, You might ask: well, if it's internal, why does it matter? The one place where it does matter so far is in the image-based tests where the 'gold' images come from FRACTINT. The iteration counts match (pixel value that indexes the colormap), but the colors in the colormap don't match. So far I've worked around it by ignoring the colormap between the rendered test image and the gold image, but then I lose the ability to identify bugs introduced that write out the wrong colormap. I could regenerate the 'gold' images in Id and the colormap would match. Hmm... maybe that is the real solution, I'm not sure. The reason the colors don't match is that on colormap read, the old code did:
and then we counter-compensate for this in the Win32 display code by doing:
So the display appeared to have the proper intensity (e.g. not dark), but in the end when we write out the GIF file, the lower 2 bits of the color channels in the colormap are always zero! Maybe I'll try another hack in the image compare tool to zero out the bottom bits and see if that makes the FRACTINT images compare equal in the colormap. The question still remains: do we provide a backwards compatibility path for this? |
Beta Was this translation helpful? Give feedback.
-
Additional: I just pushed an |
Beta Was this translation helpful? Give feedback.
-
What are the consequences for the user? From the point of view of the user, is the main consequence a slight change in the color? If that's all the user sees, it's not a problem. Am I on track here? We have already removed integer arithmetic. We need to bring Id into current technology. |
Beta Was this translation helpful? Give feedback.
-
It doesn't seem like a critical problem if there is only a slight shift in the colors displayed. |
Beta Was this translation helpful? Give feedback.
-
OK, I just wanted to 'take the pulse' and see if it was worth the extra effort. I can always back-fill compatibility, based on git history, if someone asks for it I'll deal with the image tests with a suitable flag to my image compare program so that I am checking legacy colors for match instead of trying to generate backwards compatible renderings in Id. |
Beta Was this translation helpful? Give feedback.
-
Seems like a good decision. |
Beta Was this translation helpful? Give feedback.
-
@PaulTheLionHeart I was thinking about the perturbation changes that you have in flight and I keep coming back to this one question in my thinking: Why are we forcing perturbation to compute to max iterations during initialization? In order to do the minimal amount of work (which is the whole point of any speed-up algorithm like perturbation), we should only be computing a new point on the reference orbit when necessary. Similarly, we should only be selecting new reference points when necessary. This leads me to the following algorithm when perturbation is enabled:
This algorithm only does work on reference orbits when necessary and only selects new reference points when necessary. It does the minimal amount of work. The additional overhead compared to brute-force deep zooming should be small compared to the amount of bignum math that is avoided due to the perturbation algorithm. Unlike our previous discussions where the reference points were computed to max iterations, it doesn't run the reference orbit out any farther than necessary to compute the orbit of a particular pixel. By wrapping the fractal type functions, perturbation support drops into all the existing passes code without modifying any of the passes algorithms. Perturbation is orthogonal to how the pixels are scanned. |
Beta Was this translation helpful? Give feedback.
-
Over the long weekend I worked on finishing up the changes to move to full 8-bit color channels from 6-bit colors channels. It's kind of amazing that the code has persisted this long in truncating color channels to 6-bits and nobody ever complained before? I guess they just didn't notice it. I have a little more polishing to do to validate things end to end. My thinking is to have a test parameter file that uses a colormap with 256 distinct values in the color channel, e.g. |
Beta Was this translation helpful? Give feedback.
-
We've made good progress on fixing issues for 1.3. Personally I want to try and get these fixed before the end of June:
I think the solid guessing bug has been around forever, so that will be a nice improvement and not just cleaning up some mess I created while migrating the code as is the case for the displaying the ant delay value. Personally I was surprised to learn that the code has been stripping color values down to 6 bits all these years. 8-bit colors were supported in DOS in 1997! So that's just something that never got improved in the code and is now fixed. This is a necessary prerequisite to moving on towards supporting 24-bit (and floating-point) colors. Fixing #61 required a sprinkling of changes throughout, but is a good upgrade. |
Beta Was this translation helpful? Give feedback.
-
OK, I've fixed these:
I am going to try and fix the solid guessing bug (#257) and the VC++ runtime packaging bug (#132) by Sunday. Even if I can't get those fixed by Sunday, the master branch is in good shape for a 1.3 bugfix release. |
Beta Was this translation helpful? Give feedback.
-
Well done Richard. Looks like you are on track for an end of June release of Id 1.3. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Since I've put the 2.0 milestone 6 months out in September, I'm wondering if we want a 1.3 milestone in 3 months time to get any bug fixes or such things deployed from master into a release before the switch to wxWidgets happening on the
wx
branch.I know @PaulTheLionHeart is working on perturbation enhancements and I don't expect it to take 6 months for that
:)
based on progress so far.I would also like to keep doing any bug fixes slated for 2.0 on the master branch and keep the GUI work separate on the wx branch. Thus a 1.3 milestone in 3 months that just consists of bug fixes seems reasonable.
@PaulTheLionHeart what do you think?
Beta Was this translation helpful? Give feedback.
All reactions