Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
for (int i = 0; i < Lights.Length; i++) { int position = Gl.glGetUniformLocation(shader, "Lights["+i+"].enabled"); int positiona =Gl.glGetUniformLocation(shader, "Lights["+i+"].ambient"); int positionb = Gl.glGetUniformLocation(shader, "Lights["+i+"].diffuse"); int positionc = Gl.glGetUniformLocation(shader, "Lights["+i+"].specular"); int positiond = Gl.glGetUniformLocation(shader, "Lights["+i+"].position"); int positione = Gl.glGetUniformLocation(shader, "Lights["+i+"].halfVector"); int positionf = Gl.glGetUniformLocation(shader, "Lights["+i+"].spotDirection"); int positiong = Gl.glGetUniformLocation(shader, "Lights["+i+"].spotExponent"); int positionh = Gl.glGetUniformLocation(shader, "Lights["+i+"].spotCutoff"); int positioni = Gl.glGetUniformLocation(shader, "Lights["+i+"].spotCosCutoff"); int positionj = Gl.glGetUniformLocation(shader, "Lights["+i+"].spotOuterConeCutOff"); int positionk = Gl.glGetUniformLocation(shader, "Lights["+i+"].constantAttenuation"); int positionl = Gl.glGetUniformLocation(shader, "Lights["+i+"].linearAttenuation"); int positionm = Gl.glGetUniformLocation(shader, "Lights["+i+"].quadraticAttenuation"); } |
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
Ich habe gelesen das in GLSL alle Variablen die nicht verwendet werden wegoptimiert werden.
Wofür steht eigentlich die 0?
Ist das auch eine Gültige Adresse?
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
Ich vermute mal das die Lichtposition im Falschen Space ist.
Aber in welchen muss sie? und wie stell ich das an? die Position wird ohne multiplikation einer Matrix übergeben.
Treue Seele
Wohnort: Berlin
Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik
HLSL-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/*Vertexshader*/ attribute vec4 InVertex; attribute vec4 InNormal; attribute vec4 InTexCoord; attribute vec4 InTangent; varying mat3 tangentSpace; varying vec3 vertex; void main(void) { vec3 tangent=vec3(InTangent); vec3 binormal =cross(vec3(InNormal),tangent); tangentSpace= mat3(tangent.x,binormal.x,InNormal.x, tangent.y,binormal.y,InNormal.y, tangent.z,binormal.z,InNormal.z); gl_Position = gl_ModelViewProjectionMatrix * (vec4(InVertex)); gl_TexCoord[0]=InTexCoord; gl_TexCoord[1]=InTexCoord; vertex=vec3(gl_ModelViewMatrix*InVertex); } |
HLSL-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/*Fragmentshader*/ /* Lichtstruktur */ struct light { bool enabled; vec4 ambient; vec4 diffuse; vec4 specular; vec4 position; vec3 spotDirection; float spotCutoff; float sharpness; float constantAttenuation; float linearAttenuation; float quadraticAttenuation; }; uniform light Lights[gl_MaxLights]; uniform sampler2D texSampler1; uniform sampler2D texSampler2; varying mat3 tangentSpace; varying vec4 vertex; void main(void) { vec3 Normal=vec3(texture2D(texSampler2,vec2(gl_TexCoord[0])))-0.5; Normal*=tangentSpace; Normal =normalize(gl_NormalMatrix * Normal); vec3 lightvec; vec4 FinalColor; vec4 DiffuseColor; for (int i=0;i<gl_MaxLights;i++) { if(Lights[i].enabled) { lightvec=Lights[i].position.xyz; lightvec=normalize(lightvec - vec3(vertex)); DiffuseColor=Lights[i].diffuse; DiffuseColor*=max(dot(Normal,lightvec),0.0); FinalColor+=DiffuseColor; } } gl_FragColor=FinalColor; } |
Werbeanzeige