Du bist nicht angemeldet.

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

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

101

03.10.2011, 22:13

Ich übergebe die Shadowmatrix aber als ganze, nicht in GL_TEXTURE7 oder sonst wie.
Die kleinere weiße Kugel ist die Lichtquelle?

Mein Source

102

03.10.2011, 23:06

Die kleinere weiße Kugel ist die Lichtquelle?
Jap!
Was genau funktioniert denn nicht? Wenn ich mir deine Shadowmap so anschau, entspricht das, was im Video zu sehen ist, eigentlich genau dem, was ich erwarten würde!?
Naja ich empfand die ganzen Schatten, die da nciht hätten seinen dürfen als etwas störend ;)
Das Problem ist nun aber beseitigt! Ich habe bei der Shadowmap einfach das Clamping angestellt... Jetzt läuft es, allerdings auch nicht 100%ig.

Noch ein Video

Das sieht zwar auf den ersten Blick ganz nett aus dank dem zusätzlichen Phongshading, allerdings ist auf der Oberseite des Würfels ebenfalls ein Schatten zu sehn, der da eigentlich nciht sein sollte.
Meine Vermutung wäre, dass es etwas mit dem Culling zu tun hat. Ich hab da auch schon einiges rumprobiert, aber leider bringt das alles nicht den gewünschten Erfolg...

Irgendwelche Ideen?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

103

04.10.2011, 00:27

Depth-Bias in die falsche Richtung gerechnet?

104

04.10.2011, 09:54

Eigentlich sollte es richtig sein, hab es nur aus dem Tut so rein kopiert. Zuerst Bias laden, dann ModelView drauf multiplizieren und dann Projection

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static double modelView[16];
static double projection[16]; 
const GLdouble bias[16] = {
0.5, 0.0, 0.0, 0.0, 
0.0, 0.5, 0.0, 0.0,
0.0, 0.0, 0.5, 0.0,
0.5, 0.5, 0.5, 1.0};

// Grab modelview and transformation matrices
glGetDoublev(GL_MODELVIEW_MATRIX, modelView);
glGetDoublev(GL_PROJECTION_MATRIX, projection);

glLoadIdentity();
glLoadMatrixd(bias);

// concatating all matrice into one.
glMultMatrixd (projection);
glMultMatrixd (modelView);

105

04.10.2011, 11:52

So ich habs jetzt endgültig hingekriegt :D
Ich hab vergessen die Transformationen und Rotationen auch mit auf die Shadowmatrix anzuwenden, die ich in in dem GL_TEXTURE7 Stack mit in den Shader zu übergeben.

DeKugelschieber hat einfach die Inverse ModelView-Matrix mit aufmultipliziert, jedoch hatte ich gerade keine Lust eine Funktion zu schreiben, die die Inverse mit ausrechnet :D

106

04.10.2011, 12:08

DeKugelschieber hat einfach die Inverse ModelView-Matrix mit aufmultipliziert, jedoch hatte ich gerade keine Lust eine Funktion zu schreiben, die die Inverse mit ausrechnet :D

Kenn ich. Ich hab damals ein Codeschnipsel im Internet gefunden, kann man imemr mal brauchen, wenn man grad keine komplette Matrizenbibliothek zur Hand hat.

C-/C++-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
bool InvertMatrix(const float m[16], float invOut[16])
{
    float inv[16], det;
    int i;

    inv[0] =   m[5]*m[10]*m[15] - m[5]*m[11]*m[14] - m[9]*m[6]*m[15]
    + m[9]*m[7]*m[14] + m[13]*m[6]*m[11] - m[13]*m[7]*m[10];
    inv[4] =  -m[4]*m[10]*m[15] + m[4]*m[11]*m[14] + m[8]*m[6]*m[15]
    - m[8]*m[7]*m[14] - m[12]*m[6]*m[11] + m[12]*m[7]*m[10];
    inv[8] =   m[4]*m[9]*m[15] - m[4]*m[11]*m[13] - m[8]*m[5]*m[15]
    + m[8]*m[7]*m[13] + m[12]*m[5]*m[11] - m[12]*m[7]*m[9];
    inv[12] = -m[4]*m[9]*m[14] + m[4]*m[10]*m[13] + m[8]*m[5]*m[14]
    - m[8]*m[6]*m[13] - m[12]*m[5]*m[10] + m[12]*m[6]*m[9];
    inv[1] =  -m[1]*m[10]*m[15] + m[1]*m[11]*m[14] + m[9]*m[2]*m[15]
    - m[9]*m[3]*m[14] - m[13]*m[2]*m[11] + m[13]*m[3]*m[10];
    inv[5] =   m[0]*m[10]*m[15] - m[0]*m[11]*m[14] - m[8]*m[2]*m[15]
    + m[8]*m[3]*m[14] + m[12]*m[2]*m[11] - m[12]*m[3]*m[10];
    inv[9] =  -m[0]*m[9]*m[15] + m[0]*m[11]*m[13] + m[8]*m[1]*m[15]
    - m[8]*m[3]*m[13] - m[12]*m[1]*m[11] + m[12]*m[3]*m[9];
    inv[13] =  m[0]*m[9]*m[14] - m[0]*m[10]*m[13] - m[8]*m[1]*m[14]
    + m[8]*m[2]*m[13] + m[12]*m[1]*m[10] - m[12]*m[2]*m[9];
    inv[2] =   m[1]*m[6]*m[15] - m[1]*m[7]*m[14] - m[5]*m[2]*m[15]
    + m[5]*m[3]*m[14] + m[13]*m[2]*m[7] - m[13]*m[3]*m[6];
    inv[6] =  -m[0]*m[6]*m[15] + m[0]*m[7]*m[14] + m[4]*m[2]*m[15]
    - m[4]*m[3]*m[14] - m[12]*m[2]*m[7] + m[12]*m[3]*m[6];
    inv[10] =  m[0]*m[5]*m[15] - m[0]*m[7]*m[13] - m[4]*m[1]*m[15]
    + m[4]*m[3]*m[13] + m[12]*m[1]*m[7] - m[12]*m[3]*m[5];
    inv[14] = -m[0]*m[5]*m[14] + m[0]*m[6]*m[13] + m[4]*m[1]*m[14]
    - m[4]*m[2]*m[13] - m[12]*m[1]*m[6] + m[12]*m[2]*m[5];
    inv[3] =  -m[1]*m[6]*m[11] + m[1]*m[7]*m[10] + m[5]*m[2]*m[11]
    - m[5]*m[3]*m[10] - m[9]*m[2]*m[7] + m[9]*m[3]*m[6];
    inv[7] =   m[0]*m[6]*m[11] - m[0]*m[7]*m[10] - m[4]*m[2]*m[11]
    + m[4]*m[3]*m[10] + m[8]*m[2]*m[7] - m[8]*m[3]*m[6];
    inv[11] = -m[0]*m[5]*m[11] + m[0]*m[7]*m[9] + m[4]*m[1]*m[11]
    - m[4]*m[3]*m[9] - m[8]*m[1]*m[7] + m[8]*m[3]*m[5];
    inv[15] =  m[0]*m[5]*m[10] - m[0]*m[6]*m[9] - m[4]*m[1]*m[10]
    + m[4]*m[2]*m[9] + m[8]*m[1]*m[6] - m[8]*m[2]*m[5];

    det = m[0]*inv[0] + m[1]*inv[4] + m[2]*inv[8] + m[3]*inv[12];
    if (det == 0)
            return false;

    det = 1.0 / det;

    for (i = 0; i < 16; i++)
            invOut[i] = inv[i] * det;

    return true;
}
Lieber dumm fragen, als dumm bleiben!

107

04.10.2011, 13:44

Kenn ich. Ich hab damals ein Codeschnipsel im Internet gefunden, kann man imemr mal brauchen, wenn man grad keine komplette Matrizenbibliothek zur Hand hat.

Ah cool vielen Dank

Mein fertiges Werk kann sich hier angeguggt werden.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

108

04.10.2011, 15:25

:thumbup:

Werbeanzeige