News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

[WinChaos] Planning for WinChaos

Started by stanhebben, May 31, 2006, 01:45:09 PM

Previous topic - Next topic

stanhebben

Mnemonic already introduced the WinChaos fractal generator project.

In this thread we would like to plan our project. That means that you can come up with ideas, or discuss each other's ideas. These may be features, technical ideas, ... anything that can help us with the project.

Major questions are:
- how does the main program interface with the plugins?
- what will the plugins have to do? (only rendering, or more? should they apply the gradient? ...)

Anything goes, but make sure it is on-topic. Posts that don't have anything to do with planning should be posted in the other thread.

mnemonic

What certainly leaps to mind is a general modular approach for the solution. We should break down each and every thing into small pieces.

What we will generally need is a display module which is responsible for the drawing area information (width, height and colour depth).
Then a palette module would be nice, where users can adjust the colours being used.

The next thing to consider is that there is a wide variety of fractal types. That leads to the fact that there has to be a means to configure each type of fractal rendering process individually.

The rendering algorithms themself should be organized in plugin DLLs so that each algorithm may be loaded and unloaded individually.

How should the display module operate together with a certain algorithm?

What I'm not certain about is for example whether a mandelbrot drawing algorithm implemented with FPU operations has to be configured in a different way than a mandelbrot drawing algorithm implemented with MMX or SSE operations.
Would it be sufficient to provide one configuration means for all mandelbrot rendering algos?

Another question is: What is the minimum Processor needed to run a Windows 32bit operating system?

We would need a facility that is able to find out which features may be used on a certain machine and according to that a list with the possible render plugins should be created.

Thats my brain-storming stuff for now.
Come on, beat me to death now. ;)
Be kind. Everyone you meet is fighting a hard battle.--Plato
-------
How To Ask Questions The Smart Way

stanhebben

I thought of the following interface for renderer plugins:

- the plugin is a DLL with a single exported function: CreateRenderer
- that function creates a com interface. see the explanation. The interface contains only a few functions
- to obtain it's parameters, CreateRenderer gets a window handler to a window on which components can be placed.
   The handling of these is completely up to the plugin.

DLL function
-------------------
lpIFractalRenderer CreateRenderer(HWND settingspanel, int width, int height, int gradientsize, void* gradient)
   settingspanel: a window on which the renderer can place input components to obtain it's parameters
   width, height: initial size of the rendered image (can be used to pre-allocate memory, for example
   gradient: initial gradient of the image, consists of palettesize dwords
   
   return value: an IFractalRenderer

COM interface
-------------------
IFractalRenderer::QueryInterface does not have to do anything
IFractalRenderer::AddRef and ::Release works as usual

bool IFractalRenderer::SetSize(int width, int height)
bool IFractalRenderer::SetGradient(int gradientsize, void* gradient)
   These are self-explanatory.

void* IFractalRenderer::Render()
   Renders the image, and returns image data. Can return NULL. (for example, when not all parameters are filled in)

daydreamer

I have long had the idea of take rosler and othe strange attractors and make a beautiful hardware accelerated particledemo, that can be viewed from many directions and zoom out and in
but never got time
how does that fit in?
even render output to a texture and render it with hardware with all kinds of filters applied could improve any fractalviewing

stanhebben

I don't know rosler, so could you explain?

Rendering to a texture looks good. Should be put on the list.

Which kind of filters do you have in mind?

I also rendered the mandelbrot fractal by using hardware acceleration. Major problem is that the number of iterations seems to be limited to 255.

daydreamer

Quote from: Stan Hebben on June 09, 2006, 08:41:18 AM
I don't know rosler, so could you explain?

Rendering to a texture looks good. Should be put on the list.

Which kind of filters do you have in mind?

I also rendered the mandelbrot fractal by using hardware acceleration. Major problem is that the number of iterations seems to be limited to 255.
download rosler3d from Ron's site + look at all examples in his old asm dosbook with strange attractors+fractals

stanhebben

Could you post a link to that site?