Mandelbort Menge / Apfelmänchen als OpenGL Shader

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Mandelbort Menge / Apfelmänchen als OpenGL Shader

Beitragvon veers » Sonntag 27. Januar 2008, 17:19

Ich habe heute etwas mit Pyglet experimentiert. Und dabei etwas Programmiert was ich schon lange einmal machen wollte - die Mandelbrot Menge auf der GPU visualisieren. Das ganze hat auch ziemlich toll geklappt. Auch bei 1680x1050 Pixel und bis zu 250 Iterationen pro Pixel komme ich noch auf 75 FPS (Das Limit meines 75 Herz Displays). Das ganze natürlich ohne CPU Last.

Screenshot:
Bild

Source:
http://29a.ch/mandelbrot/mandelbrot.py.txt

Voraussetzungen:
Python, Pyglet, OpenGL 2.0 kompatible Grafikkarte

Bedienung:
Source Code hat geschrieben:Usage:
You can move arround by dragging with the left mouse button
You can zoom in and out with your mouse wheel
You can toggle the fullscreen mode with the F key
You can toggle the fps display with the F1 key


Vielleicht ist die Shader Klasse ja auch noch für jemand anders nützlich.
Über Feedback würde ich mich freuen!

Gruss,
Jonas
My Website - 29a.ch
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Sonntag 27. Januar 2008, 19:08

Wow, sieht sehr klasse aus! Aber:

1) pyglet war bereits per easy_install bei mir installiert, wollte sich aber partout nicht importieren lassen (am PYTHONPATH lag es nicht). Den 'ZipImportError'(?) bin ich durch erneute Installation mittels '-Z' losgeworden, aber dann klappte der Import immer noch nicht.

Das Ei enthielt nur optimierten Bytecode - was ja nichts ungewöhnliches ist. Als ich dann '__init__.py', meckerte er nicht mehr über den generellen Import, aber zumindest darüber, dass er (wenig verwunderlich) den Rest nicht finden.

Ubuntu hat offenbar kein Paket für pyglet im Angebot, also habe ich es letztlich aus dem Source erstellt ("herkömmlich", ohne setuptools dabei zu nutzen) und dann lief's auch.

2) Beim Starten des Progamms begegnet mir ein weißes Fenster und eine ganze Menge von diesen hier:

Code: Alles auswählen

Mesa 7.0.3 implementation error: User called no-op dispatch function (an unsupported extension function?)
Please report at bugzilla.freedesktop.org


Any ideas?
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Beitragvon Craven » Sonntag 27. Januar 2008, 19:20

Y0Gi hat geschrieben:1) pyglet war bereits per easy_install bei mir installiert, wollte sich aber partout nicht importieren lassen (am PYTHONPATH lag es nicht).

Selbes Problem, anderes Betriebssystem: Windows.

Code: Alles auswählen

q = 'q = %s; print q %% repr(q)'; print q % repr(q)
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Sonntag 27. Januar 2008, 20:21

Craven hat geschrieben:
Y0Gi hat geschrieben:1) pyglet war bereits per easy_install bei mir installiert, wollte sich aber partout nicht importieren lassen (am PYTHONPATH lag es nicht).

Selbes Problem, anderes Betriebssystem: Windows.
Ja, Pyglet hat sich auch bei mir nicht per Easyinstall installieren lassen. Warum auch immer.

Y0Gi,
Sieht aus als würden Shaderprogramme von deiner Grafikkarte/Treiber nicht unterstützt werden. Was verwendest du? Ich habe den Code nur mit Nvidia Karten getestet.
My Website - 29a.ch

"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Sonntag 27. Januar 2008, 21:47

Das sieht ganz toll aus. Aber was hast Du denn für einen Rechner? Ich komme über 10 FPS nur, wenn das Bild ziemlich schwarz ist.
MfG
HWK
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Sonntag 27. Januar 2008, 21:55

