simpleIrrlicht - Irrlicht in "Einfach"

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite Zurück  1, 2, 3 ... 10, 11, 12, 13, 14, 15  Weiter

Worklogs simpleIrrlicht - Irrlicht in "Einfach"

Die hard

Dienstag, 13. Oktober 2009 von Farbfinsternis
Auch heute werde ich keine neue Version präsentieren können da die Shader-Geschichte einige Fallstricke bereit hält die nicht abzusehen waren. Das Framework XEffects stellt eine "Lichtquelle" bereit die Parameter haben will deren Werte ich nicht weiß. Einfaches raten hat mich heute gut 4 Stunden gekostet und zu keinem brauchbaren Ergebnis geführt. Desweiteren funktioniert ein "Bloom" zwar unter OpenGL, unter DX wird aber nur das ScreenRTT angezeigt und sonst nichts, auch nicht so witzig.
Ein weiterer "Verzögerer" ist die Tatsache dass ich nicht hunderte neue Befehle einführen will um Shader Entites anders behandeln zu können als normale Entities, so nehme ich in den vorhandenen Funktionen Fallunterscheidungen vor. Zum Beispiel prüfe ich in s3d_LightCastShadows() ob der ShadowMode nun 1 oder 2 ist um im ersten Fall Stencilbuffer Shadows und im zweiten Fall ShadowMaps erzeugen zu können. Diese Philosophie hat es nun mit sich gebracht das weite Teile der Engine erweitert werden mussten und nun eigentlich nichts mehr so funktioniert wie es vorher war. Das heißt: Erstmal aufräumen damit das wieder geht was vorher schon ging und dann nachschauen warum diese verf****en ShadowMaps nicht das tun was ich will.

Hier noch das Changelog der letzen Tage:
Code: [AUSKLAPPEN]

13.10.2009 Version 0.18
added   s3d_SetShadowMapSize()
added   s3d_EntityLighting()
added   s3d_AmbientLight()
added   s3d_SLightLookAt()
added   s3d_LightRadius()
changed   s3d_LightCastShadows()
changed s3d_EntityShadow()


12.10.2009 Version 0.17
added   XEffects Shaderframework by Blindside
added   s3d_ShadowOptions()
added   s3d_ShaderDir()
changed   s3d_Options()            ; Parameter "shadows" entfernt


Stay tuned!

XEffects

Montag, 12. Oktober 2009 von Farbfinsternis
Seit Freitag habe ich gebastelt, gegrübelt und gefragt. Nachdem ich dann durch ausprobieren selbst die Lösung gefunden habe konnte ich XEffects von BlindSide integrieren.

Was XEffects ist? Nun, ein Shader Framework welches einfachen Zugriff auf zahlreiche Effekte und eigene Shader ermöglicht.

Auf Basis von XEffects baue ich gerade ShadowMaps in simple3D ein. Diese werden per Shader berechnet und haben folgende Eigenart: Die FPS werden erstmal einbrechen wenn man sie verwendet, aber sie werden nicht weiter minimiert wenn man mehr Objekte mit ShadowMaps verwendet, im Gegensatz zu den derzeitigen Stencil Buffer Shadows wo jedes weitere Objekt die Performance extrem reduziert.

Zudem sind ShadowMaps genauer als StencilBuffer Shadows und man kann mit ihnen SoftShadows erzeugen (auf kosten der Performance).

Alte onBoard Chipsets bleiben da natürlich aussen vor, unter Pixelshader Model 2.0 ist da kaum was zu holen, aber die Fetischisten unter Euch können aufatmen: s3d wird ShadowMaps nicht zwingend verwenden, man kann sie ebenso abschalten wie man derzeit die SB-Shadows abschalten kann.

Ich denke dass ich morgen abend V0.17 veröffentlichen kann, dann könnt ihr die neuen Schatten begutachten.

V0.15 besiegt irrKlang

Donnerstag, 8. Oktober 2009 von Farbfinsternis
Letzten Endes habe ich irrKlang nun doch in das Projekt einbinden können. Hier das Changelog für die letzten Versionen.

Code: [AUSKLAPPEN]

08.10.2009 Version 0.15
added   s3d_SetAudioDriver()
added   s3d_GetAudioDriver()
added   s3d_LoadSound()
added   s3d_Play3DSound()
added   s3d_Play3DFromFile()
added   s3d_PositionSound()
added   s3d_CameraListener()
added   s3d_MasterSoundVolume()
changed   in s3d_RenderWorld() ISoundEngine::update() hinzugefügt


07.10.2009 Version 0.14
Es gibt keine Unterscheidung zwischen Mesh und AnimMesh mehr. Jedes Mesh wird grundsätzlich als AnimMesh behandelt.

changed   s3d_LoadAnimMesh()   -> s3d_LoadMesh()


06.10.2009 Version 0.13
changed   gesamte Struktur geändert um Newton Objekte translieren zu können
added   s3d_SetGravity()


05.10.2009 Version 0.12
changed   Abhängigkeiten von den CRT Libraries wurden entfernt


02.10.2009 Version 0.11
added   s3d_CreateFPSCamera()
added   s3d_AddZip()
added   s3d_CreateSphere()
added   s3d_ScaleEntity()
added   s3d_EntityShadow()
added   s3d_LoadAnimMesh()
added   s3d_ScaleMesh()
added   s3d_LightCastShadows()
added   s3d_EntityPhysics()
added   s3d_HideEntity()
added   s3d_ShowEntity()
fixed   s3d_AppTitle()


01.10.2009 Version 0.10
changed   Init()             -> s3d_Init()
changed Gfx3D()            -> s3d_Graphics3D()
changed SetEngineOptions()   -> s3d_Options()
changed GetFPS()         -> s3d_GetFPS()
changed Render()         -> s3d_RenderWorld()
changed SetClsMode()      -> s3d_ClsMode()
changed SetClsColor()      -> s3d_ClsColor()
changed KillEngine()      -> s3d_Drop()
changed AddCamera()         -> s3d_CreateCamera()
changed AddCube()         -> s3d_CreateCube()
changed AddLight()         -> s3d_CreateLight()
changed EntityPosition()   -> s3d_PositionEntity()
changed EntityTurn()      -> s3d_TurnEntity()
added   s3d_MoveEntity()
added   s3d_KeyDown()
added   s3d_KeyHit()


30.09.2009 Version 0.0

added   Init()
added   Gfx3D()
added   SetEngineOptions()
added   GetFPS()
added   Render()
added   SetClsMode()
added   SetClsColor()
added   KillEngine()
added   AddCamera()
added   AddCube()
added   AddLight()
added   EntityPosition()
added   EntityTurn()


>> Download simple3D | Blitz3D v0.15 (ca. 1,9MB) inkl. Beispiel <<

Viel Spaß mit 3D Sound Wink

Irrklang, die Sau

Mittwoch, 7. Oktober 2009 von Farbfinsternis
Durch die Tatsache das ich irrKlang nicht statisch linken kann, ergibt sich das Problem das Blitz3D die irrKlang.dll nicht lädt. Um mich nun nicht wochenlang mit diesem Problem beschäftigen zu müssen habe ich folgende Entscheidung getroffen:

irrKlang wird später als separater Wrapper kommen, bis dahin verzichten BlitzPlus User auf 3D Sound, Blitz3D User können das in Blitz3D eingebaute 3D Sound System verwenden und für BlitzMax steht OpenAL zur Verfügung.

In den Comments erwähnte ich dass ich im aktuellen Sample ~1400 FPS bekomme, nach den letzten Optimierungen komme ich auf über 2000 FPS .. ich denke das ist eine ordentliche Optimierung und das lässt sich auch noch steigern indem ich ShadowMaps via Shader einführe und Physikobjekte lösche sobald sie nicht mehr benötigt werden. Insgesamt denke ich dass ich auf meinem System (Dual Core 2.1GHz + GF8800GTS) an die 3000 FPS kommen kann (mit dem aktuellen Sample).

Desweiteren lassen sich die Entities in sog. CollisionTrees zusammen fassen was eine weitere Performance Steigerung zur Folge hätte.

Weiterhin zu bemerken ist die Tatsache das simple3D (im Gegensatz zu Blitz3D) nicht mehr zwischen AnimMesh und Mesh unterscheidet. Jedes Mesh wird als animiertes Mesh behandelt, ob es nun Animationen beinhaltet oder nicht. Extra Prozessorkraft ist dafür nicht notwendig und das Mehr an Speicher beläuft sich auf einige Bytes.

Die Version 0.15 gedenke ich morgen zu releasen.

Immer wieder was neues

Dienstag, 6. Oktober 2009 von Farbfinsternis
Bisher gaben die "Create" und "Load" Funktionen immer direkt einen Zeiger auf die entsprechenden Nodes der Irrlicht Engine zurück. Schwerer Fehler.
Wenn ich ein Mesh skaliere weiß ich nicht ob das Mesh auch ein Physik-Objekt ist welches per EntityPhysics() definiert wurde. Also habe ich das Objekt TEntity gebastelt und lasse alle Funktionen über dieses Objekt kommunizieren. In TEntity sichere ich das Newton Objekt und kann so sicher stellen dass Physik Objekte ihre neue Matrix erhalten wenn sie skaliert werden.

Wegen dieser Änderung musste ich nicht nur den Großteil des C++ Source modifizieren, sondern auch die DECLS und das BlitzMax Modul. Dezeit läuft simple3D nicht, ich gehe davon aus dass ich morgen abend eine neue, lauffähige Version hochladen kann.

Einzige neue Funktion für die Version 0.13 ist s3d_SetGravity().

irrKlang ist nun eingebaut. Es gibt noch keinerlei Funktionen welche irrKlang verwenden, aber der Link zur irrKlang.dll ist da. Ich kann irrKlang leider nicht statisch linken, da ich dann jeden Benutzer von simple3D dazu zwingen würde irrKlang für 65,-€ zu kaufen ... ich werde mich darum kümmern dass das geändert werden kann.

Geht nicht gibts nicht!

Montag, 5. Oktober 2009 von Farbfinsternis
Offenbar konnte ich die Abhängigkeiten auflösen die dafür gesorgt haben dass s3d unter Blitz3D nur bei mir lief. Nun also das aktuelle Archiv, das Sample und das übliche Changelog.

Code: [AUSKLAPPEN]

05.10.2009 Version 0.12
changed   Abhängigkeiten von den CRT Libraries wurden entfernt


02.10.2009 Version 0.11
added   s3d_CreateFPSCamera()
added   s3d_AddZip()
added   s3d_CreateSphere()
added   s3d_ScaleEntity()
added   s3d_EntityShadow()
added   s3d_LoadAnimMesh()
added   s3d_ScaleMesh()
added   s3d_LightCastShadows()
added   s3d_EntityPhysics()
added   s3d_HideEntity()
added   s3d_ShowEntity()
fixed   s3d_AppTitle()


01.10.2009 Version 0.10
changed   Init()          -> s3d_Init()
changed Gfx3D()         -> s3d_Graphics3D()
changed SetEngineOptions()   -> s3d_Options()
changed GetFPS()      -> s3d_GetFPS()
changed Render()      -> s3d_RenderWorld()
changed SetClsMode()      -> s3d_ClsMode()
changed SetClsColor()      -> s3d_ClsColor()
changed KillEngine()      -> s3d_Drop()
changed AddCamera()      -> s3d_CreateCamera()
changed AddCube()      -> s3d_CreateCube()
changed AddLight()      -> s3d_CreateLight()
changed EntityPosition()   -> s3d_PositionEntity()
changed EntityTurn()      -> s3d_TurnEntity()
added   s3d_MoveEntity()
added   s3d_KeyDown()
added   s3d_KeyHit()


30.09.2009 Version 0.0

added   Init()
added   Gfx3D()
added   SetEngineOptions()
added   GetFPS()
added   Render()
added   SetClsMode()
added   SetClsColor()
added   KillEngine()
added   AddCamera()
added   AddCube()
added   AddLight()
added   EntityPosition()
added   EntityTurn()


Die Installation ist im ReadMe beschrieben, ein vorkompiliertes Beispiel befindet sich im Ordner "sample".

Die DLL ist nun soweit gediegen dass ich derzeit das Interface für BlitzMax neu implementiere. Funktioniert super ... das bedeutet das eine DLL für BlitzPlus, Blitz3D und BlitzMax genügt. Unter BlitzMax heissen die Befehle etwas anders (kein "s3d_") aber sonst kann nun jeder von jedem abgucken.

Bevor ich nun den Blitz3D Sprachschatz komplett wrappe kommt noch irrKlang hinzu um geilen 3D Sound generieren zu können. Alles was danach kommt ist reine Fleißarbeit.

>> Download simple3D | Blitz3D v0.11 (ca. 2,7MB) inkl. Beispiel <<

Blitz3D, simple3D und Newton

Freitag, 2. Oktober 2009 von Farbfinsternis
Mit der Version 0.11 kann simple3D|Blitz3D auch Newton Physics.

user posted image

Hier noch auf die Husche das aktuelle Changelog:

Code: [AUSKLAPPEN]

02.10.2009 Version 0.11
added   s3d_CreateFPSCamera()
added   s3d_AddZip()
added   s3d_CreateSphere()
added   s3d_ScaleEntity()
added   s3d_EntityShadow()
added   s3d_LoadAnimMesh()
added   s3d_ScaleMesh()
added   s3d_LightCastShadows()
added   s3d_EntityPhysics()
added   s3d_HideEntity()
added   s3d_ShowEntity()
fixed   s3d_AppTitle()


01.10.2009 Version 0.10
changed   Init()          -> s3d_Init()
changed Gfx3D()         -> s3d_Graphics3D()
changed SetEngineOptions()   -> s3d_Options()
changed GetFPS()      -> s3d_GetFPS()
changed Render()      -> s3d_RenderWorld()
changed SetClsMode()      -> s3d_ClsMode()
changed SetClsColor()      -> s3d_ClsColor()
changed KillEngine()      -> s3d_Drop()
changed AddCamera()      -> s3d_CreateCamera()
changed AddCube()      -> s3d_CreateCube()
changed AddLight()      -> s3d_CreateLight()
changed EntityPosition()   -> s3d_PositionEntity()
changed EntityTurn()      -> s3d_TurnEntity()
added   s3d_MoveEntity()
added   s3d_KeyDown()
added   s3d_KeyHit()


30.09.2009 Version 0.0

added   Init()
added   Gfx3D()
added   SetEngineOptions()
added   GetFPS()
added   Render()
added   SetClsMode()
added   SetClsColor()
added   KillEngine()
added   AddCamera()
added   AddCube()
added   AddLight()
added   EntityPosition()
added   EntityTurn()


Die aktuelle Version kann unter altbewährten Link herunter geladen werden ....

>> Download simple3D|Blitz3D Version 0.11 << (ca. 1,3MB)

Für diejenigen die nichts installieren und/oder kompilieren wollen oder gar kein Blitz3D besitzen habe ich ein ausführbares Sample vorbereitet:

s3D|B3D V0.11 Sample (ca. 1,3MB)


Viel Spaß damit.

simple3D B3D 0.1

Donnerstag, 1. Oktober 2009 von Farbfinsternis
In der aktuellen Version habe ich die Bezeichner umgestellt, Bugs entfernt und drei weitere Funktionen hinzugefügt. Das Changelog kann das immer so nett zusammen fassen:

Code: [AUSKLAPPEN]

01.10.2009 Version 0.1
changed   Init()          -> s3d_Init()
changed Gfx3D()         -> s3d_Graphics3D()
changed SetEngineOptions()   -> s3d_Options()
changed GetFPS()      -> s3d_GetFPS()
changed Render()      -> s3d_RenderWorld()
changed SetClsMode()      -> s3d_ClsMode()
changed SetClsColor()      -> s3d_ClsColor()
changed KillEngine()      -> s3d_Drop()
changed AddCamera()      -> s3d_CreateCamera()
changed AddCube()      -> s3d_CreateCube()
changed AddLight()      -> s3d_CreateLight()
changed EntityPosition()   -> s3d_PositionEntity()
changed EntityTurn()      -> s3d_TurnEntity()
added   s3d_MoveEntity()
added   s3d_KeyDown()
added   s3d_KeyHit()


30.09.2009 Version 0.0

added   Init()
added   Gfx3D()
added   SetEngineOptions()
added   GetFPS()
added   Render()
added   SetClsMode()
added   SetClsColor()
added   KillEngine()
added   AddCamera()
added   AddCube()
added   AddLight()
added   EntityPosition()
added   EntityTurn()


Mir wurde berichtet dass sich das Sample nicht kompilieren liesse, ist das ein allgemeines Phänomen oder kann jemand da draussen das Beispiel erfolgreich übersetzen?

Ich poste hier mal nur den Abschnitt der readme.txt welcher die Installation beschreibt, vielleicht liegt es ja nur daran dass die Dateien nicht an ihren korrekten Ort geschoben wurden:

