Hi. I came across your "mandelbox trip" video last week, and it was literally the coolest thing i've ever seen. since then i've been learning how to use your program, and at this point i'm pretty good at making still images. As i type this my computer is in the middle of rendering a scene that's gonna take like 10 hours. fun.
I have a suggestions,
"iters/second" isn't really a meaningful metric for speed. A more useful measurement would it be to display something like pixels/fragments per second. Looking through the code it looks like a pretty simple job, and is a lot more meaningful (i have no idea what an "iter" is, and how it relates to how long my rendering will take).
Looking at the ambient occlusion code, I notice you have code written that takes the dot product of the current vector and the normal, and discards vectors whose dot product is less than zero. Except it's commented out… what's the reasoning behind this? Light coming from the opposite direction from the normal shouldn't be factored in for ambient occlusion as it'd have to travel through the object to reach the point in question, wouldn't it?
Furthermore, seeing as ambient occlusion takes up a huge percentage of the processing time(an image with quality 1 takes 2 minutes, with quality 4/5 it takes 20 minutes), discarding vectors with a dot product less than zero would end up discarding half the vectors, and the computer would have to do half the work for ambient occlusion.
The interface freezes a lot during rendering, especially when rendering DOF. Even more problematic is the fact that the taskbar item will often disappear during DOF rendering, so if you have the program minimized and want to stop DOF rendering, you can't because the taskbar item is gone.
I find it very difficult to "explore" fractals because they take so long to render. Even with ambient occlusion disabled and such it can take over 15 seconds for the rendering progress to proceed far enough to truly understand what you're seeing, and coupled with the (necessarily) step-based controls it can be easy to lose your place. Do you have any recommendations on how to make the exploration process faster/easier? Are there any plans for things to make this faster?
I have no idea whether this is feasible or not, but a random idea I had was using opengl to make a polygon-based "rough draft" of the fractal that is configurable by the user. Because it doesn't have to be recalculated each frame, you can have a 30fps environment with WASD+mouse controls etc. for the user to move around in, and when they find a shot they like they can switch to the more detailed mode. Like I said I have no idea whether that's feasible but it would be an amazing addition.
Along the same lines, have you considered turning to actual hardware shaders when available for things like depth of field? The speedup could be immeasurable.
Could you clarify a little how the close-up (zoom) option interacts with the other view options? I have trouble knowing when to change it, and if i don't then rotation and such become impossible.
I thought I had one more, i'll post i if i think of it
Hi, I'm glad you tried to use my program. I will try to answer your questions
Ad 1. iters/second means "fractal formula iterations / second". I measures how fast is calculated fractal formula. It not depend on view, number of iteration and quality of ray-marching. It only counts how many fractal formula iterations is calculated in one second.
Ad 2. I don't know where you found this dot product in ambient occlusion algorithm. Ambient occlusion doesn't use normal vectors and doesn't calculate dot product for analyses rays.
Ambient occlusion based on analyzing of rays is very slow algorithm but quality of final result is very good especially when number of rays is greater than 100 (quality = 3 or 4).
For fast rendering you should use Screen Space Ambient Occlusion algorithm (post processing tab). It is based on z-buffer.
Ad. 3. What operating system are you using? I haven't observed this problem on Linux and Win XP.
Ad 4. Exploration of 3D fractals is really difficult because of lack CPU power for it. Number of needed calculations is too high for todays personal computers. The best way is to use some machine with multiple CPU cores or multiple CPU. You mentioned about using GPU. It is very difficult to build complex and effective algorithm for GPUs because of many branches during calculations. It is possible to create only some basic 3D fractal renderer in opengl. Converting to polygons is also very difficult.
Ad. 5. Calculation of shaders takes only 0.1% of total rendering time. All CPU time is consumed by calculating shape of fractal surface for shaders. GPU will not help.
Ad. 6. Many helpful information you can find on Mandelbulber website http://sites.google.com/site/mandelbulber/home
Please go to download section to download the complete user manual (for older version of Mandelbulber) or go to User Manual section.
Just find your programm, terrific, must learn every thing but ok, just one question, mandelbulb uses the grafic card tu render and it's fast, will you do either ? (please!). Thanks for this wonderfull gift !