DGL https://delphigl.com/forum/ |
|
glSlang: Mein erster Shader (download :) ) https://delphigl.com/forum/viewtopic.php?f=20&t=3523 |
Seite 1 von 1 |
Autor: | Aya [ Fr Nov 26, 2004 21:28 ] |
Betreff des Beitrags: | glSlang: Mein erster Shader (download :) ) |
Hi, ich wollte euch mal meinen ersten shader mit glSlang zeigen und fragen wie er gefällt, und vorallem.. wieviel FPS er bei euch hat.. ![]() Download: http://www.Koshigaya.de/DelphiGL/Shader.rar Tastatur Steuerung ist im Programm selbst erklärt... Am rechten Bildschirmrand habt ihr 5 Kontrollfelder für die Lichter womit ihr sie ein/ausschalten könnt sowie ein Feld für das Ambient Light und für die Specular der einzelnen Objekte. Bisher unterstützt der Shader eine Unbegrenze anzahl an Point und Spotlights (ok.. jenachdem wieviel die GraKa hergibt *g* In der Demo sind nur 5 Verfügbar.) und NormalMapping (in der Demo mal mit F4 umschalten zum Kopf um es zu sehen.)... BumpMapping ebenfalls, allerdings hab ich da in der Demo nichts integriert für... ![]() Hier noch ein Screenshot: ![]() Au'revoir, Aya~ |
Autor: | dopeFish [ Fr Nov 26, 2004 23:22 ] | ||
Betreff des Beitrags: | |||
Mal ganz abgesehen davon, daß meine Grafikkarte eh keine Shader unterstützt (kA warum ich mir das eigentlich downgeloaded hab, vielleicht um die Fehlermeldung zu sehen ;p ), kommt beim laden des Programmes nen Fehler der wohl nix mit der Grafikkarte zu tun hat:
|
Autor: | Aya [ Fr Nov 26, 2004 23:36 ] |
Betreff des Beitrags: | |
Hi, ups... hab ich doch glatt eine Zeile vergessen ![]() Ok.. ist korrigiert.. sollte nun bei jedem (Shaderfähige GraKa vorrausgesetzt) gehen ![]() Au'revoir, Aya~ |
Autor: | Dark Avenger [ Fr Nov 26, 2004 23:41 ] |
Betreff des Beitrags: | |
Bei mir kommt zwar keine fehlermeldung aber unten steht immer Link failed: All shader objects have not been successfully compiled. Hab ne Radion 9800. Die sollte eigentlich keine probleme mit Shadern haben. |
Autor: | LarsMiddendorf [ Fr Nov 26, 2004 23:56 ] |
Betreff des Beitrags: | |
Bei mir ging es vorher nicht und jetzt auch nicht mit den gleichen Fehlern wie oben. Warum erstellst du denn die Dateien object.obj.tmp und object.obj und löscht sie gleich wieder? |
Autor: | Aya [ Sa Nov 27, 2004 00:21 ] |
Betreff des Beitrags: | |
LarsMiddendorf hat geschrieben: Bei mir ging es vorher nicht und jetzt auch nicht mit den gleichen Fehlern wie oben.
Warum erstellst du denn die Dateien object.obj.tmp und object.obj und löscht sie gleich wieder? Hi, mit welchem gleichen Fehler?? Wenn immernoch die Datei nicht erstellt werden kann, mußt mal deinen BrowserCache löschen. Die Dateien Object.obj.tmp und Object.obj sind Resourcen die kurz entpackt werden... mein OBJ Loader hat irgendnen kleinen Bug in der LoadFromResource funktion... bei 5 von 6 Objekten funktioniert es.. und da ich vorhin nich die lust hatte da den fehler zu suchen hab ich das 6te Objekt kurz über LoadFromFile geladen ![]() Au'revoir, Aya~ PS: Zu der Fehlermeldung von Dark... bist du sicher das die glSlang Shader bei dir gehen??? Wenn ja... hat wer ne ahnung ob man die irgendwie anders einbinden muß??? Ich hab's hier jetzt auf 5 Rechnern (leider alle nahezu gleiche konfig, Uni rechner) getestet.. da läuft's überall... (nVidia Karten).. |
Autor: | Lossy eX [ Sa Nov 27, 2004 10:26 ] |
Betreff des Beitrags: | |
Also bei mir ist er der Meinung er müsse das ganze in Software rendern! Nach ca 10 Sekunden warten erscheint dann auch mal das erste Bild. Das auf ner Radeon 9500 Pro. PS: An der Karte liegts nicht. Hatte auch gerade noch mal Saschas BumpMap demo ausprobiert. War mehr als schnell. |
Autor: | Sascha Willems [ Sa Nov 27, 2004 12:15 ] |
Betreff des Beitrags: | |
Bei mir läuft es auch in Software. Poste doch mal deine Shader, oder mach besser gleich ne EXE wo die separat sind, dann kann ich gleich sehen was los ist. So muss ich extra glIntercept nutzen um mir die Shader ansehen zu können. Hab das auch gleich gemacht, und einige deiner Shader sind ja riesen Dinger, da bin ich mir fast schon sicher dass (für Radeonkarten) entweder zu viele Instruktionen hast oder die Zahl der temporären Register sprengst. Da ist z.B. ein Lichtshader dabei der 5 Lichtquellen (stammt der von dir, oder ist der evtl. aus dem Orange-Book?) simuliert, und der ist mit Sicherheit zu umfangreich für Radeonkarten. Da wäre es besser nur 2-3 Lichter zu berechnen und dann per Multipass den Rest zu machen. Radonkarten können nämlich nicht so viele Instruktionen verarbeiten wie die Geforce-Karten, aber bei HL2 z.B. hat der längste Shader grade mal 90 Instruktionen. Ausserdem sagt mir das Validierungstool von 3DLabs dass mindestens einer (hab nich alle probiert) deiner Shader Fehler enthält. Der NV-glSlang-Compiler hält sich leider nicht 100% and die Sprachvorgaben, also kann es auch da zu Problemen kommen. |
Autor: | TAK2004 [ Sa Nov 27, 2004 13:14 ] |
Betreff des Beitrags: | |
Also bei scheint der wie tot zu sein keine Rückmeldung und dann ist der Prozess kurze zeit 2mal da und dann wieder 1mal aber keine rückmeldung bleibt. Also sehen tu ich nichts und aus dem log unten kann ich ersehen das er in software modus geht. Hab ne 9800SE mit neune Omega Treibern. |
Autor: | Aya [ Sa Nov 27, 2004 13:53 ] |
Betreff des Beitrags: | |
Hi, hab grad mal das Prog neu hochgeladen... diesmal so das man den Shader auch editieren kann... Muß aber noch eine sache zur bedienung sagen, im Shader selbst sind die Texte verschiedenfarbig.. das Programm stellt sich die Shader so zusammen wie es für die aktuelle anzahl der lichter benötigt wird. Blaue zeilen z.B. werden für jedes licht einmal in den Shader eingefügt wobei die # im Text durch eine fortlaufende Zahl ersetzt wird. rote Zeilen werden nur i nden Shader gepackt wenn NormalMaps vorhanden sind, dunkelRote nur dann wenn keine Normal Maps da sind. das gleiche mit Grün und dunkel Grün für BumpMaps. normal Schwarzer Text wird immer im Sahder eingefügt. mit F9 wird der Shader neu kompiliert. Au'revoir, Aya~ PS: Der Shader ist übrigens komplett von mir, nirgendwo irgendwas nachgelesen.. alles selber ausgedacht ![]() |
Autor: | Aya [ Mo Nov 29, 2004 23:39 ] |
Betreff des Beitrags: | |
Hi, mh... keine kommentare mehr??? Hatte gehofft zu erfahren an was es bei euch nun genau liegt das der Shader nicht geht, nachdem ich den Code etc hochgeladen hab.... Au'revoir, Aya~ |
Autor: | Sascha Willems [ Mo Nov 29, 2004 23:45 ] |
Betreff des Beitrags: | |
Ich hab doch oben gesagt warum es bei Radeon-Nutzern nicht geht. Dachte du hast das überlesen... |
Autor: | LarsMiddendorf [ Di Nov 30, 2004 00:20 ] |
Betreff des Beitrags: | |
Die Shader sind zu lang und länger als sie sein müßten. Für die Lichtintensität braucht man doch nicht erst über das Skalarprodukt und dann mit acos den Winkel ausrechnen und das dann wieder zurückskalieren. Da reicht doch nur das Skalarprodukt. Diese trigeometrischen Funktionen sind sehr teuer und kosten viele Befehle. Daher speichert man sie besser in einer Texture, wenn man sie unbedingt braucht. if Abfragen, ob ein Licht jetzt Spotlight ist usw.. gehören nicht in den Shader sondern man verwendet dann am besten vorher schon den richtigen Shader. Mit der Bedingten Kompilierung unter glsl kann man das ja auch ohne viel Aufwand lösen, so daß die nicht benutzten Befehle gar nicht mehr einkompiliert werden. Die Radeon 9800 kann auch 4 Lichter gleichzeitig berechnen, wenn man sich z.B. mit 16 Befehlen pro Licht begnügt kommt man gerade an die Grenze von 64 Befehlen. |
Autor: | Aya [ Di Nov 30, 2004 01:56 ] |
Betreff des Beitrags: | |
Hi, das mit der abfrage ob Spot oder Point is klar.. das is auch nur im Shader gelöst weil ich gern alles in einem haben wollte zum testen... ![]() ![]() Aber wegen der sache mit den zuvielen berechnungen... wo genau meinst du das??? Ich bin leider kein wirkliches Mathe genie... deswegen kann es sehr gut sein das da sinnlose rechnungen drin sind ![]() Aber beim Pointlight isses doch so das ich einmal die Intensity berechne und später dann noch den Winkel der Normalen zum Licht. Die zwei werte multiplizier ich dann... geht das noch einfacher??? Au'revoir, Aya~ |
Autor: | Sascha Willems [ Di Nov 30, 2004 11:22 ] | ||
Betreff des Beitrags: | |||
Im GL-SDK von ATI gibts übrigens ne Auflistung der ASM-Shaderbefehle und welche Ressourcen sie brauchen, da sieht mann auch dass besonders trigonometrische Funktionen (z.B. COS = 11) sehr viele Instruktionen brauchen, da es dafür keine Hardwarefunktion auf der GPU gibt, sowas macht man also wie Lars gesagt hat besser über einen Texturenlookup. Siehe das DOC-File im gezippten Anhang. Das dürfte zumindest beim anpassen der Shader auf R3x0-Karten helfen.
|
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |