Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Apr 18, 2024 13:51

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Seth für fxPascal
BeitragVerfasst: Di Okt 21, 2003 11:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
SETH für fxPascal

Bild
(Klick für größere Ansicht)

Wie bereits im Meinungsthread zu Lars fxPascal angedeutet,habe ich SETH von Grund auf neugeschireben und konzipiert,diesmal allerdings nicht als Shader-IDE für ARB_VP und ARB_FP (die wohl wgn. glSlang kaum noch Zukunft haben) sondern nur für fxPascal.Denn die Idee von Lars,nämlich eine HLSL mit Pascalsyntax zu entwickeln damit wir Delpher (und alle anderen die nicht auf glSlang warten wollen und die cG nicht mögen) Shader in der uns gewohnten Syntax schreiben können,fand ich sehr spannend.
Also hab ich das original SETH in die Tonne geworfen und total neu programmiert.Rausgekommen ist jetzt in Version 0.1 eine bereits recht brauchbare IDE zur Entwicklung von fxPascal-Shadern,diesmal allerdings nicht mit freihängenden Fenstern,sondern in einem MDI-Design angelehnt an ATIs RenderMonkey.

In dieser sehr frühen Version besteht die IDE aus folgenden Komponenten und Fenstern :

Szenenbaum :
Ganz links im Hauptfenster befindet sich der sogenannte Szenenbaum,der den Aufbau der aktuellen Shaderumgebung darstellt und momentan zum manipulieren der Renderpasses genutzt werden kann.Ein Rechtsklick öffnet euch ein noch recht eingeschränktes Popup-Menü mit dem ein neuer Renderpass erstellt werden kann.Jeder Pass beinhaltet 4 Texturen (auf jeder TMU eine), eine Cubemap (wird nur genutzt wenn alle Faces geladen wurden),einen VertexShader und einen Fragmentshader.
Im Gegensatz zum ersen SETH funktioniert das Multipassrendering bereits jetzt schon,allerdings noch mit einer festen Blendfuntkion,die man aber später verändern können wird.
Kurz zur Bedienung des Szenenbaums : Ein einfacher Klick auf einen VertexShader/FragmentShader öffnet diesen (wenn geladen) im Shadereditor,während ein Doppelklick auf eines der Elemente des Baums ein Fenster zum Laden/Verändern des Elements öffnet.

OpenGL-Vorschau :
Da wirds wohl kaum viel Erklärungsbedarf geben ;) .Hier seht ihr eure Szene mit alle euren im Szenenbaum gemachten Einstellungen.Die Bedienung ist auch recht simpel : Mittels Scrollrad könnt ihr weg/ranzoomen und bei gedrückter Maustaste wird das Objekt rotiert.Um CPU-Zeit zu sparen wird die Szene momentan nur über einen Timer aktualisiert,wodurch sich die Vorschau manchmal etwas "unweich" anfühlen kann.

ShaderEditor
Das wohl wichtigste Element einer Shader-IDE.Hier könnt ihr wie schon im Original-SETH eure Shader schreiben,diesmal allerdings mit fxPascal-Syntax.Links seht ihr zwei Comboboxen,welche die Parameter des Shaders anzeigen (Umgebungsparameter werden momentan noch nicht von fxPascal unterstützt,weshalb die untere Combobox deaktiviert ist).Sobald ein Vertex/Fragmentshader zur Grafikkarte hochgeladen wird,werden übrigens auch die Namen der Parameter an die im Shader angepasst,so dass ihr immer genau wisst welchen Parameter ihr da gerade verändert.
Zur Bedienung : Auch hier sollte es keine Probleme geben!Im Richedit rechts schreibt ihr eure Shader,und könnt diese über den Aktualisieren-Button zu OpenGL hochladen (allerdings nur wenn ein gültiger Shader selektiert ist,ihr diesen also vorher im Szenenaum angeklikt habt).Die Programmparameter könnt ihr durch einen Doppelklick auf eben diese über einen Vertexfloater verändern,welcher die Daten in Echtzeit aktualisiert (also während ihr tippt).Mit den Checkboxen Sinus/Cosinus unter den jeweiligen Komponenten des Vektors lassen sich diese übrigens animieren.So kann man bestimmte Effekte (Licht,Bumpmapping) einfach testen.Ihr solltet übrigens nicht vergessen eure Shader zu speichern,bevor ihr das Programm beendet oder einen anderen Shader öffnet.Das wird momentan nämlich noch nicht gemacht.Ausserdem ist der Öffnen-Button auch noch nicht belegt,was sich aber ja auch über einen Doppelklick auf den Shader im Szenenbaum machen lässt.

HTML-Hilfe :
Was bei der Shaderentwicklung natürlich ungemein hilfreich ist,ist eine brauchbare Hilfe.Deshalb gibts ein in die IDE integriertes Hilfefenster,in dem sich zu jedem fxPascal-Befehl eine passende Beschreibung abrufen lässt.

So viel also zum Aufbau ersten Version der Shader-IDE.Bitte beachtet das es sich hier erst um Version 0.1 handelt und schon einige Änderungen in Planung sind.So wird der ShaderEditor komplett überarbeitet und es werden sich davon auch mehrere Instanzen öffnen lassen.Der Szenenbaum wird natürlich auch noch um diverse Objekte und Eigenschaften erweitert.Auch gibts hier und da beim Wechseln zwischen den Shaderumgebungen noch manchmal Probleme.Wenn ihr also ne Beispielumgebung öffnet und es nicht so aussieht wies soll,dann laded ihr am besten die Standardumgebung (start.xml) und danach erst diese Shaderumgebung.

Version 0.1 kommt übrigens bereits mit einigen Beispielumgebungen,in denen verschiedene Shader präsentiert werden.Da ist zwar noch nichts weltbewegendes dabei,aber die Beispiele zeigen zumindest ansatzweise was mit fxPascal und einer guten IDE machbar ist.Folgende Beispielumgebungen sind dabei (Datei->Umgebung öffnen) :

Cubemap.xml :
Einfaches Cubemapping auf dem berühmten Teetopf.Das auslesen der Cubemaptexel wird über einen FragmentShader gemacht,während ein VS nicht nötig ist.Über den Parameter CubeMapStrength lässt sich übrigens die Stärke der Cubemap festlegen.Werte >1 geben hier einen schönen Überblendeffekt.

CubemapMultitex.xml :
Eine leicht Erweiterung des Cubemap-Beispiels.Diesmal wird die Cubemap jedoch mittels Multitexturing auf eine Basistextur gelegt.Sieht im Endeffekt so aus,als würde ein metallener Teetopf die Umgebung spiegeln.

Lightmap.xml :
Stammt aus dem fxPascal-Programmierhandbuch.Mulitpliziert eine Basistextur (TMU0) mit einer Lightmap (TMU1) wie das beim Lightmapping erforderlich ist.

PerPixelLight.xml :
Stammt aus dem fxPascal-Programmierhandbuch.Wie der Titel vermuten lässt,wird hier über ein Fragmentprogramm Per-Pixel-Lighting realisiert.Wer das Licht animieren will,der wählt im passenden Vertexprogramm den LightPos-Parameter und aktiviert bei der X-Komponente Sinus und bei Y die Cosinusanimation.

SimpleMultipass.xml :
Eine ganz einfache Multipass-Szene.Basetextur auf TMU0 in Pass0 und Lightmap auf TMU0 in Pass1.Verwendet werden hier auch nur zwei FragmentShader,wobei jeder Fragmentshader eine Variable besitzt,mit der man die "Stärke" des aktuellen Passes festlegen kann.

VolumetricLight.xml :
Stammt aus dem fxPascal-Programmierhandbuch.Über einen VS und einen FS wird hier das aus Unreal (Teil1 und UT) bekannte volumetrische Licht realisiert,allerdings komplett auf der GPU.

So viel also zur ersten Version von SETH.Feedback ist natürlich erwünscht,aber bedenkt bitte das es sich um Version 0.1 handelt und daher eher als Preview denn als täglich nutzbare Software handelt.im Laufe der Zeit soll sich SETH dann zu einem Rendermonkey für fxPascal bzw. später evtl. auch glSlang entwickeln,mit dem es dann möglich ist seine Shader zu prototypisieren.Es sind bereits viele Sachen in Planung,darunter u.a. auch ein direkter Szenenexport nach Delphi (á la MCAD).

Zum Download gehts übrigens hier : SETH_Binary.zip (1,63MByte).
Benötigt wird natürlich eine Grafikkarte,die sowohl GL_ARB_Vertex_Program als auch GL_ARB_Fragment_Program unterstützt.

Hoffe mal das ihr noch aufmerksam mitlest,denn jetzt kommt mein eigentliches Anliegen :
Die Entwicklung einer solchen Shader-IDE ist natürlich eine nicht einfach zu bewältigende Aufgabe,weshalb ich beim Schreiben von SETH für fxPascal von Anfang an das Anliegen hatte,dies als OpenSource-Project zusammen mit Interessierten zu entwickeln.Lars wäre auf jeden Fall mit dabei und würde sich um alle Sachen im Bezug auf fxPascal (u.a. auch Syntaxhighlighter,Checker,etc.) kümmern.Geplant war das dann über ein CVS auf Sourceforge zu realisieren,so dass im Endeffekt alle Beteligten bei der ganzen Aktion auch noch mehr als nur ihre Programmierfähigkeiten verbessert hätten.
Wer also Interesse an der Mitarbeit hat, der kann sich bitte im Meinungsthread zu SETH dazu äussern,allerdings solltet ihr fundierte Delphi und OpenGL-Kenntnisse mitbringen und euch zumindest schonmal rudimentär mit Shadern auseinandergesetzt haben.Weitere Voraussetzung ist natürlich die Möglichkeit permanent am Projekt mitzuarbeiten!

Also viel Spass beim Testen von SETH und fxPascal,und bitte meldet euch bei Interesse und für Feedback im Meinungsforum!

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Zuletzt geändert von Sascha Willems am Mi Okt 22, 2003 16:06, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 22, 2003 16:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
(Hab die ersten beiden Einträge die sich noch auf das "Ur-SETH" bezogen aus Gründen der Übersichtlichkeit gelöscht)

So eben habe ich die Projektsektion auf SourceForge eingerichtet (was trotz der persönlichen Prüfung durch einen SF-Mitarbeiter nur knapp 10 Minuten gedauert hat) und werde im Verlaufe des Tages auch das CVS hochladen.

Hier gehts zur Projektseite und zur Homepage bei sourceforge.net (momentan natürlich noch leer).

Wer also Interesse hat daran mitzuarbeiten,muss nur nen Account bei sourceforge erstellen und sich bei mir melden.Die Zugangsvoraussetzungen hab ich ja bereits oben gepostet.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 26, 2003 14:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Bild
(Klick für größere Ansicht)

Natürlich war ich die letzten Tage nicht faul und habe recht intensiv an SETH weitergearbeitet (wer sich über ein CVS-Tool all-abendlich aktualisiert,wird das wohl bemerkt haben).Seit dem letzten Projekteintrag hat sich einiges getan,sowohl unter der Oberfläche (aka Programmcode) als auch darüber (aka IDE-Erscheinung).Beim Projekteintrag zu SETH versuche ich nochmehr in Richtung "Programmiertagebuch" zu gehen und informiere euch deshalb auch mal ausnahmsweise über aufgetretene Probleme und wie ich die im einzelnen gelöst habe,was für den ein oder anderen evtl. interessant sein dürfte.

Änderungen/Verbesserungen an der GUI :
Die GUI wurde (wie auf dem Screenshot zu erkennen) vor allem optisch verbessert.So besitzen jetzt Einträge im Szenenbaum ein eigenes Icon,was nicht nur besser aussieht sondern auch die Bedienung etwas erleichtert (Detailansicht des Szenenbaums).Ausserdem hat mir der Look des Ur-Alt Windowsmenüs total missfallen,denn aus Delphi 7 und OfficeXP ist man wahrlich schönere Menüs gewohnt (bin halt ein Perfektionist).Also wollte ich solch schöne Menüs auch in SETH und D7 bringt auch eine Komponente mit die das kann, nämlich die TActionMainMenuBar.Doch nachdem ich mit Hilfe dieser Komponente ein neues hübsch anzusehendes Menü auf die Beine gestellt hatte,wurde ich mit der Tatsache konfrontiert,dass dieses Hauptmenü nicht für MDI-Anwendungen gedacht wurde und beim Maximieren eines MDI-Fensters die benötigten MDI-Icons dort nicht gezeigt werden...also mal wieder Zeit verschwendet.
Allerdings geb ich mich nur sehr ungern geschlagen,und nach einer etwas längeren Suche in den Weiten des WWWs stiess ich auf die TXPMenu-Komponente,welche man nur auf seine Form legen muss um die normalen Menüs in die von mir gewollten Menüs zu wandeln (Detailansicht des neuen Menüs).
Das wars auch schon grob zu dem was GUI-technisch gemacht wurde,mal abgesehen von kleineren Änderungen am z.B. Hauptmenü,in das nun auch eine MRU-Liste integriert wurde.


