Hi,
hab endlich glSlang-fähige Treiber für meine FX5200 und muss sagen, bin absolut begeistert von glSlang.
Das einzige was mich stört sind 2 Dinge:
1. Die niedrige Performance und
2. wäre es perfekt, wenn es das ganze in pascal ähnlicher Sprache geben würde also so wie fxPascal aber mit den features die glSlang hat.
Wäre es nicht realisierbar, eine Compiler dafür zu schreiben, ich meine sollte doch nicht so schwierig sein
einfach ein pascal Shader in die C-Spache durch einen compiler umzuwandeln, das würde den Einstieg für uns Delphier
erleichtern, denn ich denke viele schrecken davor zurück, da der gesehene Code in Beispielen ungewohnt ist.
Nur mal so ne Idee...
Aber ich weiche grad von meiner eigentlichen Frage ab....
Also hab mir SoS Tutorial schon vor längerer Zeit angesehen, aber nie wirklich was selber gemacht und habe nun innerhalb weniger Minuten einen Light-Shader geschrieben.
Mein Code im Fragment Shader sieht für 2 Lichtquellen so aus:
Code: uniform vec4 LightColor0 , LightColor1; uniform vec4 LightPos0 , LightPos1; uniform float LightStrength0 , LightStrength1; varying vec4 vpos; //<- Position des Fragments void main(void) { float d; d = 1.0 - distance(LightPos0,vpos)/LightStrength0; gl_FragColor = LightColor0*d; d = 1.0 - distance(LightPos1,vpos)/LightStrength1; gl_FragColor += LightColor1*d; }
Vielleicht ist meine Frage bereits jetzt klar geworden...
was ist wenn ich 10 oder mehr Lichtquellen haben will,
dann wird der Code sehr unübersichtlich.
Mein Problem ist: Wie übergebe ich arrays, oder Strukturen in die Shader
und wie kann ich dann z.B. eine For-Schleife über die ganzen Lichquellen laufen lassen,
mein Probelm dabei ist die Überprüfung der Länge des Arrays (length(Array)oder Hight(Array) geht ja im Shader nicht...Oder???)
Nun ja ansonsten komm ich eigentlcih voll klar
Dateianhänge: |
Dateikommentar: hier nochmal ne Screenshoot, weil ich so begeistert bin.
SHADOW

Light(glSlang).JPG [ 9.12 KiB | 7509-mal betrachtet ]
|
|