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

Aktuelle Zeit: Sa Jul 19, 2025 23:37

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Nov 26, 2004 21:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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:
Bild

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 26, 2004 23:22 
Offline
DGL Member

Registriert: Do Nov 20, 2003 19:52
Beiträge: 48
Wohnort: Tillingen bei Chemnitz
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:


Dateianhänge:
Dateikommentar: hab kein Laufwerk K ;(
err0r.JPG
err0r.JPG [ 27.99 KiB | 7871-mal betrachtet ]

_________________
...die Idee ist gut, doch die Welt noch nicht bereit...
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 26, 2004 23:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ups... hab ich doch glatt eine Zeile vergessen :oops:
Ok.. ist korrigiert.. sollte nun bei jedem (Shaderfähige GraKa vorrausgesetzt) gehen :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 26, 2004 23:41 
Offline
DGL Member

Registriert: Sa Aug 30, 2003 22:23
Beiträge: 36
Wohnort: Hamburg
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.

_________________
<< Ich werde Ewig leben oder beim Versuch dies zu erreichen, sterben! >>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 26, 2004 23:56 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 27, 2004 00:21 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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)..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 27, 2004 10:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 27, 2004 12:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
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.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 27, 2004 13:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
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.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 27, 2004 13:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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 :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 23:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 23:45 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich hab doch oben gesagt warum es bei Radeon-Nutzern nicht geht. Dachte du hast das überlesen...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 00:20 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 01:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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... :) Der wird dann schon noch auseinander gepflückt später :)

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~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 11:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
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.


Dateianhänge:
Radeon 9700 OpenGL Programming and Optimization Guide.zip [20.35 KiB]
309-mal heruntergeladen

_________________
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  [ 15 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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.010s | 17 Queries | GZIP : On ]