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

Aktuelle Zeit: Di Mär 19, 2024 06:43

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Vulkan.pas
BeitragVerfasst: Mo Feb 22, 2016 18:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

ich hab mich die letzten 2 Tage schonmal mit Ida über Vulkan ausgetauscht. Wir sind zu den Schluss gekommen, dass es für alle Forenmitglieder interessant sein könnte, deshalb hab ich jetzt mal ein Projekt erstellt. Es geht um einen entsprechenden FPC/Delphi Header für die neue Vulkan API, sowie einige kleine Beispiele, Tutotials, Klassen- und Codesammlung. Kurz gesagt, alles was man so braucht um in Vulkan einsteigen zu können.
Aktuell gibt es schon ein Tool, welches den Header automatisiert aus der vk.xml generieren kann. Leider hatte ich aber noch kein Erfolg das ganze auch in einem kleinen Test-Projekt zum laufen zu bringen, aber das sollte ich in den nächsten paar Tagen hin bekommen.
Den aktuellen Stand könnt ihr euch aus folgendem Repo klonen: http://git.ccs-baumann.de/bitspace/Vulkan Ein entsprechendes Repo auf dem DGL Git Server folgt demnächst denke ich auch noch (falls Horazont mit ließt: Sie haben Post ;) )
So, das war's erstmal zum aktuellen Stand. Unterstützung/Anregungen/Feedback sind gern gesehen ;)

DGL Repo: ssh://gitolite@git.delphigl.com/Vulkan
Bergmann89 Repo: http://git.ccs-baumann.de/bitspace/Vulkan
Meinungs-Thread
Cross-Posting im Khronos Forum

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Vulkan.pas
BeitragVerfasst: Do Feb 25, 2016 22:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

ich komm gut vorran und hab jetzt schon ein passendes Device zum Rendern und eine kleine Klassen-Sammlung, die VulkanUtils oder kurz vku. Zu sehen ist leider immer noch nichts. Ich nehm mir gleich ein bischen mehr Zeit für die Implementierung, so muss ich im Nachhinein weniger nachpflegen. Hier erstmal ein Bild des aktuellen Stands:
Bild

Die genutzten Vulkan-Objekte sind in entsprechende Klassen gewrappt. Die Klasse macht nichts weiter als das Vulkan-Objekt zu verwalten und sicher zu stellen das es auch spec-konform genutzt wird. Die Parameter des Konstruktors sind weitestgehend identisch du den Parametern des entsprechenden API-Aufrufs. Neben den Wrapper-Klassen gibt es Factory-Klassen. Diese sind dafür zuständig die benötigten Informationen für die Erzeugung eines Objekts zusammen zu sammeln und entsprechend aufrubereiten. Wenn alle Daten vorhanden sind kann ein entsprechendes Objekt erstellt werden. Kleines Beispiel:
Code:
  1.   iFactory := TvkuInstanceFactory.Create;
  2.   try
  3.     iFactory.ApplicationInfo := vkuApplicationInfo(
  4.       'TestAnwendung',  // Application Name
  5.       1,                // Application Version
  6.       'TestEngine',     // Engine Name
  7.       1,                // Engine Version
  8.       VK_API_VERSION);  // API Version
  9.     iFactory.Extensions.Add('VK_KHR_win32_surface');
  10.     iFactory.Extensions.Add('VK_EXT_debug_report');
  11.     fInstance := iFactory.CreateInstance(fAllocHandler, false);
  12.   finally
  13.     FreeAndNil(iFactory);
  14.   end;


Dem Nutzer ist freigestellt was für Klassen er nutzt. Er hat die Wahl auf der nakten Vulkan API zu arbeiten, sich von einfachen Wrapper-Objekten unterstützen zu lassen oder die Erzeugung seines Objekts voll und ganz den Factories zu überlassen und nur diese mit Daten zu füttern.
So weit zu Konzept der VulkanUtils und zum aktuellen Stand. Was haltet ihr von der Herangehensweise? Würdet ihr da so mitgehen? Was würdet ihr anders machen? Würdet ihr so eine Klassen-Sammlung nutzen wollen? Feedback ist gern gesehen ;)

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Vulkan.pas
BeitragVerfasst: Mi Mär 09, 2016 19:30 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

ich hab nochmal den Generator überabeitet, der die Vulkan.pas aus der XML generiert. Jetzt ist es eine gute Mischung aus "automatisch generiert" und "gut lesbar". Die entsprechenden Extensions und IFDEFs sind jetzt auch automatisch mit drin. Ihr könnt euch das ja nochma ansehen und eure Meinung dazu sagen.
Das nächste auf der ToDo: endlich mal ein Bild rendern :mrgreen:

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Vulkan.pas
BeitragVerfasst: Mo Mär 14, 2016 20:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

bei der Impelementierung des Triangle-Beispiels hab ich bemerkt das man die Funktions-Zeiger aus der Vulkan.dll gar nicht mehr global in den Header legen kann, da ja die Funktionen abhängig von der Instance oder dem Device sind. Deshalb hab ich alle Funktionen entsprechen in ein extra Objekt gepackt wo sie dann geladen und verwendet werden können. Das ist zwar nicht ganz so schön wie bei unserem OpenGL Header, aber leider notwendig.

Die Klassen zu Verwaltung und Erzeugung der SwapChain sind soweit auch fertig. Soweit ich das überblicken kann fehlt jetzt nur noch ImageView und ein entsprechender CommandBuffer zum rendern. Das wird dann auch die Aufgabe der nächsten Tage. Soweit zum aktuellen Stand.

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Vulkan.pas
BeitragVerfasst: So Apr 10, 2016 14:02 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey Leute,

auch wenn es hier in letzter Zeit sehr ruhig war habe ich immer wenn ich Zeit hatte weiter an der Implementierung gearbeitet. Ich bin soweit fast fertig, bin jetzt aber auf ein Problem gestoßen wo ich nicht recht weiter weiß. Deshalb wollte ich den aktuellen Stand mal mit euch teilen und vlt hat der ein oder andere ja mal Zeit sich das Problem anzusehen. Der aktuelle Stand liegt im DGL git oder in meinem Repo: http://git.ccs-baumann.de/bitspace/Vulkan

Das Problem ist folgendes:
Ich habe alles Instanzen, Objekte, Buffer und Sonstiges erstellt, was ich zum Rendern benötige. Ich habe mich dabei an die Beispiele von Sascha gehalten und diese eig nur übersetzt und die wichtigsten Sachen in ein paar Klassen gewrappt. Ganz zum Schluss der Initialisierung werden die CommandBuffer für das Rendern gefüllt und dort bekomm ich beim Aufruf von vkCmdDrawIndexed eine SIGSEGV im Treiber (nvoglv32.dll DrvValidateVersion). Den Fehler hatte ich im Laufe der Implementierung schon öffters. Das lag meißtens an irgendwelchen Objekten die ich nicht richtig übergeben hatte (NULL-Objekt). Ich bin den Beispiel-Code nochmal durch gegangen und kann aber nichts finden was ich vergessen hätte. In meinem Projekt geht es um diese Zeile. Wäre super wenn wir das Problem zusammen lösen könnten, denn dann sollte man auch schon die ersten Bilder sehen können (endlich!).

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Vulkan.pas
BeitragVerfasst: Mo Apr 11, 2016 18:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
So Leute,

der Fehler von gestern konnte Dank Sascha auch gelöst werden, heißt es gibt _ENDLICH_ was zu sehen :)
Den aktuellen Stand findet ihr wie immer in einem der beiden git Repositories. Bevor ich jetzt aber weiter Energie und Zeit in das Projekt stecke würd ich gern wissen ob das überhaupt jemand nutzt, bzw. nutzen will. Ich denke der Anfang ist gemacht und es gibt eine solide Grundlage um in FPC mit Vulkan einzusteigen. Zugegeben ein wenig Doku fehlt noch, die mach ich bei Gelegenheit mal noch, aber ich denke das meißte ist selbst erklärend bzw. nichts anderes als in schon bekannten Tutorials.
Soweit von mir. Wie gesagt, ein wenig Feedback wäre schön ;)

MfG Bergmann.


Dateianhänge:
triangle.png
triangle.png [ 39.85 KiB | 16610-mal betrachtet ]

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.
Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.028s | 19 Queries | GZIP : On ]