Seltsame Ergebnisse von Shadern, die zur Vorverarbeitung der Federphysik-Simulation verwendet werden

9

Ich mache eine Spring-Physik-Simulation mit 2D-Samplern, um einige Positionsdaten in einem Fragment-Shader aufzunehmen und vorzuverarbeiten und sehr seltsame Ergebnisse zu erhalten. Wenn ich mit 16 einzeln angeordneten Federn anfange (ein Punkt am Ende einer unsichtbaren Feder, der von einem unsichtbaren Anker stammt), endet die Visualisierung mit acht Paaren, wobei jedes Paar an demselben Feder-Ankerpunkt hängt. Wenn ich jedoch einfach die Visualisierung verwende, um die Punkte nur mit den tOffsets -Werten zu platzieren, sind alle Informationen zur Berechnung der einzelnen Ankerpunkte vorhanden und werden korrekt angezeigt (natürlich keine Physik). Es ist einmal, wenn ich zurück in die Physik des Frühlinges hinzufüge, dass ich wieder mit Paaren enden werde. Wenn ich die Visualisierung beobachte, kann ich auch sagen, dass die Ankerpunktwerte der Paare keine der ursprünglichen 16 Ankerpunktwerte sind. Irgendeine Idee, was hier vor sich geht? (Siehe sowohl die Geige als auch die markierten Inline-Kommentare unten.)

(three.js v 80)

Sehen Sie sich die Geige mit v79 an.

%Vor%

UPDATE 1: Könnte das Problem bei der Anzahl der Werte (rgba, xzyw) liegen, die zwischen allen Teilen meines Programms übereinstimmen? Ich habe rgba-Werte angegeben, wo immer ich nachdenken kann, aber vielleicht habe ich es irgendwo verpasst. Hier ist ein Ausschnitt von meinem Javascript:

%Vor%

UPDATE 2:

Vielleicht hat das Problem damit zu tun, wie die Texel von diesen Texturen gelesen werden? Irgendwie kann es zwischen zwei Texeln lesen, und so mit einer gemittelten Position kommen, die von zwei Federn geteilt wird? Ist das möglich? Wenn ja, wo würde ich es reparieren?

    
gromiczek 14.09.2016, 15:38
quelle

1 Antwort

0

Ich habe nie das Problem mit der Geige in meiner Frage oben entdeckt; Ich fand jedoch schließlich die neuere Version des THREE.FBOUtils-Skripts, das ich oben verwendete - es heißt jetzt THREE.GPUComputationRenderer . Nach der Implementierung funktionierte mein Skript endlich!

Für diejenigen, die sich selbst versuchen, ein ähnliches Problem zu lösen, hier ist die neue und verbesserte Geige Verwenden Sie den GPUComputationRenderer anstelle der alten FBOUtils.

In der Skriptdokumentation finden Sie einen grundlegenden Anwendungsfall von GPUComputationRenderer:

%Vor%     
gromiczek 23.09.2016, 18:24
quelle

Tags und Links