Zitat:

Installation:
kopiert den Inhalt des Verzeichnisses "userlibs" in euer userlibs Verzeichnis (bspw: "C:\Blitz3D\userlibs\") und die s3d.dll in den Projekt-Ordner.


Der Link ist derselbe wie beim letzten Mal, nur das Päckchen ist etwas größer (ca. 4,7MB).

Have Fun!

Blitz3D Irrlicht anyone?

Mittwoch, 30. September 2009 von Farbfinsternis
simple3D - Blitz3D / Version 0.0000001 Wink

Dies ist das erste lauffähige Kompilat von s3D-B3D, deshalb kann es noch nicht viel und ist auch noch nicht bugfrei. So darf man seinen Code derzeit nicht im DebugMode laufen lassen weil dann der blitzcc abschmiert. Warum genau das so ist muss ich erst analysieren.


Installation:
kopiert den Inhalt des Verzeichnisses "userlibs" in euer userlibs Verzeichnis.

>> Bevor ihr das Sample ausführen könnt, müsst ihr die s3d.dll aus dem userlibs Verzeichnis auch in das Verzeichnis mit der test.bb kopieren!


Wichtig:

Die Irrlicht Engine schnappt Blitz3D die Events unter dem Hintern weg, man kann also keine Input-Befehle wie KeyHit() usw. verwenden. Da der EventReceiver der Irrlicht Engine noch nicht umgesetzt ist, ist es ratsam die Test-App nicht in den Fullscreen-Modus zu schalten, da kommt ihr nie wieder raus Wink Startet den Test im Release-Mode und im Fenster (wie vorgegeben) und beendet sie indem ihr das Fenster schließt.

Im Gegensatz zu Blitz3D gibt Render() eine 1 zurück wenn der Grafikkontext aktiv ist und 0 wenn er geschlossen wurde. Es ist ratsam darauf zu reagieren da sonst die App ewig weiter läuft. Vor dem Ende sollte KillEngine() aufgerufen werden damit der Speicher wieder freigegeben wird den die Irrlicht Engine belegt hat. Der Hausmeister (GC) von Blitz3D kann das nicht tun da er nicht weiß dass ihr in seinem Vorgarten eine DirectX9 Party veranstaltet habt!

Alles in Allem soll dieser Test nur zeigen dass simple3D für BlitzMax und Blitz3D funktioniert.

Viel Spaß!

Download s3DB3D (ca. 1,8MB)

user posted image

Zwischenbericht

Dienstag, 29. September 2009 von Farbfinsternis
Ich habe zwar eben Version 0.23 hochgeladen, aber befriedigend ist das Release nicht. Eigentlich wollte ich heute schon PerPixelLighting drin haben, aber das lässt eine BMax App derzeit noch ohne sichtbare Gründe abschmieren ... schade eigentlich.

Neu ist EntityImpulse(). Mit dieser Funktion kann man einen Kraftimpuls auf ein Entity auslösen welches als Physikobjekt definiert wurde. Im Sample ist der Kraftpunkt noch sehr undefiniert weil noch keine Funktionen implementiert sind welche den exakten Punkt auf einem Entity ermitteln, aber auch das wird sich noch ändern.

Hier noch kurz die neuesten Einträge im ChangeLog
Code: [AUSKLAPPEN]

>> 65 Funktionen implementiert <<


29.09.2009 Version 0.23
added EntityImpulse()
added EntityFXMaterial()


28.09.2009 Version 0.22
changed   MaterialColor()      -> EntityColor()
changed MaterialSpecColor()   -> EntitySpecColor()
changed MaterialShininess()   -> EntityShininess()
changed MaterialAmbient()   -> EntityAmbient()
changed MaterialEmissive()   -> EntityEmissive()
added   EntityPick()
added   EntityLighting()
added   GetEntityID()


...und ein Screenshot. Der ähnelt dem letzten frappierend. Anders ist dass ein Objekt unter dem Mauszeiger heller erscheint und dass man ihn mit [SPACE] herum schubsen kann.

user posted image

Der Link zum aktuellen Release ist derselbe wie immer...

simple3D V0.23 (ca. 3,9MB)

Gehe zu Seite Zurück  1, 2, 3 ... 10, 11, 12, 13, 14, 15  Weiter