HWK hat geschrieben:Das sieht ganz toll aus. Aber was hast Du denn für einen Rechner? Ich komme über 10 FPS nur, wenn das Bild ziemlich schwarz ist.
MfG
HWK
Die 60 FPS erreiche ich mit einer Geforce 8800GT. Der Rest dürfte nicht wirklich relevant sein. Was für eine Grafikkarte verwendest du denn?
My Website - 29a.ch

"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Sonntag 27. Januar 2008, 22:09

In meinem Laptop steckt 'ne schäbige, alte ATI. Gut, viel erwartet hatte ich nicht, aber zumindest, dass es startet ;) Mit den Grafikkarten/-treibern ist das aber ja immer so eine Sache unter Linux, an der die Hersteller nicht unschuldig sind.

Naja, werd's bei Zeiten mal auf ner größeren Maschine testen. Sowas zu programmieren reizt mich jedenfalls sehr.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Beitragvon skypa » Montag 28. Januar 2008, 12:37

Sieht sehr sehr nice aus, werds später ma testen mit meiner GeForce 8600 GS.

Mfg skypa
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Beitragvon Jan-Peer » Montag 28. Januar 2008, 13:15

Also bei mir läuft es gut (Gentoo & 8600 oder 6600 GS - zu faul nachzugucken). Muß allerdings als root ausgeführt werden.

... ich bin begeistert ...
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Montag 28. Januar 2008, 14:01

NVIDIA GeForce 7300 LE
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Montag 28. Januar 2008, 14:45

HWK hat geschrieben:NVIDIA GeForce 7300 LE
Na gut, das ist auch nicht gerade eine schnelle Karte :)
My Website - 29a.ch

"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Beitragvon apollo13 » Montag 28. Januar 2008, 20:27

Hmm hinundwieder bekomm ich beim F1-Tastendruck nen Absturz und folgende Meldung:
Floating point exception

Mehr, nicht...

Achja laufen tuts bei mir zwischen 15 und 50 (je nach Zoom) Frames auf nem Laptop mit ner Geforce Go 7700.
Auf jeden Fall steigt die GPU Temperatur an wenn es länger offen ist und man wild hin un her zoomt^^ Mal schaun bei 110 Grad sollte er runter schalten ;)

EDIT:// Keine Chance, der Lüfter schaltet bei 70° einen Deut höher und dann ist die Temperatur gleich wieder unten...
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Montag 28. Januar 2008, 20:40

apollo13 hat geschrieben:Hmm hinundwieder bekomm ich beim F1-Tastendruck nen Absturz und folgende Meldung:
Floating point exception
Das kann ich mir nicht erklären. Kannst du mir mal einen Stacktrace zukommen lassen?
My Website - 29a.ch

"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Beitragvon nkoehring » Mittwoch 30. Januar 2008, 12:33

Also ich habe Pyglet vorhier nicht gekannt. Hab es spontan mal installiert (die entsprechende .msi unter Vista 64bit) und bekam folgenden Backtrace bei der Ausfuehrung deines Programmes:

Code: Alles auswählen

>D:\Programme\Python25\pythonw.exe -u "glslmandelbrot.py"
Traceback (most recent call last):
  File "glslmandelbrot.py", line 229, in <module>
    main()
  File "glslmandelbrot.py", line 226, in main
    MainWindow().run()
  File "glslmandelbrot.py", line 167, in __init__
    self.shader = Shader(vertex_shader, fragment_shader)
  File "glslmandelbrot.py", line 105, in __init__
    gl.GL_VERTEX_SHADER)
  File "glslmandelbrot.py", line 128, in create_shader
    raise ShaderException(message)
__main__.ShaderException: Vertex shader was successfully compiled to run on hardware.
 
>Exit code: 1


...also eine ShaderException die sagt, das es klappt O_o strange :roll:

Btw: Ich bin einer der rar gewordenen ATI-User. ATI HD2900XT
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Mittwoch 30. Januar 2008, 14:07

In der Tat toll :)
Funktioniert es wenn du die Zeile 128 durch ein pass ersetzt?
My Website - 29a.ch

"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder