eine der ungeahnte Möglichkeiten ist hier zu sehen: Fraktale
Dort habe ich auch mit CustomFilterCallback() ein CallBack geschrieben der mir halt zB die Mandelbrotmenge erzeugt.
Und das nicht einfach nur so, sonden auch mit einem netten Farbeffekt.
Aber du hast recht, CustomFilterCallback() ist ein sehr mächtiges Werkzeug.
EDIT: Vorallem weil man ja nicht nur immer n BOX zeichen muss, sonden auch Texte und Schriften...
Performance erhöhen
Re: Performance erhöhen
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: Performance erhöhen
Nur so nebenbei, wer mit CustomFilterCallback klarkommt kommt auch mit Shadern klar. Dadurch lässt sich das ganze noch sehr beschleunigen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Re: Performance erhöhen
Meinst Du mit Shadern das "direkte programmieren des Grafikchips"?DarkDragon hat geschrieben:Nur so nebenbei, wer mit CustomFilterCallback klarkommt kommt auch mit Shadern klar. Dadurch lässt sich das ganze noch sehr beschleunigen.

[Edit:]
Jupp, da kommt mir sofort in den Sinn, dies bei der Generierung bestimmter Druckerausgaben zu verwenden, um z.B. Toner und Tinte einzusparen (also um z.B. nur jeden 2. Pixel schwarz zu machen).STARGÅTE hat geschrieben:Vorallem weil man ja nicht nur immer n BOX zeichen muss, sonden auch Texte und Schriften...

[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
-
- Beiträge: 134
- Registriert: 18.10.2005 10:22
- Wohnort: Welschbillig
Re: Performance erhöhen
Noch einen Gamma Filter dazu und schon ist es Ästhetisch ansprechend.STARGÅTE hat geschrieben:Hier mal meine "Version", wie man ein Potentialfeld darstellen kann, in dem 10 Ladungen vertielt sind (positiv und negativ)
Code: Alles auswählen
Enumeration
#Window : #Gadget : #Image
EndEnumeration
#x = 64
#y = 64
Structure Ladung
x.f : y.f : q.f
EndStructure
Global NewList Ladung.Ladung()
; Ladungen erstellen
RandomSeed(6)
For n = 1 To 10
AddElement(Ladung())
Ladung()\x = Random(#x) ;-20)+10
Ladung()\y = Random(#y) ;-20)+10
Ladung()\q = 255*(Random(1)*2-1)
Next
; Potentialfeld
Procedure Ladungen(x, y, QuellFarbe, ZielFarbe)
Protected q.f, qi.f
ForEach Ladung() : With Ladung()
qi = \q / Sqr((x-\x)*(x-\x)+(y-\y)*(y-\y))
q + qi
EndWith : Next
;Debug q
Color = RGB(0,255,0)
If q <= 255
If q >= 0
Color = RGB(0,q,0)
ElseIf q >= -255
Color = RGB(-q,0,0)
Else
Color = RGB(255,0,0)
EndIf
EndIf
r = Pow(( Red(Color)/255),0.5)*255
g = Pow((Green(Color)/255),0.8)*255
;b = Pow(( Blue(Color)/255),0.8)*255
Color = RGB(r,g,b)
ProcedureReturn Color
EndProcedure
CreateImage(#Image, #x, #y, 24)
StartDrawing(ImageOutput(#Image))
DrawingMode(#PB_2DDrawing_CustomFilter)
CustomFilterCallback(@Ladungen())
Box(0,0,#x,#y)
StopDrawing()
ResizeImage(#Image, 512, 512)
SetClipboardImage(#Image)
OpenWindow(#Window, 0, 0, ImageWidth(#Image), ImageHeight(#Image), "Image", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#Gadget, 0, 0, ImageWidth(#Image), ImageHeight(#Image), ImageID(#Image))
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
PS: @PureLust
Gammafilter und Co. sind Sinnvolle Anwendungen für CustomFilterCallback()