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

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

1

09.06.2013, 18:23

PCF bei Omnidirectional-Shadow-mapping

Hallo. Wie kann ich bei CubeDepthMaps PCF verwenden? So sieht mein Schattentest aus:

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
// HLSL
float4 LightPointSH(float3 inObjPos)
{
    float4 output;
    output = g_GlobalAmbient;

    float3 PLightDirection = 0.0f;
    PLightDirection.xyz = lightPosition.xyz - inObjPos;
    float distance = length(PLightDirection.xyz);
    PLightDirection.xyz = PLightDirection.xyz / distance;

    float shadowMapDepth = texCUBE(SampleTypeDepth, -PLightDirection.xyz).x;

    if(distance > shadowMapDepth)    
    {
        return output;
    }       
    else
    {
        return diffuseColor;
    }
}

Wie kann ich nun meinen Richtungsvektor einen Pixel weiter setzen? Kann ich zur X-Komponente einfach 1/ShadowMapSize hinzuzählen?

Danke im Voraus.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

2

09.06.2013, 20:45

Ich habe es doch noch hinbekommen. Lösung für einen Sample:

C-/C++-Quelltext

1
2
float dxy = 1.0/512.0f;
sourcevals[1] = (texCUBE( SampleTypeDepth, -(PLightDirection.xyz + float3(dxy, 0, 0)) ).x < distance)? 0.0f: 1.0f;

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

3

09.06.2013, 23:51

Wenn Deine LightDirection normiert ist, kommt 1/Texturauflösung grob hin. Du musst aber bedenken, dass dieser Offsetvektor in zwei von sechs Fällen quasi keine Veränderung bewirkt.

Es gibt bei Google ein kleines Kommandozeilen-Tool, dass Dir beliebige Anzahl Samples poisson-verteilt auf einer Kreisfläche oder in einer Kugel erzeugen kann... kann ich empfehlen. Ich bin abgebrochen bei dem Versuch, das selbst auszurechnen.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Werbeanzeige