#1 29.01.2005 13:54:57

Martin Pyka
Member
Ort: Münster
Registriert: 24.01.2005
Beiträge: 95
Web-Seite

Praktische Units

wenn man an grösseren Projekten arbeitet, dann macht es sinn, sich units für klassen und immer wieder nötige funktionen anzulegen, sozusagen kleine werkzeug-koffer. was haltet ihr davon, wenn wir in diesem thread sämtliche praktische units zur verfügung stellen, die vielleicht auf euren festplatten schlummern und die andere für ihre arbeiten gut gebrauchen könnten.

hier ist nochmal meine dxhelp mit vielen funktionen zur erstellung von devices, texturen, und ermittlung von kollisionen, mit vielen kommentaren.

wäre schön, wenn ihr auch was der "community" zur verfügung stellen könntet.

Edit by Coolcat: Saug-Link jetzt im Code-Libary-Forum

Offline

 

#2 29.01.2005 14:12:58

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Praktische Units

Ok - ich werde mal ein wenig in meinen Zeug rumkramen ...

Aber eines würde ich empfehlen - keine Mathe-Unit zu machen, die Funktionen hat, die auch das MS-SDK hat, denn eigene Funktionen werden hier bestimmt immer langsamer sein ... Hab ich in mehreren Tests "erfahren" müssen.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#3 29.01.2005 16:21:00

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Praktische Units

Zitat:

werden hier bestimmt immer langsamer sein

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...
Allerdings ist es oft sinnvoll sich Funktionen zu basteln, die eben bestimmte Operationen vermeiden und dadurch schneller sind....

Ich werde mal einwenig auf meiner Platte suchen, da findet sich sicher einiges...

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#4 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#5 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#6 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#7 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#8 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#9 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#10 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#11 29.01.2005 17:17:00

Guest
Gast

Re: Praktische Units

Den Göttern sei Dank... hab schon befürchtet ich muss mich jetzt extra registrieren nur um Coolcat zu wiedersprechen, aber zum Glück geht das auch so *g*  big_smile

Zitat:

Wer glaub er könnte eine Funktion schreiben die bei gleicher Funktionalität schneller ist als die entsprechende Funktion aus der DirectX-Lib der is auf dem Holzweg...

Also ich kann das sehr wohl und bin auch nicht auf dem Holzweg wink Inlining heisst das Zauberwort - geht jetzt endlich mit Delphi 2005. D.h. statt dem call wird der entsprechende Funktionscode direkt an die Stelle eingefügt, man spart damit einen Sprung und natürlich die Parameterübergabe - was sich jedoch erst bei >4 Parametern auswirkt, da Delphi (im Gegensatz zu C++, wie ich anmerken möchte) die ersten 4 Parameter über Register übergibt und daher die performance alleine durch den Sprung, nicht so sehr durch die Parameter verloren geht. Aber man sollte auch durchaus überlegeb ob inlining an der entsprechenden Stelle Sinn macht - das ist in der Regel der Fall wenn ein Funktionsaufruf extrem oft erfolgt und der ausgeführte code nur aus einigen Zeilen besteht.

JorEl

 

#12 29.01.2005 17:25:33

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Praktische Units

Inlining hab ich auch in den letzten Tagen kennen gelernt und es ist wirklich, wenn man es sinnvoll einsetzt, verdammt schnell.
Leider hab ich kein Delphi2005  :evil:

@Coolcat: kA ob wir aneinander vorbei reden big_smile ... ich glaube auch nicht, dass man DX-Funktionen optimieren kann.
Selbst wenn man Berechnungen auslässt, die unnötig sind, ist es immer noch sehr schwer die eigene Funktion schneller zu machen als dieselbe von DX.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#13 29.01.2005 17:46:42

JorEl
ExtremeMember
Registriert: 29.01.2005
Beiträge: 894

Re: Praktische Units

Zitat:

Leider hab ich kein Delphi2005

Ich auch nicht, hatte leider nur die Architect Trial installiert - werde aber vermutlich in den nächsten Wochen von meiner Delphi 7 Pro updaten - vor allem weil es an der Zeit ist, richtung .NET zu wechseln, sonst wird es dann der Horror mit der nächsten DirectX Version (wie auch immer sie am Ende heissen mag, sie wird vermutlich nicht mehr für win32 ausgelegt sein).


Jesus hat gesagt - selig sind die, die da Leid erfahren, denn sie sollen getröstet werden... Ford Prefect hat gesagt - es ist unheimlich wichtig, dass wir miteinander reden und einen trinken.

Offline

 

#14 29.01.2005 18:25:00

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Praktische Units

Ok, inlineing macht schon was aus.....(wusste nich das das in Delphi geht...)

Aber wirklich Zeit sparen kann man nur bei Berechungen für die die DirectX-Funktion eigentlich nicht gedacht ist, einer Kombination von DirectX-Funktionen bei der unnötige Ergebnisse berechnet werden oder wenn man nur ein ungefähres Ergebnis braucht...(nach dem Motto sqrt(5) == 2.0)

Naja is auch wurscht lol , wer gute/sinnvolle Funktionen/Prozeduren hat, der soll sie hier mal posten (also als Attachment). Kann ja jeder selbst entscheiden, ob er die einsetzen will oder nicht.

Zitat:

extra registrieren

Du brauchst nicht mal freizuschalten....die sonst übliche EMailfreischaltung ist aus...
Ist also wirklich nur ne Sache von 30 sek sich hier anzumelden...


My software never has bugs. It just develops random features.

Offline

 

#15 29.01.2005 18:32:06

JorEl
ExtremeMember
Registriert: 29.01.2005
Beiträge: 894

Re: Praktische Units

Zitat:

Du brauchst nicht mal freizuschalten....die sonst übliche EMailfreischaltung ist aus...
Ist also wirklich nur ne Sache von 30 sek sich hier anzumelden...

Hab ich schon gemacht - das voting funktioniert nämlich nicht ohne Registrierung :-)

Zitat:

bei der unnötige Ergebnisse berechnet werden oder wenn man nur ein ungefähres Ergebnis braucht

Stimmt... da kann man approximativ schon einiges rausholen mit numerischen Näherungsverfahren. Wenn Interesse besteht: ich hab irgendwo von einem Numerikprojekt eine Approximation des Integrals (Romberg Integral) einer Funktion rumliegen die beliebig skalierbar auf performance/Genauigkeit ist - natürlich auf einem Intervall [a,b], d.h. es gilt nur für das bestimmte Integral - setzt selbstverständlich auch voraus, dass f(x) stetig ist in [a,b]. Nützlich könnte die bei so Features wie cloud shading und dergleichen sein. Die zu integrierende Funktion kann praktischerweise als function f(x : extended) : extended; implementiert werden.

JorEl


Jesus hat gesagt - selig sind die, die da Leid erfahren, denn sie sollen getröstet werden... Ford Prefect hat gesagt - es ist unheimlich wichtig, dass wir miteinander reden und einen trinken.

Offline

 

#16 29.01.2005 21:41:35

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Praktische Units

So....ich stelle mal meine QuadTree-Klasse.
Ich hab die gerade mal notdüftig kommentiert, aber ich will das ganze ja nicht grundlos neuschreiben lol Dürfte jedenfalls trotzdem für einige interessant sein.
Bei Fragen, einfach hier im Forum...

Features:
· Quadtree basiertes Terrain
· Aufteilung in Nodes (die nochmals in Tiles aufgeteilt werden)
· Optimierter Indexbuffer
· Texturerzeugung zur Laufzeit, geeignet für KURZE Sichtweiten
· Beliebig viele Layer ohne Shader!!!
· Berechnung im voraus, pro Frame muss nur eine 64x64 Pixel Textur berechnet werden
· Berechnet die 3D-Position des Cursors auf dem Terrain

Später (morgen??) will ich noch folgende Klassen hochladen:
· *.3ds-Loader Klasse (primitiv)
· Klasse zum bearbeiten von Texturen
· Klasse für ein Partikelsystem (incl. Wind und VFD (pro Partikel))
· vielleicht find ich auch noch einige andere interesannte Methoden


Edit: Saug-Link im Code-Libary-Forum

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#17 30.01.2005 09:32:42

MexDelphi
ProMember
Ort: Göppingen
Registriert: 24.01.2005
Beiträge: 235
Web-Seite

Re: Praktische Units

hallo,

tja ... leider kann ich nix mehr hochladen ...

Du kannst Dateien in diesem Forum nicht posten 

schade eigentlich smile


goto: http://mexdelphi.cybton.com

Offline

 

#18 30.01.2005 11:20:52

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Praktische Units

schick es mir einfach (oder jemand anderen) per mail und ich (bzw. derjenige) lad (lädt) es für dich hoch ...


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#19 30.01.2005 12:26:31

MexDelphi
ProMember
Ort: Göppingen
Registriert: 24.01.2005
Beiträge: 235
Web-Seite

Re: Praktische Units

artzuk
smile ... im Profil die E-Mail einschalten


goto: http://mexdelphi.cybton.com

Offline

 

#20 30.01.2005 12:29:16

maximov
Member
Ort: Hamburg
Registriert: 25.01.2005
Beiträge: 84

Re: Praktische Units

@Martin: Sehr gute idee! Sowas wie eine kleine code-lib ist sicher sehr sinnvoll. Ich zweifle aber an, das es der übersicht förderlich ist, dies alles in einem thread zu tun. Zb. diskusionen, über verbesserungen bestimmten funktionen und units, würde so nur durcheinander gehen.

Deshalb mein vorschlag, hier für eine sparte einzurichten, sodaß auch die suchfunktion auf die richtige units anspringt und nicht auf alle units, die wir irgendwann mal gepostet haben. Neue versionen können dann auch im richtigen kontext angefügt werden. IMO gibt es 100 gründe das nicht alles in einen thread zu tun.

Was meint ihr?


maximov (aka maDXam or IDKFA)

Offline

 

#21 30.01.2005 16:29:55

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Praktische Units

gute Idee, extra Unterforum aufmach...


My software never has bugs. It just develops random features.

Offline

 

#22 30.01.2005 16:56:10

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Praktische Units

So das neue SubForum ist offen und ich hab die beiden Files auch direkt neuhochgeladen....

Diese Diskussion bitte im anderen Forum fortführen.

*close


My software never has bugs. It just develops random features.

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson