So implementieren Sie weiche Schatten für omnidirektionales (Punkt-) Licht. Wir verwenden die typische Shadow-Mapping-Technik. Die Tiefe wird zum Texturwürfel gerendert und das Adressieren ist dann ziemlich einfach. Nur mit Vektor von Licht zu Fragmenten Weltposition. Es funktioniert perfekt. Bis du weiche Schatten willst. In unserem Motor verwenden wir die PCSS-Technik für Scheinwerfer. Aber für Punktlicht beginnen Probleme.
Wie probiere ich in 3D?
Ich habe eine Technik entwickelt, bei der eine orthonormale Basis aus einer Richtung und einem Aufwärtsvektor (0,1,0) erstellt wird. Und dann multiplizieren Sie den Abtastvektor (so etwas wie diesen (1.0, i / depthMapSize, j / depthMapSize) mit dieser Basis. Aber das (natürlich :)) sieht für Vektoren in der Nähe von (0,1,0) und (0, - ziemlich schlecht aus 1,0).
Ich werde mich über jede Hilfe freuen.