Änderungen/Verbesserungen am Programm(code) :
Die weitaus interessanteren Änderungen (besonders im Anfangsstadium einer Anwendung) finden natürlich wie erwartet unter der Haube statt.Hier hat sich seit dem letzten Eintrag natürlich auch was getan.Zuerstmal wäre da die Möglichkeit neben einer Reflektionscubemap nun auch endlich eine Normalisierungscubemap zu verwenden,die im Cubemapdialog automatisch vom Programm erstellt werden kann.Eine Normalisierungscubemap bietet quasi eine Möglichkeit Per-Pixel-Normale durch einen Cubemap-Lookup zu erhalten.Diese Per-Pixel-Normale werden u.a. für Bump-Mapping benötigt und dürfen daher wohl in keiner Shader-IDE fehlen.(Auf obigem Screenshot seht ihr übrigens einen Teetopf,dessen Farbwerte anhand einer Normalisierungscubemap entstanden sind).
Desweiteren unterstützt SETH jetzt ein programmeigenes Dateiformat (*.seth),welches u.a. deshalb nötig ist,weil das 3DS-Format z.B. keine Tangenten beinhaltet (auch für Bump-Mapping benötigt).Zuerst wollte ich das SETH-Format in Form einer XML-Datei realisieren,was ich jedoch nach einem ersten Konvertierungsversuch eines über 100.000 Polygone großen 3DS-Modelles verworfen hab,denn die Konvertierung über den XML-Parser von Delphi hat in diesem Falle mehrere Minuten gedauert und das war in meinen Augen einfach nicht aktzeptabel.Also ist trotz anderer Erwartungen am Ende ein binäres Format rausgekommen.XML hätte halt den Vorteil gehabt,das es leicht erweiterbar gewesen wäre.Das SETH-Format ist übrigens recht simpel aufgebaut und damit auch andere es nutzen können wird es in der ersten Programmdokumentation dazu auch genaue Spezfikationen geben.Momentan lassen sich seth-Dateien nur durch die Konvertierung aus dem 3DS-Format erstellen (Tools->3DS nach SETH-Format),um bequem an die 3DS-Daten zu kommen,benutze ich übrigens den 3DS-Loader von noeska,da der von Mike Lischke alles andere als "benutzerfreundlich" ist.Bei der Konvertierung werden dann für jedes Vertex s- und t-Tangente berechnet.Damit man auf diese innerhalb eines Shaders zugreifen kann werden sie natürlich in einem Vertexattribut übergeben.Momentan sieht die Belegung folgendermaßen aus (kann sich noch ändern,wird aber dann natürlich dokumentiert) : Vertexattribut[2] = Vertexnormale, Vertexattribut[3] = s-Tangente und Vertexattribut[4] = t-Tangente.Allerdings solltet ihr mit den Tangenten noch nicht allzuviel machen,da ich mir noch nicht sicher bin ob diese momentan schon richtig berechnet werden.
Das waren eigentlich auch schon die größten Änderungen.Die vielen kleinneren Sachen die sich im Code getan haben sind es eigentlich nicht wert noch extra genannt zu werden,ausser noch dem neu zum Szenenbaum gekommenen Kameraobjekt,mit dem ihr nun neben dem FOV auch die Near- und Far-Clippingplane anpassen und das Back-Faceculling aktivieren könnt.
Im CVS findet ihr übrigens noch das ein oder andere neue Shaderbeispiel,von denen allerdings noch nicht alle funktionieren wie sie sollen (afgrund von Featuremangel) oder nicht sonderlich sinnvoll sind.


So viel also zum aktuellen Stand und ich hoffe mal das ich nichts wichtiges vergessen hab.Aber wie immer nicht vergessen : das Programm befindet sich noch in einem sehr frühen Stadium,weshalb noch viele Features fehlen und es hier und da noch zu Problemen kommen kann.

Einen direkten Download für die neue Version gibts noch nicht,aber dafür wurde das Projekt ja auf sourceforge untergebracht,wo sich jeder über das öffentlich zugängliche CVS die aktuelle Version (+Quellcode) zulegen kann.Kleiner Hinweis : Das HTML-CVS (also über "Browse CVS") hängt immer mehrere Stunden (manchmal 12 oder gar mehr) hinter dem aktuellen Stand zurück.Deshalb solltet ihr euch die neusten Dateien immer mit einem CVS-Tool wie TortoiseCVS besorgen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 26, 2003 23:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Für alle die sich in SETH einarbeiten wollen, gibts unter diesem Link eine recht kurze Einführung in die IDE, darunter auch ein kleines Tutorial in dem eine neue Shaderumgebung erstellt wird.Das Dokument ist komplett in Englisch, aber spätestens morgen gibts auch ne deutsche Version davon.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Okt 28, 2003 13:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Bild
(Klick für größere Ansicht)

Und auch heute gibts mal wieder nen Tagebucheintrag zu SETH,an dem ich die letzten Tage natürlich wieder recht intensiv gearbeitet habe.

Die wichtigste Neuerung ist wohl die Möglichkeit RenderToTexture-Passes in den Szenenbaum einfügen zu können,welche (bis auf die Cubemap) alle Eigenschaften eines normalen Renderpasses besitzen.Darüberhinaus kann man für jeden RenderToTexture Pass auch noch die Kameraansicht verändern,ein eigenes 3D-Objekt angeben und auch die Löschfarbe setzen,auch besitzt jeder dieser Passes seinen eigenen Vertex/Fragmentshader.
Wie der Name vermuten lässt,werden diese Passes nicht wie die herkömmlichen in den Framebuffer gerendert,sondern auf eine Textur die dann in einem normalen Renderpass genutzt werden kann.Zuweisen tut man einen RenderToTexturePass ganz einfach über das Kontextmenü im Szenenbaum :
Bild
Momentan ist die Größe der Zieltextur noch auf 256x256 Pixel beschränkt und auch ein Texturenziel für den Tiefenpuffer (z.B. für Shadowmaps) gibts noch nicht,kommt aber.Der Grund warum ich das nicht in einem Zuge implementiert hab ist recht einfach : die herkömmliche RenderToTexture-Methode via glCopyTexImage2D hat den frappierenden Nachteil,das nur das was sichtbar ist in die Textur kopiert wird.Ist das Vorschaufenster also nur 256x192-Pixel groß,so wird der Block zwischen Y=192..256 einfach nicht in die Textur kopiert,was in meinen Augen nicht akzeptabel ist.Deshalb werden die RenderToTexture-Passes schnellstmöglich auf PBuffer umgestellt,die mit diesem Problem nicht zu kämpfen haben.Dann werden auch Features wie RenderToDepthTexture oder RenderToCubemap kommen,mit denen man interessante Effekte erzielen kann.

Die Nutzung des neuen Renderpass-Typs ist wie gesagt reichlich einfach.Er lässt sich über das Kontextmenü des Szenenbaums einfügen und dann wie ein herkömmlicher Renderpass einstellen (inklusive Auswahl des 3D-Modelles).Wollt ihr die Kamera des RenderToTexture Passes verändern,so müsst ihr diese nur im Szenenbaum anklicken und schon wird diese aktiv gesetzt,was bedeutet das man nun den RenderToTexture-Viewport in der Vorschauansicht rotieren und zoomen kann.Ein Klick auf die globale Kamera lässt euch diese dann wieder verändern.

In der aktuellen SETH-Distribution (momentan DGL-Exklusiv ;) ) kommt neben anderen Beispiel-Shaderumgebungen auch ein Sample für RenderToTexture mit, in dem ein RToTex-Pass auf einen Würfel gerendert wird.In diesem RenderToTexture-Pass wird übrigens ein FragmentShader genutzt um zwei Texturen auf den Torusknoten zu multiplizieren.

"Ansonsten" hat sich nicht viel getan,allerdings hat mich die korrekte Implementation dieses Features inklusive Konzeption und Dingen wie XML-Import/Export, Zuweisung von 3D-Modellen, usw. fast zwei Tage gekostet,weshalb es sonst nicht viel neues gibt.Ich hab dem Programm jetzt noch Unterstützung für verschiedene Sprachen (momentan Deutsch und Englisch) verpasst und ausserdem auch noch ein Dokument zum SETH-Dateiformat (PDF, 110 KByte) verfasst, welches den genauen Aufbau dieses Formates zeigt und auch Quellcode für nen Loader mitbringt.So kann das Format auch in eigenen Anwendungen genutzt werden.Desweiteren gabs noch diverse Bugfixes und kleinere Änderungen am Quellcode.

Den Download der aktuellen Version (0.1.3) findet ihr übrigens hier (1,93 MByte).Kommt wie gewohnt inklusive diverser Shaderbeispiele und allen benötigten Dateien (Texturen,3DS-Files) und den zwei bisher von mir zu SETH verfassten Dokumenten (Einführung,Dateiformat).Das CVS wurde allerdings noch nicht aktualisiert,wird aber nachgeholt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Okt 29, 2003 23:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Neuer Abend,neuer Tagebucheintrag...

Heute hab ich wieder einige neue Features implementiert,bestehende verbessert,Bugs gefixt,Shader geschrieben,halt alles was so beim Programmieren einer Shader-IDE anfällt.Es waren diesmal zwar keine weltbewegenden Neuerungen dabei,allerdings sollte man sein Tagebuch regelmäßig aktualisieren und den ein oder anderen interessierts evtl. was unsereiner so in seiner Freizeit macht :

Den Anfang machen Eigenschaftsdialoge sowohl für Render Passes als auch für RenderToTexture Passes :
Bild Bild
So kann man jetzt in einer Multipass-Umgebung festlegen,wie der gewählte Renderpass auf seinen Vorgänger geblendet werden soll (12 verschiedene Sourcefaktoren und 11 Zielfaktoren) und für den RenderToTexture Pass kann jetzt festgelegt werden welches interne Texturenformat (insgesamt 42 wählbar) verwendet werden soll.Dadurch kann man jetzt u.a. auch an die Tiefeninformationen gelangen um so Sachen wie Shadowmaps zu realisieren.

Weiter gehts mit ner recht kleinen aber feinen Änderung am Vertexfloater :
Bild
Wie zu erkennen kann man jetzt für jede Vertexkomponente die Checkbox Bewegen selektieren,welche dann die Vertexposition linear zwischen dem positiven und negativen vorher eingegebenen Wert bewegt.Gibt man also bei der X-Komponente 80 an,so wird die X-Position des Vertex über einen Timer zwischen -80 und +80 hin- und herbewegt.Besonders bei Effekten die stark von einer Lichtposition abhängen kann dies sehr nützlich sein.

Last but not least (quasi das Beste zu letzt ;)) hab ich endlich auch den fxPascal-Tangent Space Bumpmapping-Shader (siehe fxPascal-Programmierhandbuch) in eine Shader-Umgebung gepackt und dank der obigen neuen Möglichkeit des Vertexfloaters kann man diesen Effekt auch schön in Bewegung sehen :
Bild
Allem Anschein nach sieht der Effekt sogar halbwegs korrekt aus,was mich vermuten lässt das die Tangentenberechnung des neuen SETH-Formates (3DS hat sowas ja nicht) halbwegs korrekt ist.Könnte allerdings sein das da auf dem Bild nochwas nicht stimmt,aber ist ja auch alles noch in Entwicklung.

Das wars also eigentlich schon für heute (hab mich quasi *ausgeruht*).Das CVS ist jedoch noch auf dem Stand von heute Mittag (irgendwann um 13:00) und die meisten oben erwähnten Änderungen sind dort deshalb noch nicht enthalten.Werd das CVS dann aber spätestens morgen aktualisieren.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 31, 2003 21:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wie bei einem größeren Projekt (leider) so üblich,sinkt die Anzahl der Innovationen und Weiterentwicklungen mit steigender Entwicklungsdauer sichtlich,was jetzt auch langsam bei SETH eintritt.Also auch wenn offensichtlich nicht ganz so viel passiert wie bisher,werkle ich immernoch fleissig am Projekt und verbringe inzwischen sogar schon so manche Stunde in SETH um Experimente im Shaderbereich zu wagen.

Seit meinem letztzen Update gabs folgende Neuerungen,die ich voraussichtlich spätestens morgen mittag ins CVS hochlade :

Der RenderPass-Dialog wurde wieder leicht erweitert,was in Zukunft häufiger geschehen kann,wenn sich herausstellt,das ein bestimmter Shader eine neue Eigenschaft benötigt :
Bild
Wie man sehen kann,kann jetzt für jeden Renderpass angegeben werden welche Polygonseite gecullt wird (interessant für einige Multipasstechniken) und ob dieser Renderpass im Drahtgittermodus gezeichnet werden soll.

Auch der Vertexfloater wurde um zwei praktische Optionen erweitert :
Bild
Zum einen kann das aktuelle gewählte Vertex jetzt an die aktuelle Kameraposition gebunden werden (und wird dann auch automatisch aktualisiert),was bei Kameraabhängigen Effekten (z.B. Specular Bump) hilfreich ist und zum anderen kann jetzt über den "Farbe"-Button mit Hilfe des von Windows gewohnten Farbdialogs ein Vertex "eingefärbt" werden.Das ist besonders praktisch wenn man Lichtquellen oder Vertexfarben variieren möchte.

Ansonsten hat sich programmiertechnisch mal wieder etwas in Richtung Lokalisierung getan (was natürlich nicht sichtbar ist) und einige Bugs wurden (wie immer) gefixt.

In Sachen Shaderbeispielen habe ich mir heute auch mal die Mühe gemacht,nen Cel-Shading Beispielshader zu entwickeln,der sichtlich gut daherkommt.Bin übrigens ein wenig stolz drauf,da dies mein erster komplexerer komplett geschriebener fxPascal-Shader ist (auf Basis dieses Artikels) :
Bild
Sieht toll aus,besonders in Bewegung.Das wäre dann übrigens Beispielshader-Umgebung Nummer 16 für SETH/fxPascal und neben dem Specularbump-Shader wohl eines der momentan schönsten Eyecandies,die hoffentlich dazu beitragen das SETH intensiv von euch genutzt wird.

