SoftPixel Engine Wrapper 2.0 (only for B3D)

Übersicht Sonstiges Projekte

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter

Neue Antwort erstellen

ZaP

BeitragMo, Jun 07, 2010 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
IDEaL stellt dafür so ein Code-Snippet zur verfügung, das könnte helfen:

Code: [AUSKLAPPEN]
Function SetCameraFOV(Camera, FOV#)
    ; Author: sswift
    ; Description: Sets the field of view of the camera with degrees instead of a seemingly  incomprehensible "zoom" value.
CameraZoom Camera, 1.0 / Tan(FOV#/2.0)
End Function
Starfare: Worklog, Website (download)

LukasBanana

BeitragMo, Jun 07, 2010 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Formel Very Happy
Hab sie umgestellt, wie man's halt so in der Schule gelernt hat ^^ und jetzt funktioniert der Kamera zoom perfekt!

Das problem mit VertexAlpha habe ich ja jetzt bei mir schon auf 0.0-1.0 gesetzt.
Aber das mit der Transparenz is ne ganz fiese Geschicht, ich weiß woran's liegt, aber noch nicht so ganz genau wie ich das löse:

Jede 3D Engine muss, damit Alpha-blending einiger maßen richtig funktioniert, alle Objekte der Tiefe nach sortieren. Von hinten nach vorne, also von der Kamera weiter entferntere Objekte zu erst.
Das problem ist im Moment bei deinem Beispiel, dass das transparente Objekte weiter von der Kamera entfertn ist (nämlich exakt 2 Einheiten) wärend die SkyBox 0 Einheiten von der Kamera entfernt ist.
Das heißt also, dass das transparente Objekt zu erst gerendert wird und die Farben mit dem Hintergrund (der schwarz ist) vermischt werden.
Ich muss also die Sortiererei so anpassen, dass Objekte, die transparente Vertices haben, zuletzt kommen.
Auf sowas ist die SPE auch schon vorbereitet, aber bisher nur auf Objekte, die eine allgemeine Transparentz haben. Transparente Vertices oder transprente Texturen wurden bisher noch nicht berücksichtigt.

Lange Rede kurzer Sinn ^^. Tja Alphablending ist das Einzigste, was noch niergends 100% perfekt funktioniert. Selbst in professionellen Spielen wie FarCry kommt das Problem an manchen Stellen zum Vorschein, nur verstecken die Entwickler das geschickt Laughing

mfg Lukas
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

Noobody

BeitragMo, Jun 07, 2010 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
LukasBanana hat Folgendes geschrieben:
Das problem ist im Moment bei deinem Beispiel, dass das transparente Objekte weiter von der Kamera entfertn ist (nämlich exakt 2 Einheiten) wärend die SkyBox 0 Einheiten von der Kamera entfernt ist.

Wie du schon angedeutet hast, ist das nicht ganz richtig. Die Renderreihenfolge in B3D funktioniert ungefähr so:
- Z-Buffer löschen
- Z-Write und Z-Read deaktivieren; alle Objekte mit positivem Entityorder zeichnen, höchste Entityorder zuerst
- Z-Write und Z-Read aktivieren; alle Objekte ohne EntityAlpha, VertexAlpha oder Masked/Alpha-Texturen zeichnen
- Z-Write deaktivieren; alle Objekte mit EntityAlpha, VertexAlpha oder Masked/Alpha-Texturen der Tiefe nach sortiert zeichnen (für jedes Objekt: Frontface-Culling aktivieren, Objekt zeichnen, Backface-Culling aktivieren, Objekt zeichnen)
- Z-Read deaktivieren; alle Objekte mit negativem Entityorder zeichnen, höchste Entityorder zuerst
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

GERMAX

BeitragDi, Jun 08, 2010 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann man eigentlich schon sowas wie wet floor/mirror machen?

clipping mirrors ist zwar bei dev prog tiefrot aber vllt geht es ja doch?
(Bei demo4 spiegelt sich ja auch was im wasser!)

Und ausserdem könnte ich noch eine Glasscheibe brauchen Smile

Ansonsten scheint mir alles zu funktionieren und am besten gefällt mir dabei die Teekanne mit 64 tris, die hat sowas funktionales!
Erfolglos begonnene BB-Projekte:TRON/CONVOY/MYSTIC

LukasBanana

BeitragDi, Jun 08, 2010 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja also mir persönlich gefällt die Teekanne jetzt mit 1024 Dreiecke schon besser Laughing

Spiegelungen mit Shadern sind möglich. Genau das mache ich ja bei der Reflektion im Wasser.
Nimm mal ne Normalmap die eine einheitliche Farbe hat, dann hast du ne pefeckte Spiegelung ^^.

Für Glass nimmst du nur die Refraktion. Also zu renderst die Szene in eine Texture. Diese Texture muss auf deiner Glassscheibe liegen die du dann im Shader verwendest.
Und dann halt noch mal die ganze Szene im normalen BackBuffer rendern.
Im Grunde funktioniert das genau wie bei der Wasser Simulation nur ohne Reflektion (wo bei das für Glass-scheiben auch Sinnvoll wäre - halt dezenter) und du brauchst halt ne gescheite Normalmap die du nicht bewegen solltest. Soll ja keine Wellenbewegung geben ^^.
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana
 

GERMAX

BeitragMi, Jun 09, 2010 1:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Das 5. example zu den shadern ist ziemlich cool. Sollte sich jeder mal angucken!

Zum meinen eigenen Problemen:
Mal probieren ob ich das irgendwie nach deiner Anleitung hinkriege.
Embarassed
Erfolglos begonnene BB-Projekte:TRON/CONVOY/MYSTIC

LukasBanana

BeitragMi, Jun 09, 2010 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab gestern in meinem Forum erfahren, dass die Funktion "SetShaderVec", um einen Vektor mit 3 Komponenten im Shader zu setzen, nicht richtig funktioniert - warum acuh immer.
Wundert euch also erst mal nicht, wenn ihr im Shader Farben setzen wollt. Die 3. Komponente wird momentan aus irgend einem Grund nicht verändert Sad
Farben (in GLSL auch vec3 oder vec4) werden ja auch als Vektoren gesehen.
Das ganze tritt aber nur bei OpenGL auf. Mit den DirectX Shadern geht's wunder bar.
Im muss sowie so noch eine Funktion einbauen um auch 4 Komponenten Vektoren setzen zu können.

@GERMAX: versuch halt erst mal das Wasser Beispiel so ab zu ändern, bis nur noch der Spiegel da ist.
Dann ausprobieren, wass du an Code alles weg lassen kannst "et Voilà" ^^
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

LukasBanana

BeitragMi, Jun 09, 2010 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Shader/Vektor Problem, das ich als letztes beschrieben habe, habe ich eben gerade gelöst.
Ladet euch also einfach grad nochmal den Wrapper herunter (immer noch 2.1.2-beta, wollte jetzt die Versionsnummer nicht schon wieder ändern, wegen dieser kleinen Änderung) und es sollte wieder ein paar Probleme weniger geben Smile
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

Pummelie

BeitragDo, Jun 10, 2010 7:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal eine Frage, kann es sein, das der Befehl GrabImage nicht funktioniert?
Bei mir liefert das entwerder ein graues oder schwartzes Bild zurück Crying or Very sad

Ich hoffe das steht nirgenswo, bin zetwas lesefaul Wink
It's done when it's done.

LukasBanana

BeitragDo, Jun 10, 2010 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Diese Funktion ist zwar schon implementiert, aber noch nicht wirklich erstellt.
Steht noch auf der "TODO-Liste" ^^.
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

LukasBanana

BeitragMo, Jun 14, 2010 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt auch mal wieder mehr an der Engine selbst als an dem Wrapper gearbeitet und vor Allem die VideoDrvier verbessert.
OpenGL 1.1 soll in der nächsten Version (SPE 1.10) unterstützt werden, sodass auch ältere PCs die Engine nutzen können.
Direct3D9 wird jetzt noch schneller genutzt! Bislang vertrug sich die "SMeshVertex3D" Struktur nicht mit dem FVF (FlexibleVertexFormat) wie es DX9 vorschreibt - gar nicht mal so "flexible" wenn ihr mich fragt.
Bislang wurde nach jedem VertexBuffer update alles von einem "SMeshVertex3D" array in ein, speziell für D3D9 erstelltest, "SMeshIndexedVertex3D" array kopiert. Das ist natürlich langsam. Jetzt endlich ist die Struktur so angepasst, dass DX9 und OGL (natürlich auch der SoftwareRenderer) etwas damit anfangen können.
So räume ich die Engine immer wieder etwas mehr auf, von Altlasten oder zu Begin unstrukturierteren Teilen Smile
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

LukasBanana

BeitragDi, Jun 15, 2010 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hoffe ihr schaut hin und wieder mal in mein Forum, da macht sich jemand richtig Arbeit mit Shader Beispielen für B3D Wink
Hier z.B. ein schönes Shader beispiel für Terrains bzw. Texture splatting:
http://www.hlc-games.de/forum/...&t=170
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

faeX

BeitragDi, Jun 15, 2010 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wahrscheinlich bin ich einfach nur zu doof, aber wie binde ich die ganzen Dateien so in VisualC++ / CodeBlocks ein, sodass ich das Beispiel auf der Startseite deines Forums zum Laufen bringe?

EDIT: Im übrigen hätte ich deine Engine liebend gerne für B3D verwendet, allerdings fehlen noch wichtige Befehle wie "LinePick"...

LukasBanana

BeitragDi, Jun 15, 2010 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
LinePick ist eigentlich implementiert. Nur der Radius wird im Grunde ignoriert.

Ich empfehle Code::Blocks. Bislang habe ich es noch nicht geschaft, die SPE auf VisualC++ bzw. VisualStudio zu übertragen, aber das ist schon seit einer Weihle geplant.
Was genau funktioniert denn nicht? Wenn du wirklich interesse hast, die SPE für C++ zu nutzen, empfehle ich dir, dich auf dem SPE Forum anzumelden Wink
Ich glaube, dass dir hier zum Kompilieren und C++ allgemein, eher weniger jemand was sagen kann.

mfg Lukas
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana
 

GERMAX

BeitragMi, Jun 16, 2010 2:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mal das Beispiel No 6 (texture splatting) ausprobiert.
surprize, surprize!

Und ein hässlicher Fehler. Der Fragmentshader funktioniert bei mir nur, wenn man die lights von 8 auf 4 runtersetzt (7600GT-256MB).

Fehlermeldungen (debuglog.txt):
error C5041: cannot locate suitable resource to bind parameter "<null atom>"
error C5041: cannot locate suitable resource to bind parameter "<null atom>"
error C5041: cannot locate suitable resource to bind parameter "<null atom>"
error C5041: cannot locate suitable resource to bind parameter "<null atom>"

Ich dachte immer, jede halbwegs vernünftige GFX-card hat 8 hardwarelights eingebaut.
Tja, so kann man sich täuschen!


In example 7 (basic bloom) steht im log:
0(21) : warning C7011: implicit cast from "int" to "float"

Scheint aber grundsätzlich zu funktionieren.
Erfolglos begonnene BB-Projekte:TRON/CONVOY/MYSTIC

LukasBanana

BeitragMi, Jun 16, 2010 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Mh, das mit den 4 Lichtern wundert mich, aber das muss wohl an deinem VRAM liegen.
Ich hab ne 8800GTX mit 768MB. Da ist schon etwas mehr Platz. Aber eigentlich ging ich auch davon aus, dass 256MB locker reichen Confused

Das mit dem implicit cast ist typisch. OpenGL ist da sehr empfindlich. Mit HLSL bei DirectX scheint das überhaupt kein Problem zu sein ob man jetzt "float x = 1.0", "1.0f" oder "1" schreibt.

Die Shader sind ja diesmal nicht von mir und da "WhateverMan" einige gemacht hat, habe ich auch noch nicht alle angesehen ^^.
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana
 

GERMAX

BeitragMi, Jun 16, 2010 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Wegen der shader wollte ich eigentlich mal alle lauffähig machen und dann könnte man die zusammenpacken und zum dl vllt auf deine site draufpacken. Aber dieser Fehler schreckt mich da auch etwas ab, und die Pfade sind da auch etwas verschieden.

Kann man bei deinem Forum nicht an einen Beitrag was dranhängen?
So wie Whatever das macht wird das einige abschrecken. Smile

Naja, und wenn man ehrlich ist, kann man leicht auf die Idee kommen, dass der Umgang mit shadern was die BB3D-user betrifft auch abschreckend wirkt.

Mich würde es jedenfalls kaum verschrecken, falls meine Vermutung da richtig ist!


Jetzt habe ich mir auch example 4 vorgenommen (dot3 phong).
Da das bei mir mit 8 Lights nicht funktioniert, kann ich mir nie sicher sein, das das was ich draus mache dann richtig ist. Auf jeden Fall habe ich in bump8.frag die lights auf 6 runtergesetzt. Würde mich mal interessieren wie das mit dem *.vert zusammenhängt, denn da tacuhden die lights ja auch wieder auf.
Erfolglos begonnene BB-Projekte:TRON/CONVOY/MYSTIC

LukasBanana

BeitragMi, Jun 16, 2010 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das "draufpacken"?
Meld' dich bei meinem Forum an und schreib einen Beitrag in den jeweiligen Tutorials oder schick WhateverMan ne Privat Nachricht Wink
Und welchen Fehler genau meinst du jetzt? Den wegen den 8 Lichtern? Dafür gibt's im Vertex Shader die GLSL Konstante "gl_MaxLights", das kann ich auch noch mal in meinem Forum posten.

Überhaupt kann ich nur dieses GLSL Einsteiger Tutorial wärmstens empfehlen:
http://wiki.delphigl.com/index.php/Tutorial_glsl

Shader sind natürlich fortgeschritten, aber man muss ja nicht gleich mit Shadern anfangen, wer den Wrapper nutzt. Es gibt ja auch noch andere Features. z.B. - um mal ein ganz kleines und einfaches Feature zu nenne - ein weiterer Wireframe modus (Solid, Lines und Points) und das für jedes Objekt einzeln einstellbar.

mfg Lukas

EDIT:
Es hat übrigens noch keine was zum 8. Beispiel gesagt Sad
Ich dachte das wäre am interessantesten, weil das ein GLSL und HLSL Beispiel mit gleich mehreren Shadern ist. bzw. mit einer art ShaderLibrary in einer Shader Datei.
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana
 

GERMAX

BeitragMi, Jun 16, 2010 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, genau das meine ich damit (8Lichter)! Davon war im Log aber bisher nie die Rede, da taucht immer nur so eine Fehlermeldung auf:

Fragment info
-------------
0(3) : error C5041: cannot locate suitable resource to bind parameter "<null atom>"
0(4) : error C5041: cannot locate suitable resource to bind parameter "viewVec"

Und du hast natürlich recht, das mit den shadern ist was für Fortgeschrittene.

Und das mit dem Draufpacken war so gemeint, alle laufähig zu machen, sodass man die im nächsten release zusammen mit den anderen Beispielen zusammpackt (oder eben als extra package wie bei den tuts).

Ich gebe dir auch insofern recht, dass viele eher die Zusatzfeatures benutzen werden (so wie ich auch).

Aber das ist nur meine Meinung.


shader example 4 (da reinkopieren wo die anderen WrapperDemos drin sind:
https://www.blitzforum.de/upload/file.php?id=8831

Wer sowas sieht, hat einen Fehler im log:
user posted image

example 5 (projector):
https://www.blitzforum.de/upload/file.php?id=8833

LukasBanana

BeitragDo, Jun 17, 2010 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn im log bei den Shader "error" steht, wird der Shader nicht angewandt. Daher sieht dein Objekte (die Teekanne) auch so hässlich aus.
Der Shader wird nicht angewandt, statt dessen wird einfach auf die Fixed-Function-Pipeline zurückgegriffen, die die ColorMap, NormalMap und den ganzen Rest natürlich auf eine sehr hässliche Art und Weise zusammen rechnet. NormalMaps sind ja normaler Weise nicht dafür gedacht, sie einfach in Form von Multitexturing zu mappen. Deshalb sieht das bei dir jetzt so komisch aus Wink
Bei Problemen mit GLSL oder HLSL empfiehlt es sich, genau wie bei typischen C/C++ Problemen, die Fehlermeldung 1:1 bei Google einzutippen -> et voilá.
Ich schreibe sowieso dauernd neue Tutorials und auch einige Shader Beispiele. Ich hab WhateverMan jetzt schon auf den Fehler hingewiesen. Dafür gibt's ja das Tutorials SubForum in meinem Forum. Die Tutorials können ja immer wieder korrigiert werden ^^.
Und wer sich besonders für die Shader interessiert, der kann sich ruhig im Internet nach Shader Beispielen in C/C++ usw. umsehen, da der Shader Code eh immer gleich ist und ihr speziell für Blitz3D wohl eher weniger Shader Tutorials finden werdet Laughing
mfg Lukas
EDIT:
Mal ne Frage neben bei: Kann es sein, dass die Programme mit OGL bei einigen von euch viel zu schnell laufen?
Ein Freund von mir hat ne ATI Karte und da zieht das Vsync so gar nicht xD.
Ich muss ma gucken ob ich nicht doch noch ne Funktion namens "FrameRate(FramesPerSecond%)" einbaue.
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group