Auch wenn manche Optimierungen in Anbetracht heutiger Rechner sehr weit führend erscheinen mögen, dennoch hübsch!
Edit: Nicht hübsch ist jedoch die sehr "eigene" Bedienung des ganzen. Insbesondere missfiel mir, dass in Eingabefeldern Backspace und Entfernen keine Wirkung haben, sowie teils nicht offensichtliche Optionen bzw. Reaktionen. Bsp.: Umschalten von Mandelbrot->Julia. Ich habe nicht verstanden dass ich via Klick einen Startwert aussuchen kann, und da die Augen soeben noch auf der Menuleiste waren fielen die neuen Buttons ganz rechts nicht auf. Ich habe erst gewartet ob etwas passiert, nach etwas "gelangweiltem" Umsehen erst habe ich die Buttons für die Aktualisierung entdeckt. Insgesamt fällt die Bedienung ziemlich eigenwillig aus, leider auch nicht im positiven Sinne (finde -ich-).
Das hat zwar nun in keiner Weise etwas mit dem eigentlichen Thema zu tun, aber ich hoffe dass es als konstruktive Kritik dennoch willkommen ist.
Bei derart hochgradig parallelisierbaren Aufgaben gibt es mittlerweile auch noch eine weitere Möglichkeit, die
immense Unterschiede ausmacht:
GPGPU. Ein Problem hat man bei Fraktalen hier allerdings (noch): Fast alle aktuellen GPUs arbeiten mit Single-Precision, wodurch entweder die Zoombarkeit schnell an ihre Grenzen kommt, oder man ist genötigt höhere Genauigkeit via Software (bzw. Shader) zu basteln, was der Geschwindigkeit wieder etwas nimmt - jedoch weit weniger als durch die Bearbeitung auf der GPU gewonnen wurde.
Hierzu empfiehlt sich zudem eine Grafikkarte mit mind.
DirectX 9, da erst ab da die Shader genügend Komfort (= die nötigen Instruktionen) bieten. Mit
DirectX 11 werden allerdings "Compute-Shader" in den Standard aufgenommen, die die Zweckentfremdung der GPU nativ möglich machen. Derzeit ist das noch etwas in den Kinderschuhen und bedarf manchem Kunstgriff (Array=Textur und dergleichen).
Da es leider für
Win32 Delphi keine brauchbare D3D Umsetzung gibt, ist man auf C++ angewiesen. Mit C# habe ich sowas in der Art schon einmal für .NET implementiert, wobei auch hier Hürden zu nehmen sind: Managed
DirectX wurde komplett eingestellt, und wird von MS in keiner Weise mehr supported, geupdated noch sonst etwas. Statt dessen gibt es jetzt XNA, ein Spieleentwichlungs-Framework basierend auf .NET, was aber leider Crossplatform für PC und XBox gedacht ist. Da die XBox eine DX9 kompatible GPU hat, ist bis auf unbestimmte Zeit auf keine "native" D3D Unterstützung für .NET für DX10 und das bereits im Test befindliche DX11 zu erwarten.
Ziemlich ärgerlich, gäbe es da nicht eine kleine aber geniale
OS Truppe, die mit
SlimDX einen bislang DX9 und 10 unterstützenden Wrapper erstellt haben der dem Stil von Managed
DirectX nahezu gleicht - und es ist erstaunlich komplett, sowie aktiv in Betreuung und Weiterentwicklung.
NVidia hat mit
CUDA bereits ein Framework für GPGPU auf aktuellen (NV) GPUs geschaffen, dass ohne Compute-Shader oder Kunstgriffe auskommt. Um dieses sinnvoll einsetzen zu können ist jedoch mit einiger Einarbeitungszeit zu rechnen, insbesondere muss man sich die zu x86/x64 doch SEHR unterschiedliche Architektur der Grafikkarten zu eigen machen. Ob sich dieses mit der Aussicht auf die Compute-Shader noch lohnt wage ich allerdings zu bezweifeln, dennoch sind die Ansätze und Perspektiven ausgesprochen interessant.
CPU und GPU kommen sich immer näher (immer mehr Cores in einer CPU / immer generellere Verwendung von GPUs), und ich kann mir gut vorstellen dass wir in ein paar Jahren diese Unterscheidung gar nicht mehr machen. Daher lohnt es sich denke ich sehr, sich jetzt schon mit Parallel-Computing auch auf Einzelplatzrechnern zu befassen. Ich wittere eine kleine neue Ära in nicht allzu ferner Zukunft
Ich hoffe ich konnte damit zumindest ein wenig Lust auf diese recht spannenden und verhältnismäßig neuen Möglichkeiten machen, und Fraktalmengen sind eines der Paradebeispiele für diese Art der DV.
Schönen Gruß,
Medium
Edit: Schlechtschreibung