Zitat Zitat von General.Jung Beitrag anzeigen
Hello shadypepe,

ja das ganze wirkt, wie als wenn eine Linse die Oberfläche verkrümmt. Habt Ihr alle Crysis unter Direct 3D 9? Ich könnte mir als einen Grund erklären, dass hier der Effekt aufhört, da dieser ja über eine client config variable auf eine maximal Entfernung begrenzt werden kann und wenn man auf dem Boden liegt oder in einem bestimmten Winkel sieht man die Heightmap als overlay, dass diese darüber gelegt ist!
Also ich hab schon ein bissl Erfahrung mit POM, nicht als Programmierer sondern als Anwender bzw. als Nutzer eines Mod-Shaders für die Source Engine. Tot für POM sind meistens schlechte smoothing groups. Smoothing groups fallen bei der Geometrie nicht auf, wohl aber beim Shading und POM fällt unter die 2. Kategorie.
POM funktioniert ein bisschen wie ein RayTracer. Man hat die Polygon-Oberfläche und die Höhenmap-Oberfläche. Man sucht nun nach dem Schnittpunkt des View-Vektors mit der Höhenmap-Oberfläche. Dafür gibt es mehrere Ansätze, aber seid versichert, das CryTek hier ziemlich saubere Arbeit geleistet hat, denn die Art von Artefakte, welche bei schlechten Suchroutinen entstehen, fallen bei Crysis erfreulicher Weise kaum auf.
Also wenn der Schnittpunkt gefunden ist, dann schaut das Programm, welche Farbe der korrespondierende Pixel der Polygon-Oberfläche an dieser Stelle hätte. Diese Farbe wird an der stelle benutzt, an der der View-Vektor die korrespondierende Polygon-Oberfläche schneidet. Simples Parallax-Mapping hingegen verschiebt Pixel vereinfach gesagt. Dadurch ist aber das Self-Occlusion und Self-Shadowing nicht möglich.

Bei Crysis passieren jetzt meiner Meinung nach folgende Dinge bzw. folgende Dinge könnten der Grund sein.
Unter bestimmten Blickwinkeln setzt ein autosmoother für das shading ein. Die geometrischen Informationen für das Shading sind davon beeinflusst. Mit diesen falschen Werten werden dann auch falsche Schnittpunkte berechnet. Oder das Level hat an bestimmten Stellen schlechte smoothing groups. Ein anderes Problem könnte sein, dass schlicht gar kein Schnittpunkt gefunden werden kann, weil es keinen gibt. Eine intelligente Routine würde diesen Pixel ganz einfach ausblenden. Deshalb sind mit POM auch Silhouetten möglich (wobei man ja zunächst rein intiutiv vermutet, dass Silhouetten nur mit echter Geometrie möglich sind).