Das war also mal wieder mein Statusupdate zum Thema SETH und ich werde wohl noch an diesem Wochenende eine Version inklusive Installer hochladen,damit ihr euch die Neuerungen auch ohne CVS-Zugriff ansehen könnt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 02, 2003 12:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Für alle die die von mir in den letzten zwei Postings angesprochenen Änderungen mal austesten wollen, steht SETH jetzt in Version 0.1.7 zum Download bereit.

SETH 0.1.7 - Installer (3,84 MByte, 15 Shaderbeispiele, Dokumentation)

Hier und da kann es noch zu vereinzelten Problemen kommen,von denen einige bereits in der mitgelieferten Datei "Known Issues.txt" (im sethDOCS-Ordner) angesprochen werden.Also sollte etwas nicht klappen,dann schaut zuerstmal in diese Datei.

Ansonten hat sich seit dem letzten Posting nicht viel Interessantes getan,denn ich hab mich hauptsächlich um Fehlerbeseitigung und Übersetzung des Programmes (welche fast vollständig ist) gekümmert.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 07, 2003 14:00 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Für alle die ungern das CVS nutzen gibts heute wieder ein aktualisiertes Installationspaket das alle Änderungen seit dem letzten Release bis zu den Änderungen die ich heute gemacht habe enthält :

# SETH 0.1.7.9 - Installer (4,33 MByte, 16 Shaderbeispiele, Dokumentation)

Features gibts kaum neue, da ich micht in den letzten paar Tagen fast ausschliesslich mit der Fehlersuche und -behebung beschäftigt habe. Ein übrigens oft vernachlässigtes Thema, das spätestens dann "zurückschlägt" wenn das Programm wächst und wächst, denn eine saubere Codebasis ist in meinen Augen ein wichtiger Faktor für den Ausgang eines jeden Projektes. Fehler die sich im frühen Stadium einschleichen können sich z.B. erst später bemerkbar machen und dann wird deren Auffindung alles andere als einfach. Wer bereits an größeren Projekten gearbeitet hat, sollte wissen was ich meine.

Das neue Release darf deshalb als stabil und (hoffentlich) fehlerlos betrachtet und daher auch ausgiebig genutzt werden. Im Einzelnen habe ich folgende Sachen gefixt/verbessert :
    Global :
  • Shaderumgebungen werden nun immer korrekt geladen (siehe u.a. CelShader)
  • Texturedateinamen werden jetzt immer korrekt gespeichert
  • Neue Shaderbeispielumgebung "Celshading-Landschaft" (Screenshot)
  • Aktuelle fxPascal-Version (0.3+Programmierhandbuch)
  • Programmübersetzung ins Englische nun komplett
  • Pointer und Fenster werden beim Laden einer Umgebung korrekt zurückgesetzt

    Shadereditor :
  • Shader können nun aus einer Umgebung über einen Speedbutton entfernt werden
  • Beim Wechsel des Shaders wird gefragt ob geänderte Shader gespeichert werden sollen
  • Kommentare funktionieren nun korrekt
  • Der "Shader öffnen"-Button ist nun funktional
  • Lokale Parameternamen werden beim Shaderwechsel korrekt aktualisiert
  • Uses-Token im Shader werden nun korrekt eingefärbt

    OpenGL-Vorschau :
  • Intervall des Zeichentimers auf 15ms gesenkt (Vorschau nun nicht mehr so träge)
  • Erweiterte Rotationsoptionen (Mausdrag+Rechts gedrückt rotiert die Z-Achse)

    Vertexfloater :
  • Möglichkeit einen Programmparameter in der Vorschau als Punkt zeigen zu lassen (u.a. für Visualisierung von Lichtern)


Das wars auch "schon" im Bezug auf das neue Release. Neue Features (evtl. u.a. auch 3D-Texturen) folgenden dann in der nächsten Version, aber wie bereits erwähnt wollte ich zuerst die Codebasis säubern bevor neue Features kommen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 21, 2003 19:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
So, nach fast zwei Wochen Ruhepause in Sachen SETH hab ich mir mal wieder nen Tag zeitgenommen und zwei Features implementieren, die ich eigentlich schon seit längerem geplant hatte und wovon besonders letzteres recht interessante Möglichkeiten bietet :

Neuerung Nr1. ist ein primitiver Texturendialog, mit dessen Hilfe man nun endlich sieht, ob und v.a. welche Textur an eine bestimmte TMU gebunden wurden. Ist zwar kein großes Feature, aber dennoch recht nützlich :
Bild
Statt nem einfachen Öffnendialog kommt nun also beim Doppelklick auf eine Textur nun dieser Vorschaudialig. Die Vorschau wird übrigens mit LossyEx glBitmap.pas realisiert, die es wirklich einfach macht ne Textur an ein Bitmap zuzuweisen. Dank also an dieser Stelle an Lossy.

Das zweite und weitaus interessantere Feature ist die Möglichkeit nun endlich 3D-Texturen in SETH nutzen zu können. Wer sich ein wenig damit auskennt, weis das man damit besonders in Fragment- und Vertexshadern sehr viele tolle Sachen machen kann (z.B. Vertexdisplacement). Die Nutzung in SETH ist (hoffentlich) gewohnt einfach. Zuerst muss man nen Renderpass auswählen (momemtan noch nicht für RtoTex implementiert) und dann per Kontextmenü die 3D-Textur "aktivieren" :
Bild
Wie bereits am Eintragstitel zu erkennen wird dann die 2D-Textur auf Texturenunit 3 durch diese 3D-Textur ersetzt. Momentan wird dann als Grundkonfiguration eine 64x64x64 Pixel große Luminanz-Noisetextur erstellt (GL_NEAREST-Filter) :
Bild
Mittels des gewohnten Doppelklicks auf diesen Eintrag kann man dann einen Dialog aufrufen, in dem man die 3D-Textur konfigurieren kann :
Bild
Wie zu erkennen kann man neben der Dimension der Textur (natürlich nur POT-Größen möglich) momentan auch 3 verschiedenen Texturgenerierungsmethoden auswählen :
Bild Bild Bild
(v.l.n.r. : Random Noise, Perlin Noise und Attenuation)
Die Palette ist momentan natürlich noch recht knapp, aber die drei Funktionen da oben sind eigentlich die wichtigsten in diesem Gebiet. Der Perlin-Noise-Generator stammt übrigens von Tom Nuydens. Sieht zwar alles ned sonderlich "interessant" aus, aber "Insider" werden sicherlich wissen welches Potential hinter dynamischen 3D-Texturen (auf den Screenshots sieht man natürlich nicht dass das echte 3D-Texturen sind, also auch Tiefe haben) steckt.
Allerdings ist die momentane Funktionalität in Sachen 3D-Texturen keinesfalls final, denn Lars war so freundlich mir eine selbstgeschriebene Unit zukommen zu lassen, mit deren Hilfe man mathematische Ausdrücke auswerten kann. Und deshalb wird man später keine festen Funktionen zur Texturengenerierung mehr haben, sondern einen Formeleditor in dem man dann seine eigenen Formeln für deren Erstellung eingeben kann. Damit ist man dann im Endeffekt "grenzenlos frei".

Das wars also zum aktuellen SETH-Stand. Die Änderungen gibts momentan weder im CVS, noch als Installationspaket, aber beides wird evtl. noch am Wochenende folgen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 25, 2003 20:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wie im letzten Newsupdate versprochen gibts jetzt die aktuelle SETH-Version in gewohnter Setupform :

# SETH 0.1.8.8 - Installer (4,56 MByte, 16 Shaderbeispiele, Dokumentation)

Gegenüber dem letzten Posting hat sich zusätzlich folgendes geändert :
  • Render- und Rendertotexturepasses können nun wieder enfernt werden (Kontextmenü)
  • Texturen können wieder "entbunden" werden (momentan nur 2D-Texturen)
  • 3D-Texturen können nun gespeichert und wieder geladen werden (3D-Texturendialog)
  • Simple GL-Fehlerausgabe und Rendergeschwindigkeitsanzeige im Vorschaufenster
  • Umgebungsparameter nun erstell- und nutzbar (Kontextmenü im Shadereditor)


Zusammen mit den Änderungen des letzten Postings gibts also wieder einige neue Features die gerne genutzt werden sollten. Und Feedback ist natürlich wie immer erwünscht.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Okt 02, 2004 16:18 
Offline
DGL Member

Registriert: Sa Okt 02, 2004 15:16
Beiträge: 1
Wohnort: Linz a.d. Donau
Ja, das steht hier im Weg, deshalb weg damit, find aber kein Löschen. Falls du was zu 2D Filterung weißt, schreib mir bitte eine Mail


Zuletzt geändert von seyyes am So Okt 03, 2004 23:48, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 03, 2004 11:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Bitte poste das mal woanders, dieses Forum hier ist nur für die Projekte gedacht, es gibt ein eigenes Forum wo man was zu den Projekten posten kann. Ich will die Diskussion nämlich nicht hier führen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 46 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.111s | 17 Queries | GZIP : On ]