DGL https://delphigl.com/forum/ |
|
Standard Werte in struct https://delphigl.com/forum/viewtopic.php?f=20&t=11333 |
Seite 1 von 1 |
Autor: | mathias [ So Jan 25, 2015 18:05 ] |
Betreff des Beitrags: | Standard Werte in struct |
Kann man bei struct auch Default-Werte zuweisen ? Code:
|
Autor: | Bergmann89 [ So Jan 25, 2015 18:47 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
So sollte es gehen (untested): Code:
|
Autor: | mathias [ So Jan 25, 2015 20:15 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Danke, jetzt geht es, dies kompiliert er ohne Fehler. Code:
|
Autor: | mathias [ Mi Jan 28, 2015 22:49 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Ich habe folgenden Code gefunden. Code:
Wen ich dort eine Standard-wert zuweisen will, kommt ein Fehler. Code:
Muss ich da den Umweg über struct machen ? Was macht layout (std140), mit google habe ich nichts schlaues gefunden ? |
Autor: | OpenglerF [ Do Jan 29, 2015 12:15 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Ein Blick ins OpenGL Wiki: https://www.opengl.org/wiki/GLSL_Interf ... ory_layout |
Autor: | mathias [ So Feb 01, 2015 23:09 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Jetzt weiss ich wie man Block-Uniform ansprechen kann. Shader: Code:
Code:
Ich nehme mal an, das dies die schnellere Variante ist, als jede Uniform-Variable einzeln zu übergeben. Sind Uniform Übergabe eine teure Sache ? Oder merkt man es nicht gross, wen man bei jedem Draw-Scene es aufruft ? |
Autor: | TAK2004 [ Mo Feb 02, 2015 08:59 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Uniform bilden aktuell(OpenGL 3 und aufwärts) das größte Bottleneck in deferred rendering engines. Uniform updates benötigen sehr häufig einen syncpoint, dieser ist eine synchronisierung zwischen GPU und CPU, also beide warten aufeinander, bis sie frei sind und genau die Bus Frequence überlappt. Dann werden Daten ausgetauscht und beide dürfen normal weiter arbeiten. Syncpoints kann man laut "Zero Overhead" Team mit einem Profiler auf spüren, diese Calls kosten in der regel auf der CPU mehr als 1us. Bindless API und UBO zielt genau auf dieses Problem ab. UBO benutzt man, um die Anzahl der Syncpoints zu reduzieren, in dem man mehrere Daten in ein Objekt packt und das Objekt dann updated. Matrizen für Kamera und Licht werden häufig als UBO verpackt oder Shader und deren Settings für ein Material(was deferred rendering sehr exessiv benutzt). Google mal nach Zero Driver Overhead und da gibt es dann diverse links zu verwandte Paper. NV hatte glaub bei Command Buffer Object Slide ne Liste von Syncpoint Kaniddaten. |
Autor: | mathias [ Mo Feb 02, 2015 18:10 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Wen ich es richtig verstehe, würde so etwas Sinn machen ? Code:
|
Autor: | TAK2004 [ Mo Feb 02, 2015 20:01 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
allUniforms ist ein viel versprechender UBO Kandidat. http://www.geeks3d.com/20140704/gpu-buffers-introduction-to-opengl-3-1-uniform-buffers-objects/ Privat benutzt ich GLSL 4.2 location und named UBO. Dies erlaubt, dann auch die Texturen initial zu binden. Binding points Code:
location sagt an welcher Stelle im VAO die Daten liegen und erspart das lästige rum hantieren mit namen im Shader suchen und dann mit den Daten zu verbinden. Man bindet im VAO die Attribute und im Shader sagt man, in welchen Array die liegen. Code:
|
Autor: | mathias [ Mo Feb 02, 2015 20:22 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Code:
Dafür ist wohl OpenGL 3.3 zu schwach. Ansonsten wäre es eine gute Sache. Deine Links werde ich später genauer angucken. |
Autor: | mathias [ Mo Feb 02, 2015 23:07 ] |
Betreff des Beitrags: | Re: Standard Werte in struct |
Wieso geht dir Verschachtelung mit vec3 bei Light.Pos nicht ? Code:
Code:
Ändere ich alle Light.Pos Parameter aus vec4 dann geht es. Code:
Code:
Code:
Nachtrag: Habe ich im Pascal-Code TVector4f und im Shader vec3, dann funktioniert es komischerweise auch. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |