• Content Count

  • Joined

  • Last visited

  • Days Won


MJW last won the day on October 27 2019

MJW had the most liked content!

Community Reputation



Profile Information

  • Gender

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Happy birthday, welshblue! I hope both today and the year that follows are filled of happiness.
  2. My goodness! So glad to see you back, yellowman!
  3. Congratulations to @welshblue, @Pixey, and @Vagabondi! I Welshblue's winning entry was most impressive. I thought a straight-on view was difficult enough; I didn't even consider attempting an off-angle view. Really liked Vagaboni's tangled-tape gag, which was a clever idea, well-executed. Thanks to Pixey for hosting!
  4. I believe either way is okay. The main thing, I think, is to keep the OOTF voting and the SOTW voting on different weeks; but both ways do that. Though producing a realistic rock is challenging, I don't think it should be especially time-consuming, since rocks don't have a lot of individual components. All in all, I don't see any strong reason to not keep the current deadline.
  5. Though now that the next subject is no longer picked by the winner, it's not necessary to wait till a winner is declared, I thought the usual procedure was to begin the next OOTF after the previous one was completed, including voting. I, myself, somewhat favor the previous procedure, because I like having the week off. For example, it allows those who want to also enter SOTW more time to work on both.
  6. Hope you have a well-deserved happy birthday, Pixey!
  7. Great work, @welshblue, @Pixey, and @Maggie! I could practically smell the flowers!
  8. The way I'd do it (and the only way I know how to do it) is to create a separate Surface or pseudo-surface, do the processing in OnSetRenderInfo (PreRender in CodeLab), then copy the processed image to dst in the Render pass. By a pseudo-surface, I mean an array of ColorBrgas or similar the same size as the image. There's often no need to use an actual Surface. In your case, it could perhaps be an int or float brightness array. Two disadvantages to doing pre-render processing are that there's no longer parallelism, and that the staus bar isn't updated correctly. However, the lack of parallelism is necessary for many algorithms, and given the choice between a correct status bar and a correct image, I'll choose the correct image. Also, for relatively quick operations, the ill-effect on the status indications is minimal. BTW: IsCancelRequested works in OnSetRenderInfo, and should be included in any pre-render loops that may take a lot of processing time.
  9. The one thing I can say is that it's lighting, not spacial. That's even more true with an irregular object like the example. Perspective cues don't determine whether it looks indented or raised. Light is generally assumed to come from above the object. To see what I mean, take welshblue's (excellently done) example, copy it into PDN, and rotate it 180 degrees. The inside of the S will now appear to be raised instead of incised.
  10. I understand @sirdaniel's problem to be that he has large images, and doesn't like waiting for the delay caused by initially rendering the image with the wrong scale factor. As @Ego Eram Reputo point's out, the controls have reset buttons. Very possibly, pressing the reset button on the Zoom control while Rotate/Zoom is rendering the initial image will abort the process, and immediately restart it with the 1 default. If it doesn't work that way, I think it could probably be made to do so.
  11. Nearly all Paint.Net Effects repeat the previously-used settings when reopened. That's often a useful feature, but sometimes -- as in your case -- it's not. Unfortunately, as far as I know, there's nothing you can do about it. (You mention on another thread that you edit gigantic images. That's no doubt responsible for turning what would normally be a minor inconvenience into a major annoyance.)
  12. C++ does the same thing as C#. Both treat a division of two ints as an integer division, as does C.
  13. I don't know if this will solve the problem you're referring to, but I doubt this line does what you want it to do: float DivMult= 255/Amount2; Amount2 is an int, as is 255, so an integer divide will be performed, and the (integer) result converted to a float. I suspect that's not what's intended. Try: float DivMult= 255.0 / (float)Amount2; (Also, the line should be moved outside the loop. It can be computed once at the top.)
  14. Congratulations to @welshblue and @Pixey, along with the other entrants, for the very impressive notepads. Many excellent entries, and Welshblue's winning entry was superb. (I went to the Winner thread, but it was archived and closed to comments. Either it should be left open longer, or I need to procrastinate less. Probably the